如何消除 tikz、bodegraph 和 tcblisting 之间的不兼容性

如何消除 tikz、bodegraph 和 tcblisting 之间的不兼容性

您好,我想绘制一些使用 Bodegraph 包和 tcblisting 的代码示例。

如果我将 semilog {} ... 命令放在范围环境中,下面的代码就可以正常工作,另一方面,如果我将此命令直接放在 tikzpicture 环境(注释代码)中,一切都会崩溃(我正在使用 Xelatex)。

如何克服这个问题

% !TeX encoding = utf8
% !TeX spellcheck = fr

\documentclass{article}
\usepackage{tikz}
\usepackage[listings]{tcolorbox}
\usepackage{bodegraph}

\begin{document}


\begin{tcblisting}{tikz lower,listing side text,width=16cm,fonttitle=\bfseries,,colback=white,colframe=black,
righthand width=8cm}
\begin{scope}
[yscale=2/30,xscale=7/5]
\semilog*{-2}{3}{-20}{10}
\end{scope} 
\end{tcblisting}


\begin{tcblisting}{tikz lower,listing side text,width=16cm,fonttitle=\bfseries,,colback=white,colframe=black,
righthand width=8cm}
\begin{tikzpicture}
[yscale=2/30,xscale=7/5]
\draw (0,0) rectangle (3,20);
\end{tikzpicture} 
\end{tcblisting}


\begin{tikzpicture}
[yscale=2/30,xscale=7/5]
\semilog*{-2}{3}{-20}{10}
\end{tikzpicture} 

%\begin{tcblisting}{tikz lower,listing side text,width=16cm,fonttitle=\bfseries,,colback=white,colframe=black,
%righthand width=8cm}
%\begin{tikzpicture}
%[yscale=2/30,xscale=7/5]
%\semilog*{-2}{3}{-20}{10}
%\end{tikzpicture} 
%\end{tcblisting}

\end{document}

在此处输入图片描述

答案1

选项tikz lowertikz upper自动将“隐藏” \begin{tikzpicture}和包含\end{tikzpicture}到列表代码中。您可以在tcolorbox文档中的相应示例中看到它。

因此,当您将这些命令包含到代码中时,您就是在进行嵌套tikzpictures,这是不推荐的。在您的第二个示例中,它可以工作,但在最后一个示例中则不行。

解决方案在于避免这些行。您添加到tikzpicture环境中的可选参数可以添加到tikz lower={...}

% !TeX encoding = utf8
% !TeX spellcheck = fr

\documentclass{article}
\usepackage{tikz}
\usepackage[listings]{tcolorbox}
\usepackage{bodegraph}

\begin{document}


\begin{tcblisting}{tikz lower,listing side text,width=16cm,fonttitle=\bfseries,,colback=white,colframe=black,
righthand width=8cm}
\begin{scope}
[yscale=2/30,xscale=7/5]
\semilog*{-2}{3}{-20}{10}
\end{scope} 
\end{tcblisting}


\begin{tcblisting}{tikz lower,listing side text,width=16cm,fonttitle=\bfseries,,colback=white,colframe=black,
righthand width=8cm}
\begin{tikzpicture}
[yscale=2/30,xscale=7/5]
\draw (0,0) rectangle (3,20);
\end{tikzpicture} 
\end{tcblisting}


\begin{tikzpicture}
[yscale=2/30,xscale=7/5]
\semilog*{-2}{3}{-20}{10}
\end{tikzpicture} 

\begin{tcblisting}{tikz lower={yscale=2/30,xscale=7/5},listing side text,width=16cm,fonttitle=\bfseries,,colback=white,colframe=black,
righthand width=8cm}
%\begin{tikzpicture}[yscale=2/30,xscale=7/5]
\semilog*{-2}{3}{-20}{10}
%\end{tikzpicture} 
\end{tcblisting}

\end{document}

在此处输入图片描述

相关内容