我正在尝试调试 Tikz/PGF 脚本。我有一个生成 Tikz/PGF 脚本的 STY 文件,但输出图形并不完全符合我的要求。
为了调试该问题,我希望可以调整我的代码,以便将 Tikz/PGF 脚本打印到 LaTeX 文档(例如,在 verbatim 环境中),而不是由 tikzpicture 执行。
以下是我所追求的一个小例子:
\documentclass[a4paper]{report}
\usepackage{tikz}
\newcommand\theCommand[1]{%
\node [rectangle, draw, fill=blue!20, text width=5em, text centered, rounded corners, minimum height=4em] {#1};%
}
\begin{document}
\begin{tikzpicture}
\theCommand{test}
\end{tikzpicture}
\end{document}
此代码将绘制一个矩形框,其中包含文本“test”。但是,理想情况下,我希望打印出文本:
\node [rectangle, draw, fill=blue!20, text width=5em, text centered, rounded corners, minimum height=4em] {test};
答案1
不确定这对你有多大用处,但这里有两个选项。也许你可以根据自己的具体情况调整一个:
1.showexpl
包装:
我建议你使用包裹showexpl
,它将排版内容并列出 LaTeX 代码:
代码:
\documentclass{article}
\usepackage{showexpl}
\usepackage{tikz}
\lstdefinestyle{myLatexStyle}{
language=TeX,
basicstyle=\small\ttfamily,
backgroundcolor=\color{yellow},
numbers=left, numberstyle=\tiny, stepnumber=2, numbersep=5pt,
commentstyle=\color{red},
showstringspaces=false,
keywordstyle=\color{blue}\bfseries,
morekeywords={align,begin},
pos=l
}
\begin{document}
\begin{LTXexample}[style=myLatexStyle, pos=b]
\begin{tikzpicture}
\node [rectangle, draw, fill=blue!20, text width=5em, text centered,
rounded corners, minimum height=4em] {test};
\end{tikzpicture}
\end{LTXexample}
\end{document}
2.替换\node
宏:
上述解决方案将仅显示环境中的代码LTXexample
。因此,如果您仍想使用单独的绘图宏,则上述内容将仅显示\theCommand{test};
在输出中,这不会提供太多信息。另一种方法是替换:
\newcommand\theCommand[1]{%
\node [rectangle, draw, fill=blue!20, text width=5em, text centered,
rounded corners, minimum height=4em] {#1};%
}
\ShowAndExecuteNode
代替使用\node
:
\newcommand\theCommand[1]{%
\ShowAndExecuteNode[rectangle, draw, fill=blue!20, text width=5em, text centered,
rounded corners, minimum height=4em]{#1}%
}
然后你得到输出:
注释掉\AtEndDocument{\TikzCodeList}
将会消除这个输出。
笔记:
- 这改编自 Herbert 的解决方案如何保存字符串的运行列表,然后逐个处理它们在文档末尾打印宏的选项。
- 不确定这有多么有用,因为这取决于图片其余部分的绘制方式。
代码:
\documentclass{article}
\usepackage{tikz}
\newcommand\TikzCodeList{}%
\newcommand\AddTikzCode[1]{\xdef\TikzCodeList{\TikzCodeList#1\endgraf}}%
\AtEndDocument{\TikzCodeList}%
\newcommand{\ShowAndExecuteNode}[2][]{%
\node [#1] {#2};
\AddTikzCode{node [#1] #2}%
}%
\newcommand\theCommand[1]{%
\ShowAndExecuteNode[rectangle, draw, fill=blue!20, text width=5em, text centered, rounded corners, minimum height=4em]{#1}%
}
\begin{document}
\begin{tikzpicture}
\theCommand{test};
\end{tikzpicture}
\end{document}