假设我想使用元素多次,这是最好的解决方法(我选择了一个tikz
- 形箭头,因为这让我想到了这个问题,但我想它实际上可以是任何东西):
使用 : 定义新命令
\newcommand
,据我所知,这会导致已定义的命令及其定义被扩展,因此它基本上是一种快捷方式,可以节省反复输入相同代码的时间。对于tikz
下面的示例,这意味着每次都会绘制新的箭头。定义一个 savebox/sbox
\newsavebox
:我不确定这里发生了什么,但假设它类似于通过引用调用,这意味着对象只渲染一次并且结果被“复制”,无论何时\usebox
使用。
对我来说,最终结果看起来相同,但是 - 取决于重用对象的复杂性 - 它可能会导致编译时间的巨大差异,每次出现时渲染与渲染一次,本质上只是复制一张图片。
因此: 应该使用哪种方法?
这是个人喜好问题吗?还是最终结果确实与我简单的箭头示例未显示的细微差异有关?我的假设是否偏离了主题?
澄清代码:
\documentclass{article}
\usepackage{tikz}
\newcommand{\myDownArrow}{\tikz\draw (0,0)--++(10pt,0)--++(0,-10pt)--++(5pt,0)--++(-10pt,-5pt)--++(-10pt,5pt)--++(5pt,0)--cycle;}
\newsavebox{\myDownArrowBox}
\sbox{\myDownArrowBox}{\tikz\draw (0,0)--++(10pt,0)--++(0,-10pt)--++(5pt,0)--++(-10pt,-5pt)--++(-10pt,5pt)--++(5pt,0)--cycle;}
\begin{document}
\verb|\myDownArrow|\myDownArrow \qquad \verb|\usebox{\myDownArrowBox}|\usebox{\myDownArrowBox}
\end{document}
答案1
框是固定的。您可以调整其大小,但除此之外,您无法进行太多更改。当您调用宏时,它会再次执行,因此它可能会根据计数器或颜色等外部条件而有所不同。
\documentclass{article}
\usepackage{tikz}
\tikzset{arrowstyle/.style={}}
\newcommand{\myDownArrow}{\tikz\draw[arrowstyle] (0,0)--++(10pt,0)--++(0,-10pt)--++(5pt,0)--++(-10pt,-5pt)--++(-10pt,5pt)--++(5pt,0)--cycle;}
\newsavebox{\myDownArrowBox}
\sbox{\myDownArrowBox}{\tikz\draw[arrowstyle] (0,0)--++(10pt,0)--++(0,-10pt)--++(5pt,0)--++(-10pt,-5pt)--++(-10pt,5pt)--++(5pt,0)--cycle;}
\begin{document}
\verb|\myDownArrow|\myDownArrow \qquad \verb|\usebox{\myDownArrowBox}|\usebox{\myDownArrowBox}
{\color{green}\verb|\myDownArrow|\myDownArrow \qquad \verb|\usebox{\myDownArrowBox}|\usebox{\myDownArrowBox}}
\tikzset{arrowstyle/.style={line width=2pt, red}}
\verb|\myDownArrow|\myDownArrow \qquad \verb|\usebox{\myDownArrowBox}|\usebox{\myDownArrowBox}
\end{document}