pandoc の続きで markdown から latex への変換です。
この処理もサーチパス上に配置した次のバッチファイルで行っています。
@echo off
setlocal
where pandoc > nul
if not %ERRORLEVEL% equ 0 (
echo pandoc not found.
goto :eof
)
if "%1" == "" (
echo transrate markdown to latex.
echo usage : %~n0 [src]
goto :eof
)
set src=%~n1.md
if not exist %src% (
echo not found %src%.
goto :eof
)
set dst=%~n1.tex
call :set_preamble > %dst%
sed -e "s/<br>/\n/" -e "s/^.emsp;//" %src% | ^
pandoc -f markdown -t latex --listings >> %dst%
echo \end{document} >> %dst%
goto :eof
:set_preamble
echo \documentclass[dvipdfmx]{jsarticle}
echo \usepackage{bm}
echo \usepackage[dvipdfmx]{graphicx}
echo \usepackage{ascmac}
echo \usepackage{amsmath}
echo \usepackage[dvipdfmx]{hyperref}
echo \usepackage{pxjahyper}
echo \hypersetup{%%
echo setpagesize=false,%%
echo bookmarks=true,%%
echo bookmarksdepth=tocdepth,%%
echo bookmarksnumbered=true,%%
echo colorlinks=true,%%
echo pdftitle={},%%
echo pdfsubject={},%%
echo pdfauthor={},%%
echo pdfkeywords={}
echo }
echo \usepackage{listings}
echo \lstset{%%
echo language={C},%%
echo basicstyle=\ttfamily,%%
echo identifierstyle={\small},%%
echo commentstyle={\small\itshape},%%
echo keywordstyle={\small\bfseries},%%
echo ndkeywordstyle={\small},%%
echo stringstyle={\small\ttfamily},%%
echo frame=single,% frame={tb},%%
echo breaklines=true,%%
echo columns=[l]{fullflexible},%%
echo numbers=left,%%
echo xrightmargin=0zw,%%
echo xleftmargin=3zw,%%
echo numberstyle={\scriptsize},%%
echo stepnumber=1,%%
echo numbersep=1zw,%%
echo lineskip=-0.5ex%%
echo }
echo \newcommand{\passthrough}[1]{#1} %% macro of pandoc
echo \newcommand{\pandocbounded}[1]{#1} %% macro of pandoc
echo \begin{document}
exit /b
インターネットでは一気に pdf まで作成する例(これとかこれとか)が紹介されていますが、この場合、エラーが出ても出所が不明であったり、出力が好みに合わなかったりするので私は latex への変換に留めています。
つまり、pandoc が吐き出すスクリプトの前に普段使いのプリアンブルを、最後に \end{document}
を追加しています。また、pandoc が変換してくれない改行と行頭のインデントを sed で処理しています。