EDRSPIHCRSSRSS

Multi Markdown

MultiMarkdown

MultiMarkdown, or MMD, is a tool to help turn minimally marked-up plain text into well formatted documents, including HTML, PDF (by way of LaTeX), OPML, or OpenDocument (specifically, Flat OpenDocument or ‘.fodt’, which can in turn be converted into RTF, Microsoft Word, or virtually any other word-processing format).



이 페이지에서는 멀티마크다운을 이용하여 한글 LaTeX 문서를 만드는 경우만을 다룹니다.

mmd6-korean

  • mmd6-korean.zip
    • 이 파 묶음은 개인 프로젝트의 결과이며, 자신의 책임 하에 (at your own risk) 자유롭게 사용할 수 있습니다.
    • 어떤 형태의 보증도 하지 않습니다.
  • 사용법
    latex config: oblivoir
    base header level: 3
    use xelatex: yes
    title: TITLE
    author: AUTHOR
    
  • 예제
  • mmd6에서 달라진 점 등에 대해 위의 예제 문서에 설명해두었으므로 참고하십시오.

질문

  • OSX에서 Marked2는 아직 mmd6를 제대로 보여주지 못하는 것인가요? 혹시 새 버젼이 나오고 있나요?
    • 새 버전에 대해서는 알지 못하지만 Marked2가 MultiMarkdown그럭저럭 지원하는 것으로 생각합니다. Preferences -> Processor를 MultiMarkdown으로 선택할 수 있습니다.
    • MacOS에서 MacDown이라는 free 앱이 대부분 제대로 보여주는 것 같습니다. 정확한 것은 자세히 보지 않아서 모르겠네요. 그리고 Python에서 사용하는 Jupyter Notebook도 수식을 비롯해서 상당히 잘 보여줍니다.
  • mmd6와 mmd5를 같이 사용할 수 있나요?
    • 질문의 의미를 잘 모르겠습니다. mmd5 실행파이 필요하다면(이전 문법으로 작성된 것을 처리하기 위해서) 예컨대 multimarkdown5와 같은 이름으로 바꾸어두고 사용할 수는 있지 않겠습니까?
  • mmd6에서 beamer가 개발되고 있는건가요?
    • mmd6에도 -t beamer 옵션은 여전히 동작합니다. 다만 샘플 latex support file에 beamer 예제가 없는 것뿐이니까 사용자가 적절히 조성해야 할 듯합니다. [1]

인라인 수식 관련 토론

  • mmd6에서는 수식을 $..$로 감싸도 tex으로 잘 변환시켜 준다고 되어 있는가 봅니다.(mmd5도 그랬나요?) 그런데 예제를 보면 $..$의 앞이나 뒤에 간격 없이 글자가 붙으면 수식으로 인식하지 않는가봅니다. 우리는 수식 뒤에 토씨가 붙는 이 많아서 (comma나 dash도 있을 수 있을텐데...) 이렇게 되면 제대로 변환되지 않지 싶습니다. (테스트를 제대로 해보지 않은 상태에서 Fletcher씨의 예만 보고 말씀드립니다.) inline math는 $가 워낙 편해서 가능하면 \\(..\\)를 쓰고 싶지 않기 때문에 이것을 어떻게든 빠져나가고 싶은데요. 좋은 방법이 있을까요?
    • 현재 이 기능은 제법 빠르게 안정화되어 가고 있는 것으로 생각됩니다. 조금 더 기다려볼 필요도 있어 보이고요.
    • 안전하게 사용하려면 여는 \$ 앞에 스페이스를 두고 그 뒤에는 공백없이 수식을 시작하고, 닫는 \$ 앞에 공백을 두지 말고 뒤에 공백을 두면 거의 오차없이 잘 변환됩니다. 만약 \$ 앞뒤로 모두 공백인 외톨이 \$가 나타나면 이 부호의 짝(pair)을 따져 변환하려 하기 때문에 의도하지 않은 결과가 나타날 수 있어 보입니다. 닫는 \$ 뒤에 부호문자, 즉 문자나 숫자 아닌 것이 오면 공백과 같이 취급합니다.
    • 우리말 조사가 문제가 된다는 말씀이 옳습니다. 한글 사용시에는 조금 불편하더라도 \\(, \\)를 쓰는 것이 아무래도 안전하겠고요, 문서 생산성을 위하여 \$를 꼭 써야 한다면.... 닫는 \$와 잇대어붙는 조사 사이에 임시로 !(느낌표) 같은 것을 넣어두었다가(다른 경우와 혼동되면 안되기 때문에 별표(*)같은 것은 쓰지 말아야겠습니다) 변환된 .tex 파에 대하여 괄변환하는 것은 어떨까 싶습니다. sed 같은 걸로 변환하는 명령을 mmd2pdf 배치 스크립트에 한 줄 넣으면 간단히 되지 싶고요.
    • 다른 얘기지만 v6.3.0 초창기 버전 아주 잠깐 동안 달러사인을 클린하게 변환하지 않은 적이 있습니다. 달러사인으로 쓰고 싶으면 백슬래시를 붙이면 되니까 이게 더 낫지 않았을까 싶은데 복잡한 smart 변환을 하는 쪽으로 개발이 진행되었네요.
