プロットキャプションに (一般的な) リスト コードを追加する必要があります。何らかの理由でlistings
(インライン) が とうまく連携しません\addlegendentry
。同じコードを環境の内外で動作させるにはどうすればよいですか\addlegendentry
?
フレーズが間違った順序になっているという奇妙な結果 (画像を参照) も表示されることに注意してください。
\documentclass[]{article}
\usepackage{pgfplots}
\usepackage[]{listings}
\begin{document}
\lstinline[]|(double x){bbbb}| %ok
\begin{tikzpicture}
\begin{axis}[]
\addlegendentry{\lstinline[]|(double x){bbbb;}|}; %not ok, garbage
\addplot+[mark=none, line join=round, fill opacity = 0.5, ] coordinates {
( 1, 2 )
( 3, 4)
};
\end{axis}
\end{tikzpicture}
\end{document}
私が見つけた回避策の1つは、ケース内に\{
...を入れることですが、そうすることでは、ケースの外側で同じことは起こりません。\}
\legendentry
pgfplot
同じ可能であれば、コードに関係なく、tikzpicture
環境、tikz
パッケージ、またはにlisting
渡す必要があるオプションが解決策になるかもしれません。
(このverb
ような環境はいつも私に頭痛の種を与えます。)
編集: Gonzalo の説明のおかげで、キャプションの内側と外側で同じコードを使用できるこのコードを作成しました。これはハックを使用しています (\textrm
他の解決策も歓迎します)。
\documentclass[]{article}
\usepackage{pgfplots}
\usepackage[]{listings}
\begin{document}
\textrm{\lstinline[]|(double x)\{bbbb\}|} %ok
\begin{tikzpicture}
\begin{axis}[small]
\addlegendentry{\textrm{\lstinline[]|(double x)\{bbbb\}|}}; %now ok
\addplot+[mark=none, line join=round, fill opacity = 0.5, ] coordinates {( 1, 2 )};
\addlegendentry{\lstinline[]|(double x){bbbb;}|}; % not ok, garbage
\addplot+[mark=none, line join=round, fill opacity = 0.5, ] coordinates {( 1, 2 )};
\addlegendentry{\lstinline[]|(double x)\{bbbb\}|}; % not what one expects
\addplot+[mark=none, line join=round, fill opacity = 0.5, ] coordinates {( 1, 2 )};
\end{axis}
\end{tikzpicture}
\end{document}
答え1
内部引数の使用は\lstinline
実験的です。ドキュメントのこのサブセクションを参照してください。
5.1 引数内のリスト
引数内でリスト環境を使用したい場合、考慮すべきことがいくつかあります
\lstinline
。 TeX は "lst- マクロ" が実行される前に引数を読み込むため、このパッケージは入力を保存するために何もできません。スペースは 1 つのスペースに縮小され、タブと行末はスペースに変換され、TeX のコメント文字は印刷できません。 そのため、もう少し作業する必要があります。 次の 4 つの文字の前にバックスラッシュを置く必要があります。\{}%
さらに、次の場合は、同じ方法でスペースを保護する必要があります。(i) 2 つ以上のスペースが連続している場合、または (ii) スペースが行の最初の文字である場合。 それだけでは十分ではありません。 各行は "改行" で終了する必要があります^^J
。 また、このようなリスト内では LaTeX にエスケープすることはできません。
残念ながら、唯一の解決策は、ドキュメントで提案されているように、\{
と を使用することです\}
。
\documentclass[]{article}
\usepackage{pgfplots}
\usepackage[]{listings}
\begin{document}
\begin{tikzpicture}
\begin{axis}[]
\addlegendentry{\lstinline[]|(double x)\{bbbb;\}|};
\addplot+[mark=none, line join=round, fill opacity = 0.5, ] coordinates {
( 1, 2 )
( 3, 4)
};
\end{axis}
\end{tikzpicture}
\end{document}
listings
別の方法としては、インターフェースを使用してfancyvrb
(またはfancyvrb
直接使用して)次の操作を行います。
\documentclass[]{article}
\usepackage{pgfplots}
\usepackage{fancyvrb}
\fvset{commandchars=\\\{\}}
\begin{document}
\Verb!(double x)\{bbbb;\}!
\begin{tikzpicture}
\begin{axis}[]
\addlegendentry{\Verb!(double x)\{bbbb;\}!};
\addplot+[mark=none, line join=round, fill opacity = 0.5, ] coordinates {
( 1, 2 )
( 3, 4)
};
\end{axis}
\end{tikzpicture}
\end{document}