使用用户定义的键值宏填充矩阵行

使用用户定义的键值宏填充矩阵行

我正在尝试创建具有许多列和许多空字段的表格。我想稍后将这些字段引用为 TikZ 节点以在它们周围添加更多 TikZ 内容,所以这\matrix{}看起来是个好主意。我尝试使用\newcommand{\myrow}[number of columns]{row content goes here}来分离行内容和布局,但遇到了 的九个参数限制,\newcommand因此我尝试使用键值接口来添加更多列。问题在于,我尝试的所有键值框架(keyval,,)都会被第一列的列分隔符所抛弃,无论是,还是:从第二列开始,单元格要么为空,包含的键而不是它们的值,要么出现“未定义的控制序列”错误,具体取决于所使用的工具组合。所有这些情况的共同点是,只有第一列包含所需的内容。这不仅适用于,也适用于环境。pgfkeyskeycommand&\&\pgfmatrixnextcell\myrowpdflatex\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 个。

相关内容