我目前正在研究如何使用pgfkeys
,但遇到了以下问题。我试图定义一个命令来打印表格的一部分,并用通过提供的参数填充pgfkeys
。我的情况的简化版本如下所示:
\documentclass{article}
\usepackage{pgfkeys,xparse}
\pgfkeys{
/test/.is family, /test,
right/.estore in=\testright,
left/.estore in=\testleft,
}
\NewDocumentCommand{\tablepart}{o}{
\pgfkeys{/test,#1}
\testleft{} & \testright{} \\
\testleft{} & \testright{} \\
}
\begin{document}
\begin{tabular}{rl}
\tablepart[left={ABC},right={DEF}]{}
\end{tabular}
\end{document}
Undefined control sequence
但是,此设置在 上出现错误。但是,如果我删除定义中的\tablepart[left={ABC},right={DEF}]{}
& 符号和,错误就会消失。我在这里做错了什么?\\
\tablerow
答案1
表格单元格是一个组,因此所有定义都会重置&
但是,您仍然可以在第一个单元格中扩展该命令。
\documentclass{article}
\usepackage{pgfkeys,xparse}
\newcommand\hmm{&}
\pgfkeys{
/test/.is family, /test,
right/.estore in=\testright,
left/.estore in=\testleft,
}
\NewDocumentCommand{\tablerow}{o}{
\pgfkeys{/test,#1}
\testleft{} \expandafter\hmm\testright{} \\
}
\begin{document}
\begin{tabular}{rl}
\tablerow[left={ABC},right={DEF}]{}
\end{tabular}
\end{document}
或者针对后来添加的版本(\ExpandArgs
在 2022 LaTX 中预定义,但也可以针对旧版本定义)
\documentclass{article}
\usepackage{pgfkeys,xparse}
\def\hmm#1#2{#1\\#1\\}
\pgfkeys{
/test/.is family, /test,
right/.estore in=\testright,
left/.estore in=\testleft,
}
\NewDocumentCommand{\tablepart}{o}{
\pgfkeys{/test,#1}
\ExpandArgs{oo}\hmm{\testleft}{\testright}
}
\begin{document}
\begin{tabular}{rl}
\tablepart[left={ABC},right={DEF}]{}
\end{tabular}
\end{document}