* 질문: inline math에서 뒤쪽 \$ 사인 뒤에 붙는 조사의 경우 한글 자동조사로 하면 backslash로 시작하니까 제대로 변환되려나요? 만 그렇다면 이것도 한 가지 대안이 되지 않을까 생각됩니다. sed를 써서 \$! 를 \$ 로 바꾸는 것은 어떻게 하나요?
  • 그 사이 공부한 바에 따르면 이렇게 하면 됩니다: sed 's/$!/$/' Math_test.tex > Math_test1.tex
  • 달라 표기된 inline math 뒤에 따라오는 backslash는 특수기호로 인식되지 않는군요. 말씀하신대로 뒤쪽 달러 사인 뒤에 붙여서 잘 안쓰이는 기호(!)를 붙였다가 수정하는 방식으로 해 봐야 할 듯합니다.
  • 혹시 자동조사 패키지에 \는 같은 것이 나오면 그 앞의 빈 간격을 없애주는 식으로 정의해 쓸 수 있는 옵션이 있으면 안될까요?

    • sed의 $는 행끝 대표문자이기도 하기 때문에 혼선을 피하기 위해서 다음처럼 하는 것이 나아 보입니다.
      sed 's/\$!/\$/g' <test.tex >test2.tex
      
    • mmd로 문서을 작성할 때 자동조사는 latex code block으로 escape하여서 입력해야 하기 때문에 불편을 감수할 수밖에 없습니다. 자동조사 앞에 \unskip을 하나 두는 것이야 (맘만 먹으면) 어려운 은 아니지만 반화해서 정의하는 것은 무리라고 생각합니다.
    • 저는 간단한 문서를 작성할 때 Typora를 쓰는데 이걸 처음 쓰기 시작했을 때 비슷한 문제에 부딪쳤습니다. \\(, \\)로 입력한 인라인수식을 실시간으로 보여주지 않았기 때문이지요. 그래서 typora에서 입력할 때는 \$를 써서 입력한 다음에 \$...\$로 입력된 부분을 sed를 이용하여 \\( ... \\)로 regex 수정한 파로 결과물을 얻었습니다. 이 때 제가 사용했던 간단한 스크립트는 다음과 같습니다.
      #!/bin/sh
      filename=${1%.*}
      sed -e 's/\\\$/\\DOLLAR/g;s/\$\([^$]*\)\$/\\\\\(\1\\\\\)/g;s/\\DOLLAR/\\\$/g' <"$1" >"$filename._md"
      mmd2pdf "$filename._md"
      rm -f "$filename._md"
      
    • sed 명령을 주는 행이 꽤 긴데, 간단히 설명하면 만약 백슬래시+달라사인으로 입력된 것이 있으면(이것은 명시적인 달러사인이므로) 전부 \DOLLAR라는 문자열로 바꾸어둡니다. 그런 다음에 달러 사인으로 입력된 수식 부분을 \\(...\\)로 바꿉니다. 마지막으로 \DOLLAR라고 바뀌어 있던 것을 원래 모양인 백슬래시+달라사인으로 다시 치환하도록 한 것입니다. 이 스크립트는 MacOS bash shell에서 사용했고 다른 운영체제의 다른 셸에서는 조금 수정해야 할지도 모릅니다. 아이디어를 얻는 데 참고가 되기를 바랍니다.
    • 별행수식이 $$ ... $$로 입력되어 있을 때 이것을 치환하는 sed 명령은 다음과 같습니다. 이왕 얘기가 나온 김에 적어두겠습니다.
      • GNU sed (Linux)
        sed ':a;N;$!ba;s/\$\$\([^$]*\)\$\$/\\\\\[\1\\\\\]/g' file
        
      • BSD sed (Mac OS)
        sed -e ':a' -e 'N' -e '$!ba' -e 's/\$\$\([^$]*\)\$\$/\\\\\[\1\\\\\]/g' file
        
* 대단히 감사합니다. 큰 도움이 되겠습니다.
----
  • [1] v6.3.0의 support files에 beamer 관련 파이 다시 포함되었습니다.