데이터를 아끼거나 통신이 되지 않는 곳에서 문서를 봐야 할 때 유용하게 사용할 수 있는 것이 바로 오프라인 문서이다. 오프라인 문서는 html(다양하게 사용됨), Markdown(간단한 문서 작업을 하기 위해 사용됨, 범용성 높음), reStructuredText(간단한 문서 작업을 하기 위해 사용됨, 파이썬 관련 문서에서 주로 사용됨) 등의 다양한 포맷이 있다.
Obsidian은 그중에서도 Markdown을 보기 위해 만들어닌 에디터 겸 뷰어이다. 이 글에서는 파이썬 공식 문서를 Markdown 파일로 변환하여 Obsidian에서 볼 수 있도록 만들어 본다.
파이썬 공식 문서의 rst 파일은 공식 저장소에 있다. code > local > download zip을 클릭해 파일을 저장한다.
pandoc 프로그램은 rst 파일을 md 파일로 변환하는 기능이 있다. 다음과 같은 커맨드를 입력하면 파일을 변환할 수 있다.
pandoc -f rst -t markdown -s -o output.md input.rst
또는
pandoc -f rst -t markdown_strict -s -o output.md input.rst
markdown
은 pandoc에서 Markdown을 직접 개조해 만든 버전이고, markdown_strict
이 일반적인 Markdown이다. markdown_strict
을 사용하면 깨짐은 없지만 reStructuredText에는 있고 Markdown에는 없는 모든 기능이 사라진다는 단점이 있고, markdown
을 사용하면 모든 기능이 전부 markdown에 포함되지만 뷰어 앱에서 해당 문법을 이해하지 못하여 깨진다는 단점이 있다. 원하는 옵션을 선택하면 된다.
다음과 같은 코드를 통해 코드를 구현하였다.
import os
from pathlib import Path
import shutil
def rst2md(dir: Path):
for file_or_dir in os.listdir(dir):
file_or_dir = dir / file_or_dir
if file_or_dir.is_dir():
rst2md(file_or_dir)
else:
if file_or_dir.suffix == ".rst":
print(file_or_dir)
os.system(
rf"pandoc -f rst -t markdown -s -o {str(file_or_dir).removesuffix('.rst') + '.md'} {file_or_dir}"
# 혹은 아래 코드 이용
# rf"pandoc -f rst -t markdown -s -o {str(file_or_dir).removesuffix('.rst') + '.md'!r} {file_or_dir!r}"
)
docs_path = Path(r"python_docs")
rst2md(docs_path)
코드를 실행하면 docs_path 하위에 있는 모든 폴더들의 모든 rst 파일에 대응하는 md 파일이 새로 생긴다.