打印宏输出而不是执行

打印宏输出而不是执行

我正在尝试调试 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}将会消除这个输出。

笔记:

代码:

\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}

相关内容