我是 LaTeX 和 TikZ 的新手。我有以下 TikZ 命令
\newdimen{\tempx}
\newdimen{\tempy}
\pgfextractx\tempx{\pgfpointanchor{node1}{west}};
\pgfextractx\tempy{\pgfpointanchor{node2}{east}};
\pgfmathsetlengthmacro{\tempwidth}{\tempy-\tempx-\pgflinewidth};
我想大量重用该代码片段,使用如下封装的命令
\extractwidth{node1.west,node2.east,\tempwidth}
是否可以使用\newcommand
或类似方法封装上述命令?谢谢
答案1
也许是这样的,使用最新的 LaTeX 2ε-kernels/xparse 包中模块 ltcmd.dtx 的\NewDocumentCommand
参数预处理器和不是那么新的 LaTeX 2ε-kernels。\SplitArgument
%\usepackage{xparse}
\newdimen{\tempx}
\newdimen{\tempy}
\NewDocumentCommand\extractwidth{>{\SplitArgument{2}{,}}m}{%
% Split #1 at commas, you get something like
% \extractwidthdotsplit{node1.west}{node2.east}{\tempwidth}%
\extractwidthdotsplit#1%
}%
\NewDocumentCommand\extractwidthdotsplit{>{\SplitArgument{1}{.}}m>{\SplitArgument{1}{.}}mm}{%
% Split the first two arguments at dot, you get something like
% \extractwidthsplittedt{node1}{west}{node2}{east}{\tempwidth}%
\extractwidthsplitted#1#2{#3}%
}%
\NewDocumentCommand\extractwidthsplitted{mmmmm}{%
\pgfextractx\tempx{\pgfpointanchor{#1}{#2}};%
\pgfextractx\tempy{\pgfpointanchor{#3}{#4}};%
\pgfmathsetlengthmacro{#5}{\tempy-\tempx-\pgflinewidth};%
}%
%...
\extractwidth{node1.west,node2.east,\tempwidth}%