
私がやっていることはこれです:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[commandchars=+\{\}]
Hello, \emph{world}!
Bye, +emph{world}!
\end{Verbatim}
\end{document}
最初の行は としてレンダリングされますがHello, \emphworld!
、これは正しくありません。何らかの理由で、Verbatim
環境は と{
を、}
プレーンな逐語的テキストとしてではなく、特殊文字として扱います。 がなければcommandchars
、最初の行は正しくレンダリングされます。
答え1
commandchars=+\{\}
環境内ではVerbatim
- この文字は
+
カテゴリ コード 0 (エスケープ) を持ち、トークン化中は通常の状況/環境外でVerbatim
バックスラッシュが\
処理されるのと同じように処理されます。 - この文字は
{
カテゴリ コード 1 (グループ開始) を持ち、トークン化中は通常の状況/環境外で処理されるのと同じように処理されますVerbatim
。 - この文字は
}
カテゴリコード 2 (グループ終了) を持ち、トークン化中は通常の状況/環境外で処理されるのと同じように処理されますVerbatim
。
TeXで通常特別な機能を持つ他の文字、例えばバックスラッシュ文字は、これらの特殊文字が割り当てられている逐語的カテゴリコード制度の下でトークン化されます。
- カテゴリコード12(その他)のいずれかであるため、特別な機能はなくなりますが、タイプセット中にフォントのグリフをタイプセットするための指示として使用されます。
␣
またはカテゴリ コード 13 (アクティブ)を定義して、スペース文字などの一部のシンボルのタイプセットを生成したり、復帰文字の改行を実行したりするコマンドに拡張できるようにします。
{
制御記号トークンを作成せずにカテゴリ 1 の文字をトークン化すると、カテゴリ 1 (開始グループ) の明示的な文字トークンが生成されます。制御記号トークンを作成せずにカテゴリ 2 の
文字をトークン化}
すると、カテゴリ 2 (終了グループ) の明示的な文字トークンが生成されます。
カテゴリ 11 (文字) および 12 (その他) の明示的な文字トークンとは異なり、タイプセット中のこのような明示的な文字トークンは、フォントのグリフをタイプセットするための指示ではなく、グループ化 (スコープを区切るか、引数を形成するトークンのセットを区切るかのいずれか) に影響する指示です。
Verbatim
が有効な- 環境内ではcommandchars=+\{\}
、行は
Hello, \emph{world}!
としてトークン化されます。
H11e11l11l11o11,13space13\12e11m11p11h11{1w11o11r11l11d11}2!12carriage return13
\12カテゴリ コード 12 (その他) が原因で発生し、\
LaTeX が制御シーケンス トークンの作成を開始しません。
{1スコープには影響しますが、.pdf ファイルに表示される内容は生成されません。}2
Verbatim
が有効な- 環境内ではcommandchars=+\{\}
、行は
Bye, +emph{world}!
としてトークン化されます。
B11y11e11,13space13\emph{1w11o11r11l11d11}2!12carriage return13
実際に、中括弧をタイプセットするために/ をcommandchars=+\{\}
使用できます。 (と がバランスしていれば、/ を使用することもできます。)+string+{
+string+}
+string{
+string}
{
}
答え2
以下は、ユーザーガイドの16ページからの抜粋です。ファンシーvrbパッケージ:
指定したので
\begin{Verbatim}[commandchars=+\{\}]
文字は通常の設定では の+
ように動作しますが、と はTeX グループのオープナーとクローザーとして動作します。その結果、 は環境内で「world」をイタリック体でレンダリングします。\
{
}
+emph{world}
Verbatim
対照的に、環境\emph{world}
内ではが生成され、すべてのグリフが直立等幅フォントでレンダリングされます。結局のところ、 と をTeXグループの開始と終了として指定したため、それらは特別な意味を持ち、Verbatim
\emphworld
{
}
ない印刷されます。