このとき、markdownで記述した表はlatexのlongtableに変換されるようなのですが、表のキャプションが下に来てしまいます。表のキャプションは上に書きたいので、これでは困るわけです。
これを |
こうしたい |
始めの状態
記述したMarkdownはこんな感じです。
# 表 #################################
表
Table:例
|A |B |C |D |
|:--------|:-----------|:-----------|:------------|
|11111 |222 |33 |4 |
|5 |6 |7 |8 |
変換すると、キャプションが\end{longtable}の直前にきます。
\section{表}\label{ux8868}
表
\begin{longtable}[c]{@{}llll@{}}
\toprule\addlinespace
A & B & C & D
\\\addlinespace
\midrule\endhead
11111 & 222 & 33 & 4
\\\addlinespace
5 & 6 & 7 & 8
\\\addlinespace
\bottomrule
\addlinespace
\caption{例}
\end{longtable}
下に持ってくる
pandocで変換された後のTeXファイルに手を加えてなんとかしました。sedとかに慣れてないので、Pythonで作っています。
convertmd: $(MDSCRIPT)
@cat $^ \
| sed s/.png/.eps/g \
| pandoc -t latex \
| sed 's/includegraphics/includegraphics[width=0.65\\columnwidth]/g' \
| sed 's/\mathrm/\,\\mathrm/g' \
| python FixTableCaption.py \
| sed 's/\caption{\(.*\)}/\caption{\1\\label{fig:\1}}/g' \
> $(MDSCRIPT:.md=.tex)
無事、キャプションが上にきました。
\section{表}\label{ux8868}
表
\begin{longtable}[c]{@{}llll@{}}
\caption{例\label{fig:例}}
\\
\toprule\addlinespace
A & B & C & D
\\\addlinespace
\midrule\endhead
11111 & 222 & 33 & 4
\\\addlinespace
5 & 6 & 7 & 8
\\\addlinespace
\bottomrule
\addlinespace
\end{longtable}
まとめ
これが本当に良い方法なのかわかりませんが、とりあえずキャプションを上に持ってくることができました。
根本的に、pandocから出てくるときにキャプションを上にしておく方法などがあれは、ぜひ教えてください。