Skip to content

Commit a168932

Browse files
committed
docs: update PaperMod theme documentation and Mermaid configuration
1 parent 126dab5 commit a168932

File tree

4 files changed

+109
-7
lines changed

4 files changed

+109
-7
lines changed

content/posts/hello-world.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "Hello World"
3-
date: 2024-04-15
3+
date: 2025-04-14
44
description: "첫 번째 블로그 포스트입니다."
55
tags: ["blog", "hello"]
66
categories: ["일상"]

content/posts/markdown-usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "마크다운 사용법"
3-
date: 2024-04-16
3+
date: 2025-04-15
44
description: "마크다운의 기본 문법과 고급 문법을 상세히 설명하는 가이드"
55
tags: ["markdown", "문법", "가이드"]
66
categories: ["기술"]

content/posts/papermod-mermaid.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
---
2+
title: "PaperMod 테마에서 다이어그램 사용하기"
3+
date: 2025-04-17
4+
draft: false
5+
description: "PaperMod 테마에서 Mermaid 다이어그램을 사용하기 위한 설정 방법을 알아봅니다."
6+
tags: ["hugo", "papermod", "mermaid", "diagram"]
7+
---
8+
9+
## PaperMod 테마 소개
10+
11+
PaperMod는 Hugo를 위한 현대적이고 깔끔한 블로그 테마입니다. 이 테마는 다음과 같은 특징을 가지고 있습니다:
12+
13+
### 주요 특징
14+
- 깔끔하고 모던한 디자인
15+
- 다크 모드 지원
16+
- 반응형 레이아웃
17+
- SEO 최적화
18+
- 다국어 지원
19+
- 다양한 커스터마이징 옵션
20+
21+
### 장점
22+
1. **사용자 친화적**: 직관적인 설정과 사용법
23+
2. **가벼운 구조**: 빠른 로딩 속도
24+
3. **확장성**: 다양한 기능을 쉽게 추가 가능
25+
4. **활발한 커뮤니티**: 지속적인 업데이트와 지원
26+
27+
### 단점
28+
1. **기본 기능 제한**: 일부 고급 기능은 직접 구현 필요
29+
2. **커스터마이징 제한**: 테마 구조 변경이 어려울 수 있음
30+
3. **의존성 관리**: 일부 기능은 외부 라이브러리 의존
31+
32+
## Mermaid 다이어그램 설정하기
33+
34+
PaperMod 테마에서 Mermaid 다이어그램을 사용하기 위해서는 몇 가지 설정이 필요합니다. 이 글에서는 필요한 설정과 사용 방법을 단계별로 설명합니다.
35+
36+
### 1. Mermaid 코드블럭 처리 설정
37+
38+
먼저 Mermaid 코드블럭을 처리하기 위한 템플릿 파일을 생성해야 합니다.
39+
40+
```bash
41+
mkdir -p layouts/_default/_markup/
42+
touch layouts/_default/_markup/render-codeblock-mermaid.html
43+
```
44+
45+
생성된 `render-codeblock-mermaid.html` 파일에 다음 내용을 추가합니다:
46+
47+
```html
48+
{{ if eq .Type "mermaid" }}
49+
<pre class="mermaid">
50+
{{- .Inner | htmlEscape | safeHTML }}
51+
</pre>
52+
{{ .Page.Store.Set "hasMermaid" true }}
53+
{{ else }}
54+
<pre class="language-{{ .Type }}">
55+
{{- .Inner | htmlEscape | safeHTML }}
56+
</pre>
57+
{{ end }}
58+
```
59+
60+
### 2. Mermaid 스크립트 로드 설정
61+
62+
`extend_head.html` 파일을 수정하여 Mermaid 스크립트를 로드하도록 합니다:
63+
64+
```html
65+
{{ if .Page.Store.Get "hasMermaid" }}
66+
<script src="https://cdn.jsdelivr.net/npm/mermaid@10.2.3/dist/mermaid.min.js"></script>
67+
<script>
68+
document.addEventListener('DOMContentLoaded', function() {
69+
mermaid.initialize({
70+
startOnLoad: true,
71+
theme: 'default',
72+
securityLevel: 'loose'
73+
});
74+
});
75+
</script>
76+
{{ end }}
77+
```
78+
79+
### 3. Hugo 설정 파일 수정
80+
81+
`hugo.toml` 파일에 다음 설정을 추가합니다:
82+
83+
```toml
84+
[markup]
85+
[markup.goldmark]
86+
[markup.goldmark.renderer]
87+
unsafe = true
88+
hardWraps = true
89+
[markup.goldmark.parser]
90+
attribute = true
91+
autoHeadingID = true
92+
autoHeadingIDType = "github"
93+
[markup.highlight]
94+
noClasses = false
95+
codeFences = true
96+
guessSyntax = true
97+
98+
[params]
99+
[params.mermaid]
100+
enable = true
101+
theme = "default"
102+
securityLevel = "loose"
103+
```
104+
105+
이 설정은 Mermaid 다이어그램을 활성화하고, 마크다운의 HTML 렌더링을 허용하며, 코드 블록의 처리 방식을 지정합니다.

layouts/partials/extend_head.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,14 @@
2121
window.addEventListener('load', function() {
2222
mermaid.initialize({
2323
startOnLoad: true,
24-
theme: '{{ .Site.Params.mermaid.theme }}',
25-
securityLevel: '{{ .Site.Params.mermaid.securityLevel }}',
24+
theme: {{ .Site.Params.mermaid.theme | default "default" }},
25+
securityLevel: {{ .Site.Params.mermaid.securityLevel | default "loose" }},
2626
flowchart: {
2727
useMaxWidth: true,
2828
htmlLabels: true,
2929
curve: 'basis'
3030
}
3131
});
32-
mermaid.run({
33-
querySelector: '.language-mermaid'
34-
});
3532
});
3633
</script>
3734
{{ end }}

0 commit comments

Comments
 (0)