LuaLaTeXのverbatimでのフォント指定

LuaLaTeXのverbatimでのフォント指定

- 佐藤 建太 の投稿
返信数: 3
こんにちは。

LuaLaTeXのltjsarticleやltjsbookドキュメントクラスを使い、verbatimの中でUnicode文字を使ったコードを記述しようとしているのですが、フォントの指定がうまく行っていないのか、思ったように表示されません。
articleやbookドキュメントクラスを使うと期待通りの動作になりますが、メインは日本語の文章なのでltjsarticleなどを使いたいです。

試したコードは以下のものです。

\documentclass{ltjsbook}

\usepackage{fontspec}
\setmonofont{DejaVu Sans Mono}

\begin{document}

inline \verb`0b110_00000 ≤ δ ≤ 0b110_11111`

block
\begin{verbatim}
0b110_00000 ≤ δ ≤ 0b110_11111
\end{verbatim}

\end{document}

ltjsbookでは次のように表示されます。英数字はDejaVu Sans Monoになっているようなのですが、ギリシャ文字は別のフォントのようで、不等号は表示されません。

ltjsbookをbookに変えると、次のような期待した出力になります。

環境はUbuntu Desktop 18.04で、TeX Live (おそらく2019)を使っています。
LaTeXはたまに使う程度で、体系的な知識はほとんどありません。

よろしくお願いいたします。
佐藤 建太 への返信

Re: LuaLaTeXのverbatimでのフォント指定

- 佐藤 建太 の投稿
部分的に自己解決しました。以下のようにfontspecではなくluatexja-fontspecを使い、フォントの指定で\setmonojfontというものを使うようにしたら期待したフォントになりました。

\usepackage[match]{luatexja-fontspec}
\setmonofont{DejaVu Sans Mono}
\setmonojfont{DejaVu Sans Mono}

しかしこうすると、不等号やギリシャ文字の後の空白がやや大きくなってしまい、等幅フォントの他の文字と列が揃いません。どうすればこの余計な空白を削除できるでしょうか。
また、ギリシャ文字や不等号はDejaVu Sans Monoのままで、verbatim内の一部で漢字や平仮名を含む日本語を使いたい場合には、どのようにフォントを指定すれば良いでしょうか。
佐藤 建太 への返信

Re: LuaLaTeXのverbatimでのフォント指定

- 前田 一貴 の投稿
LuaTeX-ja では文字を和文文字と欧文文字に分類したうえで和欧混植処理をするのですが,
ギリシャ文字や各種記号類が和文文字に分類されているために,これらを和文のフォントで
出力(和文のフォントに文字がない場合は何も出ない)したうえで,和文文字と欧文文字の間には
適当な量のスペースが挿入されます.詳しくは LuaTeX-ja のドキュメントの4節を参照してください.

解決策ですが,ドキュメントの1.2節の最後にもあるように,

\ltjsetparameter{jacharrange={-2,-3}}

と書いておくと,ギリシャ文字と記号類が欧文文字扱いになります.これでどうでしょうか.


\documentclass{ltjsbook}

\usepackage{luatexja-fontspec}
\setmonofont{DejaVu Sans Mono}
\ltjsetparameter{jacharrange={-2,-3}}

\begin{document}

inline \verb`0b110_00000 ≤ δ ≤ 0b110_11111`

block
\begin{verbatim}
0b110_00000 ≤ δ ≤ 0b110_11111
\end{verbatim}

\end{document}