Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013TQnRZruUBDaE8iFeipBr5
13 KiB
Executable File
13 KiB
Executable File
CLAUDE.md
이 저장소는 사용자의 Logseq 루트 그래프다. 학습 노트(전공공부·코딩·영어)를 정리하며, logseq-anki-sync 플러그인으로 Anki와 연동되어 있다.
작업 흐름 (중요)
한 단원을 다음 사이클로 정리한다:
- 사용자 선행 학습 — 사용자가 그 단원을 먼저 혼자 공부한다 (PDF 원자료 기준).
- 사용자 1차 하이라이트 — 공부한 내용을 바탕으로 사용자가 Logseq에서 그 단원 PDF에 하이라이트한다. 영역(area) 하이라이트와 텍스트 하이라이트가 섞여 있을 수 있다. 본문 핵심 부분과 함께, 풀어볼 가치가 있다고 판단한 연습문제에도 하이라이트한다 (2장부터 적용).
- Claude 정리 — 책 내용과 사용자의 하이라이트를 바탕으로 단원 페이지에 정리를 작성한다. 사용자가 만든 하이라이트는 종류별 형식으로 정리 본문의 해당 위치에 포함한다 — 영역 하이라이트는 링크 + 추출 이미지, 텍스트 하이라이트는
((uuid))참조 + 정리 비중 반영 (아래 「PDF 하이라이트·이미지 활용」 참고). 하이라이트된 연습문제는 절별 「✏️ 연습문제 풀이」에 포함하고 해답집(solution PDF)을 참고해 해설을 단다. 문제가 그림·도표를 참조하면 그 이미지를 PDF에서 캡처(추출)해 문제 블록에 함께 임베드한다 (2장부터 적용, 파일명·추출 방법은 아래 「PDF 이미지 추출·임베드」 규칙을 따름). - 추가 하이라이트 제안 — 정리하면서 Claude 판단에 원문 링크가 더 필요한 부분이 있으면, 정리 완료 보고에 하이라이트 요청 목록(쪽 번호 + 부분)을 담아 제안한다. 사용자가 고른 것 외에 추가로 추천할 연습문제가 있으면 "x.y절 문제 n번 — 추천 이유" 형식으로 이 목록에 함께 담는다.
- 사용자 2차 하이라이트 → Claude 다듬기 — 사용자가 제안을 (자기 판단으로 취사선택하여) 하이라이트하고 알려주면, Claude가 hls 페이지에서 새 uuid를 읽어 참조를 채워 정리를 다듬는다.
- 사용자 마무리 — 사용자가 직접 Anki 카드화하고 자기 방식으로 세부 수정하여 그 단원 정리를 마무리한다.
→ 따라서 Claude는 카드 문법(#card, {{cloze ...}}, {{c1 ...}}, extra::, #+BEGIN_EXTRA)을 새로 추가하지 않는다. 일반 정리 텍스트만 작성한다. 기존에 있는 카드 문법과 id:: 속성은 절대 수정·삭제·복제하지 않는다.
디렉토리 구조
pages/— 모든 노트. Logseq 특성상 하위 폴더 없이 평면 구조.journals/— 저널 (현재 비어 있음).assets/— 이미지·PDF. 페이지에서../assets/파일명상대경로로 참조.logseq/— Logseq 설정 (config.edn,custom.css,bak/). 건드리지 않는다.pages/hls__*.md— PDF 하이라이트용 자동 생성 페이지. 직접 수정하지 않는다.
페이지 계층 (허브 구조)
📋 Index Page
├── 🔤 영어공부 → 영어기초강의(성정혜), 토익 오답노트류, 토익팁, 부록
├── 👩🏻💻코딩 지식_팁 정리 → 알고리즘, 자료구조, 언어별 팁(Python, Java 등)
└── 📚전공공부 → 스트랭 선형대수학 6판 → 1장 백터와 행렬, 2장 선형방정식 풀기
- 허브 페이지는
- [[하위 페이지]]링크 목록만 담는다. - 새 과목/단원 페이지를 만들면 상위 허브 페이지에 링크를 추가한다.
Logseq 문법 규칙
- 모든 내용은 불릿(
-)으로 시작하는 outline 구조. 들여쓰기는 탭 사용. - 페이지 속성은 파일 최상단에
key:: value(예:deck:: Logseq/전공공부/선형대수학). 기존deck::속성은 유지한다. - 페이지 링크
[[페이지명]], 이미지/PDF 임베드. - 수식은 LaTeX: 인라인
$...$, 블록$$...$$.- ⚠️ 수식은 반드시 다른 마크업 밖에 단독으로 쓴다.
$...$가 굵은 글씨(**...**) 등 다른 문법 안에 중첩되면 Logseq이 수식을 렌더링하지 못하고 문자 그대로 노출된다. - 잘못된 예:
**3차원 ($\mathbb{R}^3$)**→ 올바른 예:**3차원** ($\mathbb{R}^3$) - 강조하려는 구절에 수식이 섞여 있으면 텍스트 부분만
**...**로 감싸고 수식은 밖으로 뺀다. 예:$Ax$ **를 계산하는 2가지 방법**
- ⚠️ 수식은 반드시 다른 마크업 밖에 단독으로 쓴다.
- 언어는 한국어. 수학·전문 용어는 필요시 영어 병기.
정리 스타일 (기존 노트 기준)
단원(챕터) 페이지는 1장 벡터와 행렬 이 기준 예시다: # n장 제목 — 정리 아래에 절(x.y)별로 ## x.y 절 제목 → ### 핵심 개념 / ### ❓ 스스로 점검 / ### ✏️ 연습문제 풀이 (솔루션 참고) 구조, 마지막에 ## n장에 대한 고찰.
개념 단위 페이지는 다익스트라 알고리즘 페이지가 대표 예시. 다음 형식을 따른다:
- ## 1. 개념 (Concept)
- ## 2. 동작 원리 / 주요 내용
- ## 3. 예제 / 코드
- ## 4. 부가 사항 (시간복잡도 등)
- 굵은 글씨(
**...**)로 핵심 용어 강조. - 코드는 언어 표기한 코드블록으로.
단순 요약 금지 — 학습 보조를 덧붙일 것
책 내용을 그대로 옮기는 요약에 그치지 않는다. 정리 사이사이에 다음 요소를 적절히 섞는다 (이모지 마커로 책 내용과 구분):
- 💡 직관 — 왜 이 개념이 중요한지, 어떤 그림으로 이해하면 좋은지, 개념 간 연결.
- ⚠️ 주의 — 흔히 혼동하는 지점, 빠뜨리기 쉬운 조건.
- ❓ 스스로 점검 — 각 절 끝에 확인 질문 몇 개를 배치한다. 질문을 부모 블록, 답을 자식 블록으로 작성한다 (Logseq에서 접어두고 셀프 테스트 가능하고, 사용자가 나중에 카드로 변환하기도 쉽다).
단, 덧붙이는 내용은 해당 챕터의 범위를 절대 넘지 않는다. 뒤 챕터 내용을 미리 끌어와 설명하지 않는다 (책 본문이 직접 예고한 연결을 언급하는 것은 허용). 질문의 답도 반드시 그 챕터 안에서 찾을 수 있어야 한다.
PDF 하이라이트·이미지 활용 (정리 시)
정리 본문을 PDF 원문과 연결해, 정리를 읽다가 클릭 한 번으로 해당 PDF 위치로 점프할 수 있게 한다.
하이라이트 참조 — PDF 위치 링크
- 사용자가 Logseq PDF 뷰어에서 하이라이트를 만들면
pages/hls__<PDF명>.md에 블록이 생긴다 (id:: <uuid>,hl-page:: <쪽>속성 포함. 영역 하이라이트는hl-type:: area속성이 추가로 있다). - Claude는 hls 페이지를 읽기만 하고, 정리 본문의 관련 개념 아래에 자식 블록으로 참조를 삽입한다. 하이라이트 종류에 따라 형식이 다르다 (⚠️ 모바일 Logseq 앱에서 area 하이라이트의
((uuid))임베드가 제대로 렌더링되지 않아 구분함):- 영역(area) 하이라이트 (
hl-type:: area) —((uuid))임베드를 쓰지 않는다. 대신 링크 + 직접 추출한 이미지로 넣는다:
이미지는- 📌 원문 <설명> (p.쪽): [🔗 PDF 위치](((uuid))) - assets/<PDF명>.edn의:bounding좌표(:x1 :y1 :x2 :y2 :width :height)로 PyMuPDF에서 해당 영역을 잘라 추출한다 (스케일 = PDF 쪽 너비 ÷ edn:width, 여백 약간, zoom 2.5 권장). Logseq이assets/<PDF명>/폴더에 만드는 스냅샷 PNG는 하이라이트를 다시 만들면 파일명이 바뀌므로 참조하지 않는다. - 텍스트 하이라이트 — 사용자가 중요하다고 표시한 부분이라는 신호다.
- 📌 원문 <설명> (p.쪽): ((uuid))형식으로 참조하고 (텍스트 참조는 모바일에서도 정상 렌더링), 정리 본문에서도 그 부분을 비중 있게 다룬다.
- 영역(area) 하이라이트 (
- 하이라이트 위치 파악:
hl-page::는 PDF 내부 쪽번호라서 책의 인쇄 쪽번호와 오프셋이 있을 수 있다 (1장 PDF는 책 쪽 = hl-page + 18). 같은 쪽에 하이라이트가 여러 개면assets/<PDF명>.edn의:y1좌표로 상하 순서를 구분한다. - 배치 기준: 개념 정의, 핵심 정리(定理), 중요 예제 등 원문 대조가 유용한 지점에만 넣는다. 남발하지 않는다.
- Claude는 하이라이트를 직접 생성하지 않는다 (
assets/*.edn에 렌더링 좌표를 써야 해서 불안정하고, 앱 캐시 롤백과 충돌 위험). 원문 링크가 필요한데 하이라이트가 없는 지점은 작업 흐름 4단계의 하이라이트 요청 목록으로 제안한다.
PDF 이미지 추출·임베드
- 그림·도표·그래프가 이해에 도움이 되면 PDF에서 직접 추출해 정리에 임베드한다 (영역 하이라이트가 없는 경우).
- 추출 방법: PyMuPDF(
pip3 install pymupdf)로 해당 쪽/영역을 PNG로 렌더링해assets/에 저장한다. - 파일명 규칙:
<단원>_p<쪽>_<간단한 설명>.png(예:1장_p12_벡터합_평행사변형.png). 타임스탬프 형식(image_..._0.png)은 Logseq 자동 생성 전용이므로 쓰지 않는다. - 임베드:
후, 같은 블록이나 자식 블록에 출처 쪽 번호를 병기한다 (예:(p.12, 그림 1-4)). assets/에 새 파일 추가만 한다. 기존 파일 수정·삭제 금지는 그대로 적용된다.
현재 진행: 선형대수학 (스트랭 6판)
- 허브:
스트랭 선형대수학 6판페이지. 단원 페이지명은1장 벡터와 행렬형식이며, 최상단deck:: Logseq/전공공부/선형대수학을 유지한다. - 단원 PDF는 사용자가 스캔해 Logseq에서 링크한다 (예:
assets/1장_벡터와_행렬_*.pdf). 새 단원 시작 시 사용자가 페이지와 PDF를 세팅한 뒤 정리를 요청한다. 단원 정리는 그 페이지의 PDF 임베드 아래에 불릿으로 작성한다. - 해답집:
assets/solution_1784335983942_0.pdf— 스트랭 6판 공식 영문 솔루션 (전 챕터). 문제 번호는 한국어판과 동일하다. 각 챕터의 "Problem Set x.y" 헤더로 위치를 찾는다 (1장 해답: PDF 2~18쪽). - PDF 읽는 법: 단원 PDF는 스캔+OCR본이라 텍스트 레이어의 수식이 깨져 있다. 정리할 때는 Read 도구로 페이지를 시각적으로 읽는다 (pdftoppm/poppler 설치됨). 이미지 추출·edn 좌표 파싱은 PyMuPDF(
import fitz, 설치됨)를 쓴다. - 쪽번호 오프셋: 1장 PDF는 책 쪽번호 = PDF 쪽번호 + 18. 단원 PDF마다 오프셋이 다를 수 있으니 첫 몇 쪽으로 확인할 것.
- 진행 상황: 1장 완료 — 정리 작성 + 사용자 area 하이라이트 11개를 「링크 + 추출 이미지」 형식으로 연결 (모바일 렌더링 문제로
((uuid))임베드에서 전환). 카드화는 사용자 진행 중. 다음은 2장 (사용자 학습·하이라이트 후 요청 예정, 연습문제 하이라이트 방식 적용 첫 단원).
Logseq 앱 동기화 주의
- Logseq 앱이 페이지를 열어둔 상태에서 파일을 밖에서 수정하면, 앱이 캐시된 옛 블록을 표시하다가 옛 내용을 파일에 되써버릴 수 있다 (부분 롤백 발생).
- 페이지 파일을 수정한 후에는 사용자에게 Logseq 재색인(Re-index) 을 안내한다. 수정 직후 "고쳤는데 그대로다"라는 피드백이 오면 파일을 다시 읽어 롤백 여부부터 확인한다.
금지 사항
- 기존 페이지 파일명 변경 금지 (Logseq 링크가 깨진다).
id::UUID 수정·복제 금지 (Anki 동기화가 깨진다).logseq/설정,hls__*페이지,assets/기존 파일 수정·삭제 금지.- Anki 카드 문법 추가 금지 (사용자가 직접 만든다).
Git
- 사용자는
logseq YYYYMMDD형식으로 스냅샷 커밋을 해왔다. - 작업 후 워킹 트리를 깨끗하게 유지한다. 커밋은 사용자가 요청할 때만.
.DS_Store,._*(macOS AppleDouble 파일 전체),bak/은 gitignore 처리되어 있다. 이 외장 SSD에서는 macOS가._*파일을 수시로 생성하므로, git 변동사항에._로 시작하는 파일이 보이면 추적 대상에서 빠졌는지 확인한다 (git rm --cached).- 이 볼륨은 exFAT라 macOS의 파일명 유니코드 정규화가 적용되지 않는다. git 인덱스는 디스크 실제 바이트 기준(한글 파일명은 대부분 NFD)으로 유지한다 (커밋 fbbdf62에서 통일). 한글 파일명의 유령 리네임/이중 등록(NFC↔NFD)이 다시 보이면, NFC 쪽 인덱스 항목만
git rm --cached로 제거하고 커밋한다. 셸에서 한글 파일명을 grep/glob으로 찾을 때는 정규화 불일치로 매칭이 실패할 수 있으니 타임스탬프 등 ASCII 부분으로 매칭하는 것이 안전하다.