我正在尝试创建具有许多列和许多空字段的表格。我想稍后将这些字段引用为 TikZ 节点以在它们周围添加更多 TikZ 内容,所以这\matrix{}
看起来是个好主意。我尝试使用\newcommand{\myrow}[number of columns]{row content goes here}
来分离行内容和布局,但遇到了 的九个参数限制,\newcommand
因此我尝试使用键值接口来添加更多列。问题在于,我尝试的所有键值框架(keyval
,,)都会被第一列的列分隔符所抛弃,无论是,还是:从第二列开始,单元格要么为空,包含的键而不是它们的值,要么出现“未定义的控制序列”错误,具体取决于所使用的工具组合。所有这些情况的共同点是,只有第一列包含所需的内容。这不仅适用于,也适用于环境。pgfkeys
keycommand
&
\&
\pgfmatrixnextcell
\myrow
pdflatex
\matrix{}
tabular
为了举例说明,我使用keycommand
接口和 a tabular
,因为这是最短的组合:
\documentclass{standalone}
\usepackage{keycommand}
\newkeycommand{\myrow}[keyA=defaultA, keyB=defaultB]{%
\commandkey{keyA} & \commandkey{keyB} \\
}
\begin{document}
\begin{tabular}[t]{ll}
\myrow[keyA=this, keyB=that]
\myrow[keyA=see, keyB=me]
\end{tabular}
\end{document}
这使:
我将非常感激您解释发生了什么以及如何解决这个问题。该示例仅显示了我认为的根本问题,但请记住,建议也应与 TikZ 节点矩阵兼容。
答案1
仅供参考,我最终放弃\matrix{}
并使用手工定位:
\documentclass{standalone}
\usepackage{keycommand}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\newkeycommand{\myrow}[keyA=defaultA, keyB=defaultB, keyC=defaultC]{%
\node (A) at ($(0, 0) - (pos)$) [anchor=east]{\commandkey{keyA}};
\node (B) at ($(4, 0) - (pos)$) [anchor=west]{\commandkey{keyB}};
\node (C) at ($(40, 0) - (pos)$) [anchor=west]{\commandkey{keyC}};
\coordinate (pos) at ($(pos) + (0, 18)$);
}
\begin{document}
\begin{tikzpicture}[node distance=0cm,inner xsep=0pt,x=1pt,y=1pt]
\tikzstyle{every node}+=[text height=0.6em,text depth=0.1em]
\coordinate (pos) at (0, 0);
\myrow[keyA=this, keyB=that]
\myrow[keyA=see, keyB=me]
\end{tikzpicture}
\end{document}
它适用于许多键值对。我试过 18 个。