
問題の簡単な説明
ヘブライ語の段落に英語のテキストをそのまま埋め込むにはどうすればよいですか?
最小限の実例による問題のデモンストレーション
ファイルに保存されている次の LaTeX コードを検討してください~/Test.tex
。
\documentclass{article}
\usepackage[bidi=basic,provide=*,english,hebrew]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{enumitem}
\begin{document}
א
Hello, world!
א
\foreignlanguage{english}{Hello, world!}
א
\verb|Hello, world!|
א
%\foreignlanguage{english}{\verb|Hello, world!|}
\end{document}
コードでは、 を使ってbabel
、ドキュメントのメイン言語をヘブライ語、セカンダリ言語を英語に設定しています。次に、ドキュメントの本文に、英語のフレーズが埋め込まれた 4 つのヘブライ語の文を出力します。英語のフレーズは感嘆符で終わります。感嘆符は英語のフレーズの一部とみなされるため、英語のフレーズの右側にタイプセットする必要があります。
ターミナルで次のコマンドを実行すると:
> cd ~
> lualatex Test
ファイル~/Test.pdf
が作成されます。PDF ビューアで開くと、以下のように表示されます。(表示の該当部分のみスクリーンショットを撮っています。)
ご覧のとおり、最初の文では感嘆符の位置が間違っています。2 番目の文では、感嘆符を含む英語のフレーズをコマンド内にラップすることで、この問題を修正しています\foreignlanguage{english}{...}
。残念ながら、英語のフレーズがコマンドの引数である場合、同じトリックは機能しません\verb
。ドキュメントの本文の最後のコード行をコメント アウトする必要がありました。そうしないと、ドキュメントがコンパイルされず、~/Test.log
次のメッセージが含まれることになります。
! Missing } inserted.
<inserted text>
}
l.18 \foreignlanguage{english}{\verb|Hello, world!|}
?
! Emergency stop.
<inserted text>
}
l.18 \foreignlanguage{english}{\verb|Hello, world!|}
End of file on the terminal!
望ましい出力は、感嘆符を含む英語のフレーズが、3 番目のタイプセット行でタイプセットするために使用されたのと同じフォントを使用してタイプセットされることを除いて、2 番目のタイプセット行と同様になります。
答え1
\verb
別のコマンドの引数内では問題があります。例では、代わりに環境を\foreignlanguage
使用できます。babel
otherlanguage
\documentclass{article}
\usepackage[bidi=basic,provide=*,english,hebrew]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{enumitem}
\begin{document}
א
Hello, world!
א
\foreignlanguage{english}{Hello, world!}
א
\verb|Hello, world!|
א
\begin{otherlanguage}{english}\verb|Hello, world!|\end{otherlanguage}
\end{document}
他の場合には、\selectlanguage{english}
テキストの前と\selectlanguage{hebrew}
後を使用することも代替手段になります。