paper-figure은(는) 무엇을 하나요?
별도로 배치된 편집 가능한 요소로 논문 그림을 그리고, 인쇄될 크기로 측정합니다.
원칙
- 이미지 생성 모델을 사용하지 않습니다. 사용자 또는 저자가 모든 요소를 직접 그립니다.
- 해당 도구를 사용할 수 있을 때는 항상 Claude Design 캔버스의 보드로 그림을 제공합니다. 이는 필수입니다. 먼저 보드를 생성하거나 업데이트하여 저자가 모든 요소를 이동, 스타일 변경 및 주석을 달 수 있게 합니다. PNG, PDF 또는 로컬 HTML 파일로만 마무리하지 마십시오. 세션에 캔버스 도구가 없을 때만 디스크에 일반 HTML 보드를 그리고 보고서(
references/drawing-boards.md)에 그 사실을 명시합니다. - PDF와 PNG는 내보내기입니다. 저자가 요청하거나 그림이 최종 확정되었을 때 생성합니다: LaTeX용 라이브 텍스트가 포함된 벡터 PDF와, Word 및 슬라이드용으로 PDF에서 생성된 300dpi PNG입니다.
- 그림 텍스트는 논문 본문에 사용된 정확한 이름을 사용하며, 논문의 언어로 작성합니다.
- 구조는 보존됩니다. 모양과 레이아웃은 변경할 수 있습니다. 묻지 않고 모듈, 연결 또는 경계를 변경할 수 없습니다("구조 원장" 참조).
- 그리기 전에 대상 학회를 선택하십시오. 학회마다 규칙이 다릅니다: Nature는 그림 텍스트를 7pt로 제한하고, AAAI는 최소 9pt를 요구합니다. 저자가 선택하지 않은 경우, 해당 분야의 일반적인 학회를 선택하고 보고서에 그 내용을 명시합니다.
- 품질 기준은 최상위 학회 그림 수준입니다. 먼저 참조 그림을 살펴보고, 후보를 만든 후 저자가 선택하게 합니다. 박스와 화살표만으로 그치지 마십시오.
- "통과" 또는 "겹침 없음"은
scripts/figure_audit.py로 측정하고 직접 렌더링을 확인한 후에만 말합니다. 이는 드로잉 표면의 기본 "확인하지 않음" 설정을 무효화합니다. - 시각적 비평은 참고용입니다. 요소 수를 잘못 세거나 연결을 놓칠 수 있습니다. 구조는 원장과
--compare플래그로만 판단합니다.
워크플로우
- 소스를 읽습니다: 논문 초안, 코드, 저자의 원본 그림. 저자가 "다시 해주세요"라고 말할 때마다 다시 읽습니다.
- 구조 원장을 작성합니다.
- 브리프를 작성하고 학회를 선택합니다(
references/venues.md). - 2–3개의 참조 그림을 열고 스타일 시트를 작성합니다.
- 캔버스에 2–3개의 후보를 그립니다. 작은 조정이 아닌 레이아웃이나 모양 표현 방식이 서로 달라야 합니다.
- 감사, 확인, 비교, 비평합니다. 오류가 0이 될 때까지 수정합니다.
- 비교 시트를 보여줍니다. 저자가 선택합니다.
- 저자가 선택하면 내보내고, 원고에 그림을 배치한 후 해당 페이지를 확인합니다.
구조 원장 (편집 전)
그림은 저자가 설계한 시스템을 보여줍니다. 아래의 모든 항목을 저자의 그림, 논문 및 코드에서 추출하여 표로 만듭니다.
| 종류 | 항목 | 출처 |
|---|---|---|
| 모듈 (박스) | 정확한 이름 | 원본 그림 / 코드 경로 / 논문 섹션 |
| 연결 (화살표) | 송신자 → 수신자 : 데이터 이름 | 해당 데이터를 생성하는 코드 |
| 경계 | 각 시스템, 스킬 또는 도구가 포함하는 것 | 원본 그림 / 코드 |
| 상태 및 자원 | 공유 상태, 예산, 공유 모델, 말뭉치, 학습된 파라미터 | 원본 그림 / 코드 |
| 결정과 루프 | 결정 결과, 피드백 및 재귀 경로 | 정책 함수 / 알고리즘 |
| 입력과 출력 | 사용자 입력, 최종 출력, 입력 및 출력 텐서 | 원본 그림 / 코드 |
다른 사람의 방법을 그릴 때는 원본 논문의 알고리즘과 공식 코드를 기반으로 원장을 작성하고 인용합니다.
- 원장의 어떤 항목도 사라지거나, 이름이 바뀌거나, 경계를 넘어 이동할 수 없습니다. 변경이 필요한 경우(예: 그림이 코드와 일치하지 않는 경우), 편집 전에 저자에게 문의하십시오.
- 모듈이나 화살표를 임의로 만들거나, 단순화를 위해 연결을 삭제하지 마십시오. 의도적인 생략 사항은 캡션이나 보고서에 기록합니다.
- 레이아웃은 변경될 수 있습니다. 흐름 방향과 포함 관계는 변경될 수 없습니다.
- 세부 그림은 개요 그림을 분할합니다. 이름, 색상 및 경계는 개요 그림과 일치해야 합니다.
- 모든 화살표를 코드와 대조하십시오: 화살표는 해당 데이터를 실제로 생성하는 모듈에서 나가야 합니다.
- 편집 후 원장을 한 줄씩 확인하고
python3 scripts/figure_audit.py NEW --venue icml --compare ORIGINAL을 실행합니다. 스크립트는 레이블이 없는 화살표를 볼 수 없습니다. 수동으로 원장과 대조하십시오. - 보고서를 "구조 변경: 없음" 또는 변경 목록과 저자의 승인 여부로 시작합니다.
저자와 협업하기
- 저자의 원본 그림이 기준선입니다. 제거하고 그 위에 정렬합니다. 구조나 스타일을 완전히 대체하지 마십시오.
- 원본을 덮어쓰지 마십시오. 각 새 버전을 옆에 배치합니다(
Fig2_v2). 저자가 확인합니다. - 저자가 보드를 수동으로 편집한 경우, 최신 파일을 다시 읽고 그 파일을 작업합니다.
- 한 번에 한 종류의 요소씩 추가합니다. 스테이지 패널, 알약 및 출력 박스를 한 번에 추가하면 그림이 너무 복잡해집니다.
- 인접한 스테이지는 실제 이름이 있는 점선 박스로 유지합니다. 삭제하거나 하나의 화살표 또는 회색 텍스트로 축소하지 마십시오.
- 그림별로 변경된 사항만 보고합니다. 논문이나 코드와 불일치를 발견하면 그림을 편집하기 전에 알립니다.
브리프, 참조 그림, 스타일 시트
브리프 (그림당 하나)
역할: 개요(구조 + 절차) / 스테이지 세부 / 아키텍처 블록
그림 유형: A 시스템 또는 에이전트 파이프라인 / B 모델 또는 아키텍처
학회: 배치 폭과 텍스트 px 설정(references/venues.md)
독자 핵심: 한 줄
유지할 사실: 구조 원장
제외할 내용: 결과 숫자, 본문에 속하는 문장, 모델 이름 같은 설정
참조 그림 (2–3개)
- 선호 순서: 해당 방법의 원본 논문 또는 공식 저장소; 동일 학회의 동일 그림 유형을 가진 최근 논문; 저자의 이전 그림.
- 각각을 열고 다음을 기록: 모양 표현, 각 색상의 의미, 글꼴 및 변수 표기법, 레이아웃 골격, 텍스트 양, 그리고 모방하지 말아야 할 것.
- 관례만 차용합니다. 참조 그림을 다시 그리거나 팔레트와 구성을 재현하지 마십시오.
스타일 시트 (논문당 하나)
- 논문의 모든 그림은 하나의 시각적 어휘를 사용합니다: 글꼴, 텍스트 px, 색상 및 그 의미, 모양, 선 및 테두리 너비, 모서리 반경, 화살촉.
scripts/dc_board.py의STYLE딕셔너리가 스타일 시트입니다. 거기서만 변경하고, 요소별로 변경하지 마십시오.
구성 규칙
- 박스는 함수 이름만 담습니다. 설명 문장은 본문 텍스트에 넣습니다.
- 화살표는 데이터 이름 레이블을 전달합니다. 데이터에 번호를 매기지 마십시오.
- A/B/C 또는 "To B / From A" 같은 자리 표시자 이름을 사용하지 마십시오. 실제 모듈 이름을 사용합니다.
- 경계는 실제로 그 작업을 수행하는 부분만 둘러쌉니다.
- 박스 텍스트는 키워드입니다: 문장 금지, 15단어 초과 금지, 본문 텍스트 붙여넣기 금지, 방정식 목록 금지. 짧은 데이터 예제는 예외입니다.
- 스테이지에 단계 번호 배지를 사용하지 마십시오. 그림 내부에 제목을 넣지 마십시오. 제목은 캡션입니다.
- 개요는 구조와 절차를 함께 보여줍니다: 입력 → 과정 → 출력이 왼쪽에서 오른쪽으로 몇 초 안에 읽히고, 피드백 루프는 점선이며, 출력이 명확하게 보입니다.
- 모든 세부 그림을 통해 하나의 작업 예제를 실행하고, 박스 내부에 작은 칩으로 표시합니다.
- 개요와 세부를 하나의 그림(패널 a와 b, 세로로 쌓거나 매크로-마이크로 확대 선 사용)으로 병합하는 것을 고려합니다. 둘 다 후보로 만듭니다.
- 규칙이 충돌할 경우 다음 순서로 결정합니다: 관계와 방향이 코드 및 논문과 일치 → 흐름이 몇 초 안에 읽힘 → 인쇄 크기에서 읽기 쉬움 → 정렬 → 외관.
모양 표현, 글꼴, 색상 및 선: references/style.md. 표현 A(시스템 파이프라인: 아이콘 카드, 칩, 패널) 또는 B(아키텍처: 모양이 유형을 나타냄)를 선택하고 한 논문에서 혼합하지 마십시오.
크기
인쇄 텍스트(pt) = 텍스트 px × 배치 폭(pt) ÷ 보드 폭(px). 동일한 보드가 다른 학회에서 다른 크기로 인쇄되므로 학회가 변경될 때마다 다시 측정합니다. 사전 설정 및 px 크기: references/venues.md.
- 그림 내에서 텍스트 크기는 거의 균일하게 유지합니다. 일부 텍스트를 맞추기 위해 줄이지 마십시오: 텍스트를 캡션으로 옮기고, 박스나 보드를 확대하며, 줄을 끊거나 그림을 분할합니다.
- 텍스트는 자신의 박스를 벗어나거나 테두리에서 6px 이내에 위치해서는 안 됩니다.
- 한 행에 5개 이상의 박스가 있으면 폭이 부족합니다: 제목을 2-3줄로 나누고, 그 다음 두 행으로 이동합니다.
- 넓은 그림은 전체 텍스트 폭(
figure*)에 배치합니다. 한 단에서는 텍스트 크기가 반으로 줄어듭니다. - 여러 패널이 있는 경우, 행을 정확하게 정렬하거나 7px 이상 간격을 둡니다.
감사 루프
설치: pip install playwright numpy pillow && python3 -m playwright install chromium
(poppler-utils는 PDF 검사를 활성화합니다).
python3 scripts/figure_audit.py project/Fig2.dc.html --venue icml --png fig2.png # 측정 + 렌더링
python3 scripts/figure_audit.py project/Fig2.dc.html --venue nature --column # 한 단 그림
python3 scripts/figure_audit.py project/Fig2.dc.html --placed-mm 165 --min-pt 8 # 사전 설정이 없는 학회
python3 scripts/figure_audit.py project/Fig2.dc.html --venue icml --cvd fig2 # 회색 + 색맹
python3 scripts/figure_audit.py project/Fig2_v2.dc.html --venue icml --compare project/Fig2.dc.html # 레이블 유지?
- ERROR가 0이 될 때까지 수정: 텍스트가 한도 미만 또는 초과, 박스 외부의 텍스트, 겹치는 텍스트, 캔버스 밖의 텍스트, 원본에서 누락된 레이블. 각 WARN(테두리에 닿은 텍스트, 선을 가로지르는 텍스트, 대체 글리프, 회색 위의 텍스트, 최소 미만의 선, 근접 정렬)에 대해 렌더링을 확대하여 결정합니다.
- 배치된 크기의 렌더링과 세 개의
--cvd이미지를 확인합니다. - 원장, 코드 및 논문과 화살표 및 레이블을 다시 확인합니다.
- 비평 테이블로 점수를 매기고 참조 그림과 비교합니다.
- 각 라운드마다 이전 파일을 유지하고 변경된 사항만 기록합니다.
수정 순서(재작업 방지): 캔버스 및 여백 → 큰 영역 및 쌓기 순서 → 모양 크기 → 채우기 및 테두리 → 커넥터 끝점 → 텍스트 → 장식.
완료는 다음 세 가지를 모두 의미합니다: 감사 통과, 배치된 크기 확인, 비평이 통과 기준을 충족. 감사 통과만으로는 충분하지 않습니다. 5라운드 후에도 문제가 남아 있으면 레이아웃 자체가 잘못된 것입니다: 저자에게 알리고 함께 결정합니다.
후보 및 비평
동일한 구조와 다른 레이아웃 또는 표현 방식(패널 a/b 대 확대 선, 왼쪽에서 오른쪽 대 아래에서 위, 표현 A 대 B)으로 2-3개의 보드를 만듭니다. 후보와 참조 그림을 하나의 이미지로 쌓아서 보여줍니다:
from PIL import Image
ims = [Image.open(p).convert("RGB") for p in ["vA.png", "vB.png", "ref.png"]]
W = 1584; ims = [im.resize((W, round(im.size[1] * W / im.size[0]))) for im in ims]
sheet = Image.new("RGB", (W, sum(im.size[1] + 30 for im in ims)), "white"); y = 0
for im in ims: sheet.paste(im, (0, y)); y += im.size[1] + 30
sheet.save("compare_sheet.png")
각 차원에 0–2.5점을 부여합니다(총 10점). 거부권이 행사되면 해당 차원은 0점이 됩니다.
| 차원 | 의미 | 거부권 |
|---|---|---|
| 충실성 | 캡션 범위 내에서 방법을 보여줌; 합리적인 단순화는 괜찮음 | 발명된 모듈 또는 연결, 역방향 흐름, 필수 연결 누락, 범위 외, 깨진 텍스트 또는 가짜 수식 |
| 간결성 | 신호 대 잡음비가 높은 시각적 요약 | 박스 내 문장(15단어 초과), 본문 텍스트 붙여넣기, 방정식 목록 |
| 가독성 | 한눈에 보이는 흐름, 읽기 쉬운 텍스트 | 그림 내부의 제목 또는 캡션, 중복 레이블, 겹침, 매우 작거나 고르지 않은 텍스트, 엉킨 흐름 |
| 미학 | 최상위 학회 수준의 마감 | 그리드 아티팩트, 깨진 모양, 네온 또는 충돌하는 색상, 클립 아트, 혼합 글꼴, 잘못된 정렬, 검은 배경 |
통과 점수: 저널 8.5, 학회 8.0, 학위 논문 8.0, 포스터 7.0, 슬라이드 6.5. 각 차원에 대해 "참조보다 나음 / 동등 / 나쁨"을 한 줄의 근거와 함께 작성합니다.
내보내기
python3 scripts/dc_export.py <root> Fig2.dc.html --out paperfigs --venue icml
Fig2.pdf(벡터, 보드 크기)와Fig2.png(배치 폭에서 300dpi)를 작성합니다.- PDF 검사는 통과해야 합니다: 모든 글꼴이 포함되고, Type 3 글꼴이 없으며, 래스터 이미지가 없어야 합니다. 실패할 경우, 먼저 글꼴 목록을 수정합니다(
references/style.md). - LaTeX:
\includegraphics[width=\textwidth]{figures/fig2.pdf}를figure*내부에 사용합니다.\resizebox나scale=로 줄이지 마십시오. 한 단 그림은figure와\columnwidth를 사용합니다. - Word 및 슬라이드: 그림 폭으로 PNG를 삽입한 후, 해당 페이지에서 겹침 및 페이지 나누기를 확인합니다.
- 원고에서 교체하기 전에 이전 그림을 백업하고, 저자가 결정한 후에만 교체합니다.
- 캡션은 학회 템플릿을 따릅니다. 캡션에 예제 기호가 의미하는 바, 의도적으로 생략된 내용, 예제가 예시용임을 명시합니다.
절대 금지
- 저자의 확인 없이 모듈, 연결 또는 경계를 추가, 제거 또는 이름을 변경합니다.
- 이미지 생성 모델을 사용하거나, 비트맵만 있는 최종 그림을 제공하거나, 참조 그림을 복사합니다.
- 캔버스 도구를 사용할 수 있을 때 PNG, PDF 또는 로컬 파일로만 마무리합니다.
- 방법 그림에 결과 숫자를 넣거나, 한 논문의 그림 간에 색상 규칙, 텍스트 크기 또는 표현 방식을 변경합니다.
- 회색 위에 텍스트를 배치하거나, 분수 px CSS 테두리를 사용하거나, Type 3 글꼴이 있는 PDF를 제공합니다.
- 저자의 원본을 덮어쓰거나, 허락 없이 원고의 그림을 교체하거나, 저자를 대신하여 후보를 선택합니다.
- 측정하지 않고 "읽을 수 있음" 또는 "겹침 없음"을 주장합니다.
파일
| 파일 | 용도 |
|---|---|
scripts/dc_board.py | 짧은 Python 코드로 보드 구축: 카드, 아이콘 카드, 사다리꼴, 연산 원, 텐서, 패널, 화살표 |
scripts/figure_audit.py | 인쇄 크기에서 그림 측정; --venue, --compare, --cvd |
scripts/dc_export.py | 보드 → 벡터 PDF + 300dpi PNG, PDF 글꼴 및 래스터 검사 포함 |
references/venues.md | 학회 사전 설정: 폭, 명시된 규칙, 가장 작은 텍스트 px |
references/style.md | 모양 표현 A와 B, 글꼴, 색상, 선, 밀도 |
references/drawing-boards.md | Claude Design 캔버스 또는 일반 HTML 보드로 그리기; dc_board.py 호출; TikZ 참고 사항 |
references/credits.md | 차용한 절차의 출처 및 라이선스 |
examples/ | 감사를 통과하는 실행 가능한 그림: react-agent(표현 A), transformer-block(표현 B), rag-pipeline(최소) |