1장 하이라이트 참조를 모바일 대응 형식으로 전환 (링크 + 추출 이미지)

- area 하이라이트 ((uuid)) 임베드가 모바일 앱에서 렌더링되지 않아,
  📌 링크 [🔗 PDF 위치] + PyMuPDF 추출 PNG 임베드 방식으로 교체
- edn 좌표 기반으로 하이라이트 영역 11개 PNG 추출 (assets/1장_p*.png)
- CLAUDE.md: 하이라이트 참조 규칙을 area/텍스트 종류별로 분리, 추출 방법 기록

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013TQnRZruUBDaE8iFeipBr5
This commit is contained in:
songyc macbook 2026-07-19 22:35:32 +09:00
parent f26618bf2b
commit 110d280e77
14 changed files with 35 additions and 18 deletions

View File

@ -7,8 +7,8 @@
한 단원을 다음 사이클로 정리한다:
1. **사용자 선행 학습** — 사용자가 그 단원을 먼저 혼자 공부한다 (PDF 원자료 기준).
2. **사용자 1차 하이라이트** — 공부한 내용을 바탕으로 사용자가 Logseq에서 그 단원 PDF에 하이라이트한다. 본문 핵심 부분과 함께, **풀어볼 가치가 있다고 판단한 연습문제에도 하이라이트**한다 (2장부터 적용).
3. **Claude 정리** — 책 내용과 사용자의 하이라이트를 바탕으로 단원 페이지에 정리를 작성한다. 사용자가 만든 하이라이트는 `((uuid))` 블록 참조로 정리 본문의 해당 위치에 포함한다 (아래 「PDF 하이라이트·이미지 활용」 참고). **하이라이트된 연습문제는 절별 「✏️ 연습문제 풀이」에 포함**하고 해답집(solution PDF)을 참고해 해설을 단다.
2. **사용자 1차 하이라이트** — 공부한 내용을 바탕으로 사용자가 Logseq에서 그 단원 PDF에 하이라이트한다. **영역(area) 하이라이트와 텍스트 하이라이트가 섞여 있을 수 있다.** 본문 핵심 부분과 함께, **풀어볼 가치가 있다고 판단한 연습문제에도 하이라이트**한다 (2장부터 적용).
3. **Claude 정리** — 책 내용과 사용자의 하이라이트를 바탕으로 단원 페이지에 정리를 작성한다. 사용자가 만든 하이라이트는 종류별 형식으로 정리 본문의 해당 위치에 포함한다**영역 하이라이트는 링크 + 추출 이미지, 텍스트 하이라이트는 `((uuid))` 참조 + 정리 비중 반영** (아래 「PDF 하이라이트·이미지 활용」 참고). **하이라이트된 연습문제는 절별 「✏️ 연습문제 풀이」에 포함**하고 해답집(solution PDF)을 참고해 해설을 단다.
4. **추가 하이라이트 제안** — 정리하면서 Claude 판단에 원문 링크가 더 필요한 부분이 있으면, 정리 완료 보고에 **하이라이트 요청 목록**(쪽 번호 + 부분)을 담아 제안한다. 사용자가 고른 것 외에 **추가로 추천할 연습문제가 있으면 "x.y절 문제 n번 — 추천 이유"** 형식으로 이 목록에 함께 담는다.
5. **사용자 2차 하이라이트 → Claude 다듬기** — 사용자가 제안을 (자기 판단으로 취사선택하여) 하이라이트하고 알려주면, Claude가 hls 페이지에서 새 uuid를 읽어 참조를 채워 정리를 다듬는다.
6. **사용자 마무리** — 사용자가 직접 Anki 카드화하고 자기 방식으로 세부 수정하여 그 단원 정리를 마무리한다.
@ -78,12 +78,18 @@
### 하이라이트 참조 — PDF 위치 링크
- 사용자가 Logseq PDF 뷰어에서 하이라이트를 만들면 `pages/hls__<PDF명>.md`에 블록이 생긴다 (`id:: <uuid>`, `hl-page:: <쪽>` 속성 포함).
- Claude는 hls 페이지를 **읽기만** 하고, 정리 본문의 관련 개념 아래에 자식 블록으로 참조를 삽입한다. 형식: `- 📌 원문 <설명> (p.쪽): ((uuid))`. 클릭하면 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)))
- ![<설명> (p.쪽)](../assets/<단원>_p<쪽>_<설명>.png)
```
이미지는 `assets/<PDF명>.edn``:bounding` 좌표(`:x1 :y1 :x2 :y2 :width :height`)로 PyMuPDF에서 해당 영역을 잘라 추출한다 (스케일 = PDF 쪽 너비 ÷ edn `:width`, 여백 약간, zoom 2.5 권장). Logseq이 `assets/<PDF명>/` 폴더에 만드는 스냅샷 PNG는 하이라이트를 다시 만들면 파일명이 바뀌므로 참조하지 않는다.
- **텍스트 하이라이트** — 사용자가 중요하다고 표시한 부분이라는 신호다. `- 📌 원문 <설명> (p.쪽): ((uuid))` 형식으로 참조하고 (텍스트 참조는 모바일에서도 정상 렌더링), **정리 본문에서도 그 부분을 비중 있게 다룬다**.
- 하이라이트 위치 파악: `hl-page::`는 **PDF 내부 쪽번호**라서 책의 인쇄 쪽번호와 오프셋이 있을 수 있다 (1장 PDF는 책 쪽 = hl-page + 18). 같은 쪽에 하이라이트가 여러 개면 `assets/<PDF명>.edn``:y1` 좌표로 상하 순서를 구분한다.
- 배치 기준: 개념 정의, 핵심 정리(定理), 중요 예제 등 **원문 대조가 유용한 지점에만** 넣는다. 남발하지 않는다.
- Claude는 하이라이트를 **직접 생성하지 않는다** (`assets/*.edn`에 렌더링 좌표를 써야 해서 불안정하고, 앱 캐시 롤백과 충돌 위험). 원문 링크가 필요한데 하이라이트가 없는 지점은 작업 흐름 4단계의 **하이라이트 요청 목록**으로 제안한다.
- 그림·도표·수식 박스는 사용자가 **영역(area) 하이라이트**로 만들어두면 참조 시 이미지로 렌더링된다. 영역 하이라이트가 있으면 별도 추출 없이 그것을 우선 참조한다.
### PDF 이미지 추출·임베드
@ -100,7 +106,7 @@
- **해답집**: `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장 완료 — 정리 작성 + 사용자 하이라이트 11개 참조 연결(커밋 8d160e3), 카드화는 사용자 진행 중. 다음은 2장 (사용자 학습·하이라이트 후 요청 예정, 연습문제 하이라이트 방식 적용 첫 단원).
- **진행 상황**: 1장 완료 — 정리 작성 + 사용자 area 하이라이트 11개를 「링크 + 추출 이미지」 형식으로 연결 (모바일 렌더링 문제로 `((uuid))` 임베드에서 전환). 카드화는 사용자 진행 중. 다음은 2장 (사용자 학습·하이라이트 후 요청 예정, 연습문제 하이라이트 방식 적용 첫 단원).
## Logseq 앱 동기화 주의

BIN
assets/1장_p21_요약박스.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

BIN
assets/1장_p31_내적_식1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
assets/1장_p31_내적_식2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
assets/1장_p48_4가지경우.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

BIN
assets/1장_p48_질문박스.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

BIN
assets/1장_p60_CR정리.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

View File

@ -130,4 +130,4 @@
:page 45},
:content {:text "[:span]", :image 1784378783139},
:properties {:color "blue"}}],
:extra {:page 6}}
:extra {:page 4}}

View File

@ -7,7 +7,8 @@ deck:: Logseq/전공공부/선형대수학
- ① 모든 선형결합 $Ax = x_1v_1 + x_2v_2 + \cdots + x_nv_n$ 은 어떤 모양(직선/평면/공간)을 채우는가? → **열공간** (1.3절)
- ② 원하는 출력 $b$ 를 만드는 수 $x_1, \dots, x_n$ 을 찾을 수 있는가? → **선형방정식** $Ax=b$ (2장에서 본격적으로)
- ## 1.1 벡터와 선형결합
- 📌 원문 요약 박스 (p.21): ((6a5b74dd-cab9-4dcd-92c2-1cbaf5c9fc6c))
- 📌 원문 요약 박스 (p.21): [🔗 PDF 위치](((6a5b74dd-cab9-4dcd-92c2-1cbaf5c9fc6c)))
- ![1장 요약 박스 (p.21)](../assets/1장_p21_요약박스.png)
- ### 핵심 개념
- **선형결합** (linear combination): 임의의 수 $c, d$ 에 대한 $cv + dw$ 형태.
- 벡터의 2가지 기본 연산을 합친 것: **수 곱하기** ($3v$) + **같은 차원끼리 더하기** ($v+w$).
@ -21,7 +22,8 @@ deck:: Logseq/전공공부/선형대수학
- **열 방법**: 선형결합 $c \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} + d \begin{bmatrix} w_1 \\ w_2 \end{bmatrix} = b$
- **행 방법**: $c, d$ 에 대한 방정식 2개
- **행렬 방법**: $\begin{bmatrix} v_1 & w_1 \\ v_2 & w_2 \end{bmatrix} \begin{bmatrix} c \\ d \end{bmatrix} = b$
- 📌 원문 표 (p.23): ((6a5b74f6-a99c-4df9-857c-944875fdbec4))
- 📌 원문 표 (p.23): [🔗 PDF 위치](((6a5b74f6-a99c-4df9-857c-944875fdbec4)))
- ![세 가지 방식 표 (p.23)](../assets/1장_p23_선형결합_표.png)
- **소거법**: 한 방정식에서 다른 방정식의 배수를 빼서 좌변에 0을 만든다 → 미지수 하나 소거 → 역대입.
- 첫 방정식에 0이 있어 소거가 어려워 보이면 **방정식 순서를 바꾸면** 된다.
- **소거법이 실패하는 경우** = 해가 없는 경우뿐이다.
@ -61,8 +63,10 @@ deck:: Logseq/전공공부/선형대수학
- ## 1.2 내적으로부터의 길이와 각
- ### 핵심 개념
- **내적** (dot product): $v \cdot w = v_1 w_1 + v_2 w_2 + \cdots + v_n w_n$. 순서는 무관: $v \cdot w = w \cdot v$.
- 📌 원문 정의 — 2차원 식 (1) (p.31): ((6a5b750f-8720-4ae8-b8d5-2399b6c6cb65))
- 📌 원문 정의 — $n$ 차원 식 (2) (p.31): ((6a5b7514-9a2e-4601-ab79-a26e887561a0))
- 📌 원문 정의 — 2차원 식 (1) (p.31): [🔗 PDF 위치](((6a5b750f-8720-4ae8-b8d5-2399b6c6cb65)))
- ![내적 정의 식 (1) (p.31)](../assets/1장_p31_내적_식1.png)
- 📌 원문 정의 — $n$ 차원 식 (2) (p.31): [🔗 PDF 위치](((6a5b7514-9a2e-4601-ab79-a26e887561a0)))
- ![내적 정의 식 (2) (p.31)](../assets/1장_p31_내적_식2.png)
- **길이** (length): $\|v\| = \sqrt{v \cdot v} = \sqrt{v_1^2 + \cdots + v_n^2}$.
- 피타고라스 정리의 $n$ 차원 확장. 차원을 하나씩 추가하며 직각삼각형을 반복 적용한다.
- $n$ 차원 단위정육면체의 대각선 길이는 $\sqrt{n}$ (예: $(1,1,1,1)$ 의 길이는 2).
@ -79,12 +83,14 @@ deck:: Logseq/전공공부/선형대수학
- **코사인 공식** (cosine formula): $v, w$ 가 영벡터가 아닐 때
- $$\cos\theta = \frac{v \cdot w}{\|v\| \|w\|}$$
- 단위벡터끼리라면 그냥 $\cos\theta = u \cdot U$. 삼각법의 $\cos(\beta - \alpha) = \cos\alpha\cos\beta + \sin\alpha\sin\beta$ 가 배경.
- 📌 원문 식 (5) (p.35): ((6a5b752c-fe72-4e43-b869-f6d77622c379))
- 📌 원문 식 (5) (p.35): [🔗 PDF 위치](((6a5b752c-fe72-4e43-b869-f6d77622c379)))
- ![코사인 공식 식 (5) (p.35)](../assets/1장_p35_코사인공식_식5.png)
- $|\cos\theta| \le 1$ 로부터 얻는, 수학에서 가장 중요한 2가지 부등식:
- **슈바르츠 부등식** (Schwarz inequality): $|v \cdot w| \le \|v\| \|w\|$
- **삼각부등식** (triangle inequality): $\|v+w\| \le \|v\| + \|w\|$ — 삼각형의 한 변은 나머지 두 변의 합을 초과할 수 없다.
- 삼각부등식은 슈바르츠 부등식으로부터 유도: $\|v+w\|^2 \le \|v\|^2 + 2\|v\|\|w\| + \|w\|^2 = (\|v\|+\|w\|)^2$.
- 📌 원문 박스 (p.36): ((6a5b7538-a296-44b4-9477-21b6393c05ce))
- 📌 원문 박스 (p.36): [🔗 PDF 위치](((6a5b7538-a296-44b4-9477-21b6393c05ce)))
- ![슈바르츠·삼각부등식 박스 (p.36)](../assets/1장_p36_부등식박스.png)
- 응용 예:
- 경제 (EX 5): 총비용 = (수량 벡터 $q$) $\cdot$ (가격 벡터 $p$). 내적이 0이면 장부의 균형 (수입 = 지출).
- 기하평균 ≤ 산술평균 (EX 8): $v=(a,b)$, $w=(b,a)$ 에 슈바르츠를 적용하면 $2ab \le a^2 + b^2$, 즉 $|ab| \le \frac{1}{2}(a^2+b^2)$.
@ -134,21 +140,24 @@ deck:: Logseq/전공공부/선형대수학
- **열공간** (column space) $C(A)$: 모든 벡터 $Ax$, 즉 열들의 **모든 선형결합**의 집합.
- **생성** (span): 벡터 집합의 모든 선형결합. "행렬 $A$ 의 열의 생성 = 열공간".
- 방정식과의 연결: $Ax = b$ 는 $b$ 가 $C(A)$ 에 있을 때 해 $x$ 를 갖는다.
- 📌 원문 박스 (p.46): ((6a5b7553-d1c5-49ea-b1e1-e9b008137458))
- 📌 원문 박스 (p.46): [🔗 PDF 위치](((6a5b7553-d1c5-49ea-b1e1-e9b008137458)))
- ![열공간 박스 (p.46)](../assets/1장_p46_열공간박스.png)
- $m = 3$ (열들이 3차원 벡터)일 때 열공간으로 가능한 4가지:
- ① 전체 공간 $\mathbb{R}^3$ — 선형독립인 열 3개
- ② 원점을 지나는 평면 — 선형독립인 열 2개
- ③ 원점을 지나는 직선 — 선형독립인 열 1개
- ④ 점 $(0,0,0)$ — $A$ 가 영행렬
- ⚠️ 열공간은 **항상 원점을 포함**한다 ($x = 0$ 이면 $Ax = 0$).
- 📌 원문 — 4가지 경우 (p.48): ((6a5b7574-72d1-4ac2-bb64-3f37b95a3f5e))
- 📌 원문 — 4가지 경우 (p.48): [🔗 PDF 위치](((6a5b7574-72d1-4ac2-bb64-3f37b95a3f5e)))
- ![열공간의 4가지 경우 (p.48)](../assets/1장_p48_4가지경우.png)
- **랭크** (rank) $r$: 선형독립인 열의 개수. 열공간의 "실제 크기".
- **랭크 1 행렬**: 모든 열이 동일한 직선 위 → 열공간이 원점을 지나는 직선.
- 놀라운 사실: 이때 **모든 행도 하나의 직선 위**에 있다 (모든 행이 한 행의 상수배).
- $2 \times 2$ 로 확인: 2열이 1열의 $m$ 배인 $\begin{bmatrix} a & ma \\ b & mb \end{bmatrix}$ 에서 2행 $[b \ mb]$ 는 1행 $[a \ ma]$ 의 $\frac{b}{a}$ 배.
- → **행 랭크 = 열 랭크** (선형대수학의 첫 번째 위대한 정리). 랭크 1은 여기서 확인, 일반 증명은 1.4절 $A = CR$ 로.
- 1.4절로 가는 질문들 (p.48): 독립인 열은 몇 개인가(= 랭크 $r$)? 처음 $r$ 개의 독립인 열은(= 열공간의 **기저**)? $A$ 를 어떻게 $CR$ 로 분해하는가?
- 📌 원문 질문 박스 (p.48): ((6a5b7579-424b-4e07-9595-4adb2c4014fa))
- 📌 원문 질문 박스 (p.48): [🔗 PDF 위치](((6a5b7579-424b-4e07-9595-4adb2c4014fa)))
- ![1.4절로 가는 질문 박스 (p.48)](../assets/1장_p48_질문박스.png)
- ### ❓ 스스로 점검
- $Ax$ 를 "열을 이용한 방법"으로 설명하라.
- $Ax$ 는 $A$ 의 열들의 선형결합 $x_1 a_1 + \cdots + x_n a_n$ 이다. $x$ 의 성분들이 각 열의 계수가 된다.
@ -196,7 +205,8 @@ deck:: Logseq/전공공부/선형대수학
- $R$ 의 역할: $C$ 의 열들을 어떻게 결합하면 $A$ 의 각 열이 나오는지 기록. $(A$ 의 $j$ 열$) = C \times (R$ 의 $j$ 열$)$.
- $R = [I \ F]$ 구조: $C$ 로 들어간 열 위치에 항등행렬 $I$, 종속인 열 위치에 결합 계수 ($F$).
- 예 (p.60): $\begin{bmatrix} 2 & 6 & 4 \\ 4 & 12 & 8 \\ 1 & 3 & 5 \end{bmatrix} = \begin{bmatrix} 2 & 4 \\ 4 & 8 \\ 1 & 5 \end{bmatrix} \begin{bmatrix} 1 & 3 & 0 \\ 0 & 0 & 1 \end{bmatrix}$ — 2열 = 3(1열) 이라 $C$ 에서 제외, $R$ 의 2열에 계수 3.
- 📌 원문 정리 ❶❷❸ (p.60): ((6a5b7591-28ea-4a27-896d-360fd2f1725b))
- 📌 원문 정리 ❶❷❸ (p.60): [🔗 PDF 위치](((6a5b7591-28ea-4a27-896d-360fd2f1725b)))
- ![A=CR 정리 ❶❷❸ (p.60)](../assets/1장_p60_CR정리.png)
- 모든 열이 선형독립이면 $C = A$, $R = I$.
- $R$ **을 찾는 방법 — 소거법** (행 축소, row reduction):
- 행 연산(한 행에서 다른 행의 배수 빼기)으로 $A$ 를 단순화 → 상삼각행렬 $U$ → 위쪽 행까지 계속 소거 → $R_0$ (**기약행 사다리꼴**, reduced row echelon form, MATLAB의 rref(A)).
@ -210,7 +220,8 @@ deck:: Logseq/전공공부/선형대수학
- ④ $A$ 의 모든 행은 $R$ 의 행들의 선형결합 ($A = CR$)
- $A = CR$ 에 관한 주요 사실: $C$ 의 $r$ 개 열은 $A$ 의 **열공간의 기저**, $R$ 의 $r$ 개 행은 $A$ 의 **행공간의 기저** ('기저'·'차원'의 정식 정의는 3.4절).
- $C$ 는 $A$ 와 동일한 열공간을, $R$ 은 $A$ 와 동일한 행공간을 갖는다.
- 📌 원문 박스 (p.63): ((6a5b75a0-8bcd-4080-b864-6cefab1bb900))
- 📌 원문 박스 (p.63): [🔗 PDF 위치](((6a5b75a0-8bcd-4080-b864-6cefab1bb900)))
- ![A=CR 주요 사실 박스 (p.63)](../assets/1장_p63_주요사실박스.png)
- ⚠️ **주의**: $C$ 는 $A$ 의 열을 **그대로** 가져오지만, $R$ 은 $A$ 의 행을 그대로 가져온 것이 **아니다** ($R$ 의 행은 $A$ 의 행들의 선형결합).
- ### ❓ 스스로 점검
- $AB$ 의 $j$ 열은 무엇인가?