pandoc で PDF変換 エラー

pandoc で PDF変換 エラー

- 浮亭 夢介 の投稿
返信数: 4

lualatexの力を借りてMarkdown ファイル sample.txt を pandoc を使って PDF に変換しようとすると次のエラーが出ました.(以前(2012/9頃)は正しく処理出来た) 対処方法よろしくお願いします.

--------------------
C:\Users> pandoc sample.txt -o sample.pdf -V documentclass=ltjsarticle --latex-engine=lualatex

! LaTeX Error: *** NFSS release 1 command \define@mathgroup found
*** Recovery not possible. Use \DeclareSymbolFont.

l.53 \define@mathgroup
--------------------

浮亭 夢介 への返信

Re: pandoc で PDF変換 エラー

- 岩崎 隆盛 の投稿
TeXソースに変換して、そのソースをコンパイルしてみればいいと思う。
-sオプションの追加、出力ファイル名sample.pdf→ sample.tex

pandoc -s sample.txt -o sample.tex -V documentclass=ltjsarticle --latex-engine=lualatex

ちなみに、私の場合はmicrotypeパッケージでエラーになります。(Ubuntu 13.04,TeX Live 2012/Debian)

pandoc: Error producing PDF from TeX source.
! Extra \else.
\XKV@wh@list ...r \expandafter \XKV@wh@list \else
\def #3{#6}\expandafter \e...
l.63 }
**********
(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty
(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg
! Extra \else.
\XKV@wh@list ...r \expandafter \XKV@wh@list \else
\def #3{#6}\expandafter \e...
l.63 }
*********
ちなみに、サンプルは
****
日本で漱石が「吾輩は猫である」を発表したころ,
ドイツでは Albert Einstein が特殊相対論を発表した。

この理論によれば,エネルギー $E$ と質量 $m$ は
\begin{equation}
E = mc^{2}
\end{equation}
で関係づけられる。ここに $c$ は光速で,
\begin{equation}
c = 299{,}792{,}458 \, \mathrm{m/s}
\end{equation}
である。
****

岩崎 隆盛 への返信

Re: pandoc で PDF変換 エラー

- 浮亭 夢介 の投稿

岩崎さんご返事ありがとうございます.
そもそもは,岩崎さんのブログを読んでmarkdown/pandoc を知りました.

> -sオプションの追加、出力ファイル名sample.pdf→ sample.tex

これで実行したところ,自分も microtypeパッケージ でエラーになりました.

いろいろ実験してみました.documentclass=ltjltxdoc として次のように実行.
pandoc -s sample.txt -o sample.tex -V documentclass=ltjltxdoc --latex-engine=lualatex
するとWarnningは出ますがpdf は生成されました.

さて,最初の質問のエラーですが,自分のシステムにおいて
alatex209 というディレクトリがあり,これが邪魔していた様で,これを削除し,
pandoc sample.txt -o sample.pdf -V documentclass=ltjltxdoc --latex-engine=lualatex
とするとWarnningもなく,pdf は生成されました.

ご迷惑をおかけしました.


岩崎 隆盛 への返信

Re: pandoc で PDF変換 エラー

- Z. R. の投稿

microtype でエラーが出ることに関しては、要するに「ltjsarticls クラスとmicrotypeパッケージの組み合わせが失敗する」ようです。(つまり pandoc は無関係。)例えば単純に

\documentclass{ltjsarticle}
\usepackage[microtype}
\begin{document}
Test
\end{document}

でも同じエラーになります。

で、このエラーの原因ですが、(完全には追っていないですが今の推定では)次のようなことらしいです。

microtype が微妙なトリックを使っている(具体的には \MT@get@size の箇所)ので、ltjsarticle のように「\normalsize の中で if 文を使っている」場合は失敗する。

microtype のバグといっていいと思いますが、ltjsarticle で次のようにすれば回避できると思います。

\def\ltj@@ifnarrowbaselines{%
  \ifnarrowbaselines\expandafter\@firstoftwo
  \else \expandafter\@secondoftwo
  \fi
}
\renewcommand{\normalsize}{%
  \ltj@@ifnarrowbaselines
    {\@setfontsize\normalsize\@xpt\@xiipt}%
    {\@setfontsize\normalsize\@xpt{\n@baseline}}%
  \abovedisplayskip 11\p@ \@plus3\p@ \@minus4\p@
  ...
}
(\small、\footnotesize も同様に直す)