.md 파일을 Scrapbox 형식으로 변환하는 스크립트를 파이썬으로 만들었습니다.
소개
Scrapbox 가시적이고 메모하기 쉽고 링크하기 쉽기 때문에 메모 대신 자주 사용하지만 마크 다운 형식은 지원하지 않으므로 마크 다운 파일을 scrapbox에서보기 쉬운 형식으로 변환하는 스크립트를 썼습니다.
변환할 대상
글머리 기호
입력.md
* イメージキャプショニングはビジュアルシーンに対して自然言語の説明をつけるタスク
* この分野ではここ5年でニューラルencoder-decoderが人気
* sotaはCNNのエンコーダ,LSTM(やTransformer)のデコーダ,とattention機構で構成されている
마크다운에서는
*
와 -
로 씁니다.scrapbox에서는 스페이스 1문자로 들여쓰기+바렛트(검은 원 ●일) 1개분이 되므로, 스페이스에 옮겨놓을 수 있습니다.
출력.txt
イメージキャプショニングはビジュアルシーンに対して自然言語の説明をつけるタスク
この分野ではここ5年でニューラルencoder-decoderが人気
sotaはCNNのエンコーダ,LSTM(やTransformer)のデコーダ,とattention機構で構成されている
scrapbox에서 이렇게 보입니다.
대괄호[]
입력.md
[27]はCNN encoder, LSTM decoderからなるモデルを提案
논문을 인용하는 데 사용되는 대괄호 []를 괄호 ()로 변환합니다.
이 이유는 scrapbox에서 대괄호 []는 기사 간의 링크를 의미하기 때문입니다.
출력.txt
(27)はCNN encoder, LSTM decoderからなるモデルを提案
제목
입력.md
## 2. 関連研究
### 2.1. Image Captioning
마크다운에서는 표제로서 h1 ~ h6까지를
#
를 복수 계속하는 것으로 표현합니다.scrapbox에는 제목이 없으므로 대신 굵은 글씨를 사용합니다. 굵게는 대괄호 []로 이중으로 묶습니다.
[[強調したい文字列]]
출력.txt
[[ 2. 関連研究]]
[[ 2.1. Image Captioning]]
scrapbox에서 이렇게 보입니다.
수식
입력.md
$f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)$
마크다운에서는
$数式$
로 1행내의 수식을 표현할 수 있습니다.scrapbox에서는
[$ 数式]
와 같은 것을 할 수 있습니다.출력.txt
[$ f_t = \sigma(W_f \cdot (h_{t-1}, x_t) + b_f)]
scrapbox에서 이렇게 보입니다.
덧붙여서 scrapbox에서는
\tag{1}
등의 수식 번호를 넣으면 1행에 멈추지 않고, 2행이 되어 버립니다. 이번에는 이것에 대응할 수 없습니다.굵게
입력.md
**強調のテスト**
마크다운에서는
**強調したい文字**
등의 방법으로 굵게 표현할 수 있습니다.scrapbox에서는 앞에서 언급했듯이
[[強調したい文字列]]
입니다.출력.txt
[[強調のテスト]]
소스 코드
어리석게
re
와 str.replace()
로 문자열을 바꿉니다.이상한 곳이 있으면 가르쳐 주시면 도움이됩니다.
이스케이프
\
의 영향으로 신택스 하이라이트의 색이 사라져 버렸다・・・md2scrapbox.py
import os
import argparse
import re
parser = argparse.ArgumentParser()
parser.add_argument("in_file")
args = parser.parse_args()
sentence = "" # output
tab = " "
space = " "
bullet = "* "
strong = r"\*\*.*\*\*.?"
title = r"#*"
math = r"\$[^\$]*\$"
with open(args.in_file, "r") as f:
lines = f.readlines()
for line in lines:
# blaket
line = line.replace("[", "(")
line = line.replace("]", ")")
# indentation
for m in re.finditer(tab, line):
line = re.sub(tab, space, line)
line = line.replace(bullet, space, 1)
# title
m = re.search(title, line)
if len(m.group()) > 0:
line = "[[" + line[m.end():].replace("\n", "") + "]]\n"
# math
m = re.findall(math, line)
if m:
for matched in m:
m2 = re.sub(r"^\$", "[$ ", matched)
m2 = re.sub(r"\$$", "]", m2)
line = line.replace(matched, m2)
sentence += line
continue
else:
# enphasis
m = re.findall(strong, line)
if m:
for matched in m:
m2 = re.sub(r"^\*\*", "[[", matched)
m2 = re.sub(r"\*\*$", "]]", m2)
line = line.replace(matched, m2)
sentence += line
print("==========")
print(sentence)
dirname = os.path.dirname(args.in_file)
name = os.path.basename(args.in_file)
name, ext = os.path.splitext(name)
name = name + "_scrapbox.txt"
name = os.path.join(dirname, name)
print(name)
with open(name, "w") as f:
f.write(sentence)
사용법
python md2scrapbox.py path/to/some_file.md
변환 결과는 입력과 동일한 위치로 이름을 바꾸어 저장됩니다.
위의 예라면
path/to/some_file_scrapbox.txt
가 됩니다.나머지는 완성된 문자열을 scrapbox에 붙이기만 하면 됩니다.
Reference
이 문제에 관하여(.md 파일을 Scrapbox 형식으로 변환하는 스크립트를 파이썬으로 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/exp/items/a018610036de706ba535텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)