pandocでlualatexを使用してmdからpdfに変換ができない

Re: pandocでlualatexを使用してmdからpdfに変換ができない

- liki の投稿
返信数: 5
tlmgr update実施
pandoc 2.11.0.4
lualatex --version
This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/W32TeX)

pandoc test.md -o test.pdf --pdf-engine=lualatex
問題なくpdfに変換できました

しかし、別の問題が発生

test2.md
# test
- [x] test1
- [ ] test2

これが変換できない
Error producing PDF.
! Undefined control sequence.
<recently read> \square
l.63 \item[$\square$]

pdf-engineがlualatexでもxelatexでもエラーで変換できない

pandoc test2.md -s -o test2.tex
変換されたtexファイルを添付します
liki への返信

Re: pandocでlualatexを使用してmdからpdfに変換ができない

- liki の投稿
pandoc 2.11.04と2.10.1ではテンプレートが変更されてるようです
2.10.1では\usepackage{amssymb,amsmath}となっていますが、
2.11.04では\usepackage{amsmath}でamssymbは下記のようになっていました

\usepackage{amsmath}
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\usepackage{amssymb}
\else % if luatex or xetex
$if(mathspec)$
\ifxetex
\usepackage{amssymb}
\usepackage{mathspec}
\else
\usepackage{unicode-math}
\fi
...


liki への返信

Re: pandocでlualatexを使用してmdからpdfに変換ができない

- Z. R. の投稿

PandocのIssueで関連するのはこれですね。

unicode-mathの目的は「数式の文字を(従来のType1フォント群ではなく)OpenTypeフォントで出力する」ことなので、そこでamssymbを読み込むのは意味を成さない、というのは真っ当な議論でしょう。ただそうだとすると、自分の感想としては
「unicode-mathで\square命令が提供されないのが問題ではないか」
と思ってしまいます。

※ちなみに、「チェック付ボックス」を表す\boxtimesはunicode-mathで定義されています。

Z. R. への返信

Re: pandocでlualatexを使用してmdからpdfに変換ができない

- 奥村 晴彦 の投稿
なるほど。ちなみに

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{unicode-math}
\pagestyle{empty}
\begin{document}
$\square \boxtimes$
\end{document}

とすると \square は MSAM10,\boxtimes は Latin Modern Math で,高さが不揃いになってしまいますね。
奥村 晴彦 への返信

Re: pandocでlualatexを使用してmdからpdfに変換ができない

- Z. R. の投稿

\boxtimes(U+22A SQUARED TIMES)と外観が揃うのはU+25A1(WHITE SQUARE)で、これのunicode-mathでの命令名は「\mdlgwhtsquare」のようです。

\documentclass[a4paper]{article}
\usepackage{unicode-math}
%\setmathfont{latinmodern-math.otf}%←既定
%\setmathfont{texgyrebonum-math.otf}
%\setmathfont{texgyredejavu-math.otf}%←揃わない
%\setmathfont{texgyrepagella-math.otf}
%\setmathfont{texgyreschola-math.otf}
%\setmathfont{texgyretermes-math.otf}
\begin{document}
$\boxtimes$      % U+22A0 SQUARED TIMES
$\mdlgwhtsquare$ % U+25A1 WHITE SQUARE
\end{document}

従って、自前で回避するのであれば、次のようにすればいいでしょう。

---
title: テスト
author: 某ZR
documentclass: bxjsarticle
classoption:
  - pandoc
header-includes: |
  \providecommand{\square}{\mdlgwhtsquare}
...

- [ ] ソレ
- [x] アレ
Z. R. への返信

Re: pandocでlualatexを使用してmdからpdfに変換ができない

- liki の投稿
いろいろありがとうございます
フォント周りはややこしいですね

ちなみに直接関係ないですが、pandocとlualatexでwindowsのシステムフォントを使う方法を探していたらこれを見つけました

R Markdown + XeLaTeX で日本語含め好きなフォントを使って PDF を出力する
https://blog.atusy.net/2019/05/14/rmd2pdf-any-font/