pandoc (2)

by

in

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 で処理しています。