pandocで生成したPDFで引用符を正しい順序でかつ英文フォントで出力する方法について

pandocで生成したPDFで引用符を正しい順序でかつ英文フォントで出力する方法について

- 小林 茂 の投稿
返信数: 5
初めまして。pandocで次のようにしてinput.mdからPDFを生成しています。

pandoc input.md -o output.pdf --pdf-engine=xelatex --template=preamble.tex

preamble.texとinput.mdの内容は次のようになっています(和文にUD書体を指定しております)。

preamble.tex:
\usepackage{fontspec}
\setmainfont{Georgia}
\setsansfont{Arial}
\setjamainfont{BIZ UDMincho Medium}
\setjasansfont[BoldFont=BIZ UDGothic Bold]{BIZ UDGothic}

input.md:
---
documentclass: bxjsarticle
classoption: pandoc
papersize: a4
fontsize: 10pt
---

---
documentclass: bxjsarticle
classoption: pandoc
papersize: a4
fontsize: 10pt
---

# はじめに

彼は"Hello, world!"と言いました。

He said, "Hello, world!"

これでPDFの生成自体は問題なくできるのですが、一重および二重の引用符に適用されるのが英文フォント(Georgia/Arial)ではなく和文フォント(BIZ UDMincho Medium/BIZ UDGothic)となり、全角分の幅になってしまいます。また、日本語文章中の引用符の順序が逆になってしまいます(この問題はフォントの設定をしなくても起きるようです)。日本語文章中の引用符の順序を正しくしつつ、引用符に使用するフォントを英文フォントにすることはできないでしょうか。

環境は次のようになります。

TeX 3.141592653 (TeX Live 2023)
pandoc 3.1.2
macOS 12.6.3

何とか自力で解決できないかといろいろ試してみたのですが上手くできないため、どなたかのお知恵をお借りできればと思い投稿させていただいた次第です。お手数をおかけいたしますが、どうぞよろしくお願いいたします。
添付 pandoc test 2023-04-09 20.48.45.png
小林 茂 への返信

Re: pandocで生成したPDFで引用符を正しい順序でかつ英文フォントで出力する方法について

- 和田 勇 の投稿
以下のようなものを追加して「  pandoc input.md -t latex-smart 」
として変換結果を標準出力すると pandoc での変換の問題のようです。

---8<------8<------8<------8<------8<------8<---
  彼は"Hello, world!"と言いました。

  彼は "Hello, world!" と言いました。 ←英文での引用と同じように空白を前後に挿入/追加

  彼は "Hello, world!"と言いました。 ←少なくとも「開始引用符」の前の空白は必要のようです。

  彼は"ようこそ!"と言いました。

  彼は "ようこそ!" と言いました。 ←英文での引用と同じように空白を前後に挿入/追加

  彼は "ようこそ!"と言いました。 ←少なくとも「開始引用符」の前の空白は必要のようです。

---8<------8<------8<------8<------8<------8<---

関連用語としてスマートクォートがあるのですが、
マニュアル等には以前は -S とか --smart のオプションがあったようですが、
スマートクォートされたドキュメントをオフにするような場合には、
以下のようにせよとのことで -S や --smart は削除されています。

   pandoc -f markdown+smart -t markdown-smart.

和田 勇 への返信

Re: pandocで生成したPDFで引用符を正しい順序でかつ英文フォントで出力する方法について

- 小林 茂 の投稿

和田さん、お返事ありがとうございます。ご指摘の通り、Pandocでの変換部分を最初に検証すべきでした。

$ pandoc input.md -o input.tex

のようにして確認したところ、二重引用符の前後にスペースがない場合には、次のように変換されてしまっておりました。

彼は"Hello, world!"と言いました。 ↓ 彼は''Hello, world!{}``と言いました。

これに対して、二重引用符の前後にスペースを追加すると正しく変換されました。

彼は "Hello, world!" と言いました。 ↓ 彼は ``Hello, world!'' と言いました。

当座はこの方法で回避しつつ、Pandocに対して報告しておこうと思います。これでスマートクオートに関する問題はひとまず解決できました。ありがとうございます。

・・・

次の、引用符が和文扱いになってしまう件につきまして、次のようなソースで試してみたところ、問題なく引用符は欧文扱いになりました。

\documentclass[a4paper,xelatex,ja=standard]{bxjsarticle}

\usepackage{fontspec} \setmainfont{Georgia} \setjamainfont{BIZ UDMincho Medium}

\title{テスト} \begin{document} \maketitle

\section{はじめに}

彼は ``Hello, world!'' と言いました。

He said, ``Hello, world!''

\end{document}

こちらもPandocでの変換に起因する問題だったようです。再現性も確認できましたので、Pandocに報告したいと思います。最初に切り分けて確認すべきところ、混在させたまま質問してしまい、大変失礼いたしました。もし、Pandoc側で修正されるなど何か進展がありましたらご報告いたします。

小林 茂 への返信

Re: pandocで生成したPDFで引用符を正しい順序でかつ英文フォントで出力する方法について

- 岩熊 哲夫 の投稿
年寄りです。昔から TeX では ` を二つ,' を二つにすることに
なっていて," を使うことは無いのが基本だったのですが。
最近のはそうじゃなくなっているということなんでしょうか?
小林 茂 への返信

Re: pandocで生成したPDFで引用符を正しい順序でかつ英文フォントで出力する方法について

- 奥村 晴彦 の投稿
そもそもMarkdownで書く段階で "..." ではなく “...” を使うんじゃなかったですか? 次の例では最後の二つが標準的な書き方だと思っていました。

```
彼は"Hello, world!"と言いました。

彼は "Hello, world!" と言いました。

彼は“Hello, world!”と言いました。

彼は “Hello, world!” と言いました。
```

これを変換すると

```
彼は''Hello, world!{}``と言いました。

彼は ``Hello, world!'' と言いました。

彼は``Hello, world!''と言いました。

彼は ``Hello, world!'' と言いました。
```

となります。

あと、岩熊先生、昔から " は '' と解釈されていたようです。つまり ``...'' でも ``..." でも同じでした。
奥村 晴彦 への返信

Re: pandocで生成したPDFで引用符を正しい順序でかつ英文フォントで出力する方法について

- 小林 茂 の投稿
岩熊さん、奥村さん

ご指摘ありがとうございます。Pandocのスマートクオートに頼ろうという横着をしておりました。しかしながら、“...”を使うのが正しいですし、誤変換されてしまう問題もなく確実です。

以降は "..." ではなく明示的に “...” を使うようあらためたいと思います。TeXとは直接関係の無い話題で大変失礼いたしました。