Skip to content

Commit 7a5e3a2

Browse files
AndyH0ngclaude
andcommitted
docs: CLAUDE.md 업데이트
- preprocess 서브커맨드 사용법 및 의존성 설치 안내 추가 - 객관식 answer_typst 허용으로 변경된 내용 반영 (해설 작성 예시 포함) - TableBlock 유효성 검사 제약 조건 문서화 - GraphNode id 제약(빈 문자열 불가) 안내 추가 - 그래프 edge label 렌더링 지원 명시 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent f6acb6e commit 7a5e3a2

1 file changed

Lines changed: 28 additions & 4 deletions

File tree

CLAUDE.md

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,15 @@ TestMagick은 **YAML/JSON 파일**을 입력받아 **문제지(exam.pdf)** 와 *
1414

1515
# 검증만 (PDF 생성 없이 스키마 확인)
1616
./run validate --input data/my_exam.yaml
17+
18+
# PDF 전처리 (LLM 파이프라인용)
19+
./run preprocess --input data/textbook.pdf --out out/prep/
20+
./run preprocess --input data/textbook.pdf --method mixed # 페이지별 수식 감지
21+
./run preprocess --input data/textbook.pdf --method markdown # marker-pdf 변환 (별도 설치 필요)
1722
```
1823

24+
> `preprocess` 의존성: `pip install testmagick[preprocess]` (pymupdf) 또는 `testmagick[markdown]` (pymupdf + marker-pdf)
25+
1926
---
2027

2128
## YAML 최상위 구조
@@ -115,7 +122,7 @@ question_blocks:
115122

116123
### `graph` — 방향 그래프
117124

118-
노드(원)와 엣지(화살표)로 이루어진 방향 그래프를 그립니다.
125+
노드(원)와 엣지(화살표)로 이루어진 방향 그래프를 그립니다. `label`이 있으면 간선 중점에 표시됩니다.
119126

120127
```yaml
121128
question_blocks:
@@ -148,6 +155,7 @@ question_blocks:
148155
label: "5" # 간선 레이블 (선택)
149156
```
150157

158+
- **노드 id**: 빈 문자열 불가, 공백 자동 제거.
151159
- **좌표계**: `x`는 오른쪽, `y`는 **위**가 양수 (수학 좌표계). 노드 간격은 `3`~`4` 권장.
152160
- **이탤릭 라벨** (수학 기호 느낌): `label: "$A$"`. 일반 텍스트: `label: "A"`.
153161
- **bend 방향**: 화살표의 진행 방향 기준.
@@ -161,12 +169,16 @@ question_blocks:
161169
```yaml
162170
question_blocks:
163171
- type: table
164-
headers: ["구분", "2022년", "2023년"] # 선택 (없으면 헤더 행 없음)
172+
headers: ["구분", "2022년", "2023년"] # 선택 (없으면 첫 번째 행이 기준 열 수)
165173
rows:
166174
- ["매출(억원)", "1,200", "1,500"]
167175
- ["영업이익(억원)", "150", "200"]
168176
```
169177

178+
- `headers` 또는 `rows` 중 최소 하나는 있어야 합니다.
179+
- 모든 행의 열 수는 `headers`(또는 첫 번째 행)와 일치해야 합니다.
180+
- 첫 번째 행은 자동으로 회색 배경 + 볼드 처리됩니다.
181+
170182
---
171183

172184
## 객관식 문제 (`type: "mcq"`)
@@ -196,7 +208,19 @@ answer: 2
196208
```
197209

198210
- `choices`와 `choices_typst` 둘 다 쓸 경우 길이가 같아야 합니다.
199-
- 객관식에는 `answer_typst` 사용 불가.
211+
- 선택지 레이블은 ①②③… 원 안의 숫자로 자동 표시됩니다.
212+
- 객관식에도 `answer_typst` 사용 가능 — 선택지 번호(①)는 유지되고 해설을 Typst로 작성할 수 있습니다.
213+
214+
```yaml
215+
# 객관식 + 해설 예시
216+
- id: "Q1"
217+
type: "mcq"
218+
question: "다음 중 참인 것은?"
219+
choices: ["참", "거짓"]
220+
answer: 2
221+
answer_typst: |
222+
거짓이다. 반례: $x = 0$일 때 성립하지 않는다.
223+
```
200224

201225
---
202226

@@ -222,7 +246,7 @@ answer_typst: |
222246

223247
## 소문제 (`subproblems`)
224248

225-
주관식 문제(`type: "short"`)에만 사용 가능합니다. `subproblems`가 있으면 부모 문제에 `answer`/`answer_typst`를 쓰지 않습니다.
249+
주관식 문제(`type: "short"`)에만 사용 가능합니다. `subproblems`가 있으면 부모 문제에 `answer`/`answer_typst`를 쓰지 않습니다. 소문제는 객관식/주관식 모두 가능하며, 객관식 소문제에도 `answer_typst`로 해설을 작성할 수 있습니다.
226250

227251
```yaml
228252
- id: "S1"

0 commit comments

Comments
 (0)