> ## Documentation Index
> Fetch the complete documentation index at: https://make.edicus.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 어노테이션

> 레이어와 개체 이름 뒤 @ 문법으로 편집 제한, 표시, 렌더링, 후가공을 정하는 키 전체

어노테이션은 레이어 이름이나 개체 이름의 `@` 뒤에 붙이는 설정입니다. 레이어에 달면 그 레이어의 모든 개체에, 개체에 달면 그 개체 하나에 적용됩니다.

## 배우는 것

* 어노테이션 문법과 적용 우선순위
* 대상별로 쓸 수 있는 키 전체와 기본값
* 상품 설정의 편집 제한과의 관계

## 문법

```text theme={null}
Cell@movable=false,unlockable=false,deletable=false
```

* `@` 뒤에 `키=값`을 쉼표로 잇습니다. `=` 대신 `:`를 써도 같습니다.
* 영문 입력 상태로 칩니다. 한글 입력 상태의 전각 `＠`, `＝`, `，`는 기호로 읽지 않습니다. 전각 `＠`면 이름 전체가 레이어 종류가 되어 엉뚱한 개체가 되고, 전각 `＝`나 `，`면 그 설정이 조용히 무시됩니다.
* 레이어 이름과 개체 이름의 앞뒤에는 공백을 두지 않습니다. `Text `처럼 끝에 공백이 있으면 다른 이름으로 읽습니다. 증상은 [흔한 실수와 증상](/docs/templates/layers#흔한-실수와-증상)에 있습니다.
* `@` 뒤 키와 값 사이의 공백은 무시합니다. 다만 익스포터는 `render=false`, `path=true`, `svg=true`를 글자 그대로 찾으므로 이 셋은 띄어쓰기 없이 씁니다.
* 따옴표는 쓰지 않습니다. 따옴표도 값의 일부가 됩니다.
* 값에는 쉼표, `=`, `:`를 넣을 수 없습니다. `qrcode`만 예외로 첫 `=` 뒤 전체를 값으로 읽습니다.
* `@`는 한 번만 씁니다. 두 번째 `@` 뒤는 무시합니다.
* 값을 `{ }`로 감싸도 됩니다. `Guide@{bottom=true}`는 `Guide@bottom=true`와 같습니다.
* 키 이름과 켜는 값은 이 문서에 적힌 대로 소문자로 쓰기를 권합니다. 대문자를 받는 키와 받지 않는 키가 섞여 있기 때문입니다.

| 키 | 대소문자 |
| - | - |
| `movable`, `unlockable`, `deletable`, `selectable`, `focusible`, `hidden`, `master`, `video`, `chain`, `blend_chain` | 키 이름과 값 모두 구분하지 않습니다. `Movable=FALSE`도 됩니다. `true`가 아닌 값은 모두 `false`로 읽습니다 |
| `fit`, `qrcode`, `anchor`, `var_id`, `var_title`, `title`, `stitle` | 키 이름은 구분하지 않고 값은 구분합니다. `fit=keep`, `anchor=left`처럼 소문자로 씁니다 |
| `placeholder`, 그리고 나머지 표시·렌더링·도형·후가공 키(`render`, `clip`, `noclip`, `tn`, `spine`, `fill` 등) | 키 이름과 값 모두 구분합니다. 소문자 `true`만 켜짐으로 읽습니다. `bottom`은 키 이름만 구분하고 값은 보지 않습니다 |

## 적용 우선순위

편집 제한 키는 아래 순서로 먼저 찾은 값을 씁니다.

1. 개체 이름의 어노테이션
2. 레이어 이름의 어노테이션
3. 익스포트 아이템에 정한 종류별 기본값(사진 칸, 글자, 스티커, 도형. 모두 허용이 기본)

```text theme={null}
레이어: Sticker@movable=false
개체:   logo@movable=true
```

이 예에서는 레이어의 스티커가 모두 고정되고 `logo`만 움직일 수 있습니다.

개체 이름에 달 수 있는 키는 두 부류입니다.

* 편집 제한 키와 개체 속성 키: `movable`, `unlockable`, `deletable`, `selectable`, `focusible`, `master`, `fit`, `chain`, `video`, `var_id`, `var_title`, `placeholder`, `blend_chain`, `qrcode`, `anchor`
* 표시와 렌더링 키 가운데 `render`, `hidden`, `snapshot`, `inject`

그 밖의 키(`bottom`, `clip`, `mix_blend`, `path`, `redirect` 등)는 레이어 이름에만 답니다. 개체 이름에 달면 무시됩니다.

<Warning>
  개체 이름에 `<그룹>`처럼 꺾쇠를 직접 쓰지 않습니다. 레이어 패널에 꺾쇠로 보이는 InDesign 기본 이름은 이름이 없는 것으로 읽어 문제가 없지만, 직접 입력한 꺾쇠는 그림을 SVG로 저장할 때 파일을 깨뜨립니다.
</Warning>

## 편집 제한

`Cell`, `Text`, `Sticker`, `Path`에 씁니다. `Guide`와 후가공 레이어는 항상 고정되고 선택되지 않습니다.

| 키 | 붙일 수 있는 곳 | 값 | 기본값 | 동작 |
| - | - | - | - | - |
| `movable` | 레이어, 개체 | `true`, `false` | `true` | `false`면 끌어서 옮기지 못하고 크기와 회전 손잡이도 사라집니다. 사진 교체, 글자 수정은 됩니다 |
| `unlockable` | 레이어, 개체 | `true`, `false` | `true` | `false`면 도구 막대의 자물쇠 버튼으로 이동 잠금을 풀 수 없습니다. 이동을 완전히 막으려면 `movable=false`와 함께 씁니다 |
| `deletable` | 레이어, 개체 | `true`, `false` | `true` | `false`면 개체를 지울 수 없습니다. 사진 칸은 칸 안의 사진만 지울 수 있습니다 |
| `selectable` | 레이어, 개체 | `true`, `false` | `true` | `false`면 선택되지 않습니다. 사진 칸에는 효과가 없습니다 |
| `focusible` | 레이어, 개체 (`Text`) | `true`, `false` | `true` | `false`면 글상자를 선택해도 글자 입력 상태로 들어가지 않습니다 |
| `hidden` | 레이어, 개체 | `true`, `false` | `false` | `true`면 편집기에서 보이지 않고 렌더링에서도 빠집니다. `render=true`를 함께 쓰면 인쇄에는 들어갑니다 |
| `master` | 레이어, 개체 | `true` | 없음 | 상위 페이지(마스터) 개체로 표시합니다. 편집기에서 하는 편집에는 영향이 없습니다 |

사진 칸의 이동과 잠금 해제를 막는 상품 단위 설정도 있습니다. 템플릿 개체 하나하나는 어노테이션으로, 상품 전체는 [편집기 동작](/docs/products/editor-behavior)으로 정합니다. 상품 설정의 `force-movable-cell`을 켜면 사진 칸에 건 이동, 잠금 해제, 삭제 제한이 무시됩니다.

## 표시와 렌더링

PDF 렌더링에는 기존 방식과 신규 방식(PDF2)이 있고 결과가 일부 다릅니다. 어느 방식을 쓰는지는 렌더링 설정이 정합니다. 아래 표에서 PDF2라고 적은 동작은 신규 방식에만 해당합니다.

| 키 | 붙일 수 있는 곳 | 값 | 기본값 | 동작 |
| - | - | - | - | - |
| `render` | 레이어, 개체 | `true`, `false` | 없음 | `true`면 숨긴 개체, `Guide`, `Guide@bottom=true`도 인쇄에 넣습니다. `false`면 인쇄에서 뺍니다. `false`인 `Sticker`와 `Background`는 익스포터가 낮은 해상도로 캡처합니다 |
| `snapshot` | 레이어, 개체 | `false` | 없음 | 저장할 때 만드는 썸네일과 미리보기에서 그 개체를 뺍니다 |
| `tn` | 레이어 (`Guide`) | `true` | 없음 | 편집기의 페이지 목록(스토리보드) 썸네일에는 가이드가 보이지 않는데, 이 키가 있으면 보입니다. `render=true`도 같은 효과가 있습니다 |
| `preview` | 레이어 (`Guide`) | `true` | 없음 | 미리보기 화면에서도 그 가이드를 보여 줍니다 |
| `bottom` | 레이어 (`Guide`) | `true` | 없음 | 가이드를 바탕보다 아래에 둡니다. 값을 보지 않고 키가 있으면 적용되므로 끌 때는 키를 지웁니다 |
| `clip` | 레이어 (`Background`, `Guide`, 후가공) | `true` | 없음 | 편집기에서 `ClipPath` 영역 안으로 자릅니다. `Guide`와 후가공은 `ClipPath`가 없으면 `PageMask`로 자릅니다. `Background`는 `PageMask`가 있으면 이 키 없이도 잘립니다 |
| `noclip` | 레이어 | `true` | 없음 | 편집기에서 그 개체가 `ClipPath`에 잘리지 않게 합니다. 렌더링의 클리핑은 그대로입니다 |
| `focus` | 레이어 (`Guide`) | `true`, `false` | 없음 | 상품의 `guide-control`이 `conditional`일 때만 동작합니다. `true`는 무언가 선택했을 때만, `false`는 아무것도 선택하지 않았을 때만 보입니다 |
| `mix_blend` | 레이어 (`Sticker`, `Path`, `Guide`) | `multiply`, `screen`, `overlay` 등 혼합 모드 이름(InDesign **효과** 패널의 곱하기, 스크린, 오버레이처럼 겹친 색을 섞는 방식을 웹 브라우저 표기로 쓴 값) | 없음 | 편집기에서 아래 개체와 이 모드로 섞어 보입니다. 렌더링에는 적용되지 않으며, 저장 썸네일에서는 빠집니다 |
| `preview_blend` | 레이어 | `true` | 없음 | `mix_blend`가 있는 개체를 썸네일과 미리보기에 곱하기로 섞어 넣습니다 |
| `display` | 레이어 (`Path`) | `false` | 없음 | 편집기에서 도형 모양을 그리지 않고 도형 속성 도구 막대를 숨깁니다. PDF2 렌더링에서도 그리지 않습니다 |

## 사진 칸

| 키 | 값 | 동작 |
| - | - | - |
| `fit` | `keep` | 사진을 넣으면 칸이 원래 영역 안에서 사진 비율에 맞게 바뀝니다. 다른 값은 동작이 없습니다 |
| `chain` | `true` | 같은 페이지에서 이름이 같은 `chain` 사진 칸끼리 같은 사진을 넣고 지웁니다 |
| `video` | `true` | 사진 칸 도구 막대에 동영상 버튼을 보여 줍니다 |
| `var_id`, `var_title` | 문자열 | 변수 id와 입력 제목입니다. [변수와 데이터 병합](/docs/templates/variables)을 보세요 |

## 글자

| 키 | 값 | 동작 |
| - | - | - |
| `placeholder` | `true` | InDesign에 쓴 글자를 안내 문구로 옮기고 실제 내용은 비웁니다. 안내 문구는 편집기에서 글상자가 비어 있을 때만 보이고 인쇄되지 않습니다 |
| `div`, `lang` | 디비전 코드, 언어 코드 | 그 디비전과 언어의 폰트 그룹으로 변환합니다. 편집기를 다른 `div`나 `lang`으로 띄우면 이 레이어의 개체가 빠집니다 |
| `use` | `basefont` | 기본 폰트 그룹으로 변환합니다 |
| `title` | 문자열 | `#` 이름을 붙인 변수 글상자의 입력 칸 제목입니다. 예: `#name@title=이름`. [변수와 데이터 병합](/docs/templates/variables)을 보세요 |
| `stitle` | `/`로 나눈 문자열 | `#` 이름을 붙인 데이터 병합 글상자에서 필드마다 붙일 입력 칸 제목입니다. 예: `#field1@stitle=이름/직함`. [변수와 데이터 병합](/docs/templates/variables)을 보세요 |
| `convert` | `false` | 스티컷 상품에서 글상자를 칼선 스티커로 바꾸는 메뉴를 막습니다 |

폰트와 문단 규칙은 [텍스트 프레임과 폰트](/docs/templates/text)에 있습니다.

## 스티커

| 키 | 값 | 동작 |
| - | - | - |
| `blend` | `multiply` 등 합성 모드 | 스티커 도구 막대에 색 선택을 보여 주고, 고른 색을 이 모드로 그림에 입힙니다 |
| `blend_chain` | `true` | 이름이 같은 스티커끼리 `blend` 색을 함께 바꿉니다 |
| `qrcode` | URL | 스티커에 QR 코드 표시와 초기 URL을 붙입니다. 도구 막대의 일부 메뉴가 숨겨지고, TnView(편집 화면 없이 썸네일만 보여 주는 경량 뷰어)에서 QR 코드 변수로 다룹니다 |
| `svg` | `true` | 벡터 그림의 PNG 캡처를 건너뛰고 SVG만 만듭니다 |
| `overprint` | 아무 값 | PDF 렌더링에서 그 스티커에 오버프린트를 겁니다 |

## 도형

`Path` 레이어와 `path` 키를 단 `Guide`, 후가공 레이어에 씁니다.

| 키 | 값 | 동작 |
| - | - | - |
| `path` | `true`, `path` | 그림 대신 InDesign 패스 그대로 벡터 도형으로 변환합니다 |
| `path` | `rect`, `round/2`, `corner/2`, `ellipse`, `oval`, `label/3` | 패스 대신 지정한 모양을 씁니다. 숫자는 mm 단위 모서리 반경, `label`은 안쪽 여백입니다 |
| `stroke_style` | `dotted`, `dashed`, `dashed/6/4` | 선을 점선이나 파선으로 그립니다. `/` 뒤 숫자는 선과 간격 길이입니다 |
| `anchor` | `left` | 크기 손잡이를 오른쪽 가운데 하나만 남깁니다 |
| `sticut` | `path` 값과 같음 | 스티컷 상품에서 이 도형의 칼선 모양입니다 |
| `spine` | `true` | 책 표지에서 책등 개체로 표시합니다. `fill=true`와 함께 쓰면 책등 채우기 개체가 됩니다. 아래 [책등 채우기](#책등-채우기)를 보세요 |
| `no_overfill` | `true` | 책등 채우기 도형을 경계 밖으로 0.5픽셀 늘려 그리는 편집기 화면 보정을 끕니다 |

`PageMask`, `ClipPath`, `HidePath` 레이어에도 `path`와 `padding`(mm)을 쓸 수 있습니다. `ClipPath@path=rect,padding=3`은 페이지 안쪽 3mm 사각형으로 자릅니다.

## 같은 이름, 다른 뜻

`fill`과 `stroke`는 붙이는 레이어에 따라 뜻이 다릅니다.

| 키 | 붙일 레이어 | 값 | 동작 |
| - | - | - | - |
| `fill` | `Text` | `black`, `spot/색이름` | PDF로 렌더링할 때 글자 채움 색을 먹 100%나 지정한 별색으로 바꿉니다 |
| `stroke` | `Text` | `black`, `spot/색이름` | PDF로 렌더링할 때 글자 선 색을 같은 방식으로 바꿉니다 |
| `fill` | `Path` | `true` | `spine=true`와 함께 쓰면 그 레이어의 도형이 책등 폭을 가득 채웁니다. 아래 [책등 채우기](#책등-채우기)를 보세요 |
| `stroke` | `Path` | `false` | 도형 도구 막대의 선 설정을 숨깁니다 |

### 책등 채우기

책 표지의 책등 채우기 개체는 두 방법으로 만듭니다. 개체 이름을 정확히 `fill`로 지으면 `Sticker`와 `Path` 모두, 개체 중심이 책등 폭 안에 있고 폭이 책등 폭 이하일 때만 채우기 개체가 됩니다. `fill@movable=false`처럼 뒤에 무언가 붙이면 인식하지 않습니다. 레이어 이름에 `Path@spine=true,fill=true`를 쓰면 위치와 폭 조건 없이 그 레이어의 도형이 모두 채우기 개체가 됩니다. `fill=true`는 개체 이름에서는 읽지 않고, `spine=true` 없이 쓰면 효과가 없습니다. 편집기에서 채우기 개체는 책등 폭이 바뀌면 그 폭으로 늘어나 가운데에 놓이고, 책등이 얇아도 숨겨지지 않습니다.

```text theme={null}
레이어: Path@spine=true,fill=true    ← 위치와 폭 조건 없음
개체:   fill                         ← Sticker, Path에서 위치와 폭 조건을 만족할 때만
```

## 후가공

| 키 | 붙일 수 있는 곳 | 값 | 동작 |
| - | - | - | - |
| `redirect` | 레이어 | 후가공 판 이름 | 일반 개체를 인쇄 이미지 대신 그 판으로 보냅니다. 예: `Sticker@redirect=Foil` |
| `clone` | 레이어 | 후가공 판 이름 | 인쇄 이미지에 그대로 두고, 같은 모양을 먹색으로 그 판에도 하나 더 넣습니다 |
| `preclip` | 레이어 (`White`) | `true` | PDF2 렌더링에서 화이트를 `ClipPath`로 자르지 않고 그린 그대로 넣습니다. 없으면 인쇄 이미지처럼 `ClipPath` 안으로 잘립니다 |
| `overprint` | 레이어 (`White` 등 스티커) | 아무 값 | PDF에서 오버프린트를 겁니다 |
| `foil` | 레이어 | 팔레트의 박 이름 | 편집기에서 그 박 색으로 미리 보여 줍니다 |

템플릿에 화이트를 직접 그리는 예입니다. 편집기에서는 숨기고 인쇄 판에만 넣습니다.

```text theme={null}
White@hidden=true,render=true,overprint=true
```

PDF2 렌더링에서 페이지에 `White` 판이 있으면 그 페이지는 자동 화이트를 만들지 않고 템플릿의 화이트를 씁니다. 자동 화이트는 [화이트 레이어](/docs/products/white-layer)를 보세요.

## 상품 유형 전용

| 키 | 값 | 동작 |
| - | - | - |
| `pinned` | `top`, `bottom` | 개체를 항상 맨 위나 맨 아래에 둡니다. 순서를 바꾸거나 지울 수 없습니다 |
| `sizable` | `false` | 크기 손잡이를 숨기고 정렬 크기 맞춤에서 뺍니다 |
| `rotate` | `false` | 회전 손잡이를 숨기고 대칭과 90도 회전을 막습니다 |
| `hit_margin` | `false` | 스티컷 상품에서 이 도형의 재단 여백 충돌 검사를 끕니다 |
| `sizing` | `main`, `sub`, `sub2`, `main2` | 사용자가 크기를 고르는 상품에서 크기 기준 가이드입니다. `true`는 `main`과 같습니다 |
| `sizing_fit` | `fill-to-page`, `fit-to-page` | 크기를 바꿀 때 이 개체를 페이지에 채우거나 맞춥니다 |
| `define` | `true` | 정의 문서(`DocType=define`)의 `Guide`나 후가공 레이어 **이름**에 붙입니다. 그 레이어 안 개체의 이름이 공급할 그림의 이름이 됩니다 |
| `inject` | 이름 | 받는 쪽 템플릿의 개체에 붙입니다. 레이어 이름과 개체 이름 모두 됩니다. 정의 문서에서 개체 이름이 같은 그림으로 바꿔 넣습니다 |
| `fix_bg` | `false` | 상품의 `fix-bg-value`가 바탕을 바꾸지 못하게 합니다 |
| `render_bound` | `true` | `Guide` 도형에 씁니다. 렌더 영역을 바꾸는 명령을 받으면 이 도형을 새 렌더 영역 테두리로 다시 그립니다 |

`calType`은 달력 구분자에서 변환기가 자동으로 넣는 값이라 직접 쓰지 않습니다.

## 됐는지 확인

<Check>
  **Demo**에서 이동, 잠금 해제, 삭제를 하나씩 시도해 막아야 할 것만 막히면 편집 제한이 맞습니다. 표시와 렌더링 키는 저장 썸네일과 [테스트 주문과 렌더링](/docs/templates/test-render)의 PDF에서 따로 확인합니다.
</Check>

## 다음 단계

<Columns cols={2}>
  <Card title="예약 개체 이름과 페이지 영역" icon="tag" href="/docs/templates/reserved-names">
    개체 이름으로 동작이 정해지는 `Image`, `none`, `PageInfo` 개체입니다.
  </Card>

  <Card title="편집기 동작" icon="lock" href="/docs/products/editor-behavior">
    상품 전체에 거는 잠금과 사진 칸 설정입니다.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.