Tikz 节点位于列表中的两列中

Tikz 节点位于列表中的两列中

我想做以下事情。我想遍历一个二维列表,并将 tikz 节点放在两列中。每个元素包含以下信息:节点名称和节点文本。

\documentclass{article}
\usepackage{listofitems}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usepackage{listofitems}
\usepackage{datatool}
\usepackage[utf8]{inputenc}
\usepackage{enumitem}
\DTLsetseparator{,}


\DeclareListParser{\MyListParser}{-}



\newcommand\addcase[3]{\expandafter\def\csname\string#1@case@#2\endcsname{#3}}
\newcommand\makeswitch[2][]{%
  \newcommand#2[1]{%
    \ifcsname\string#2@case@##1\endcsname\csname\string#2@case@##1\endcsname\else#1\fi%
  }
}

\begin{document}

\DTLloaddb{list}{database2.csv}
%\DTLsetseparator{,}
\begin{tikzpicture}
 \matrix (m) [
matrix of nodes, nodes={align=left, text width=3cm}
]
{
\DTLforeach*{list}{\Nummer=zahl,\Texteins=texteins,\Buchstabe=buchstabe,\Textzwei=textzwei} {
        \node ( \Nummer )  { \Nummer \Texteins };   &   \node ( \Buchstabe ) {\Buchstabe \Textzwei}; \\
    }
};
}
\end{tikzpicture}
\end{document}

它最终读取了简单的 .csv 文件。然而 LaTeX 却挂了

先感谢您。

答案1

\documentclass{article}
\usepackage{listofitems}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{shapes.geometric, arrows}
\usetikzlibrary{positioning}
\usetikzlibrary{calc,shapes.multipart,chains}
\usepackage{listofitems}
\usepackage{datatool}
\usepackage[utf8]{inputenc}
\usepackage{enumitem}
\usepackage{varwidth}

\pgfmathsetlengthmacro\breite{5cm}
\pgfmathsetlengthmacro\hoehe{2.567cm}
\pgfmathsetlengthmacro\InnerSep{0.4cm}

\DTLsetseparator{,}


\DeclareListParser{\MyListParser}{-}



\newcommand\addcase[3]{\expandafter\def\csname\string#1@case@#2\endcsname{#3}}
\newcommand\makeswitch[2][]{%
  \newcommand#2[1]{%
    \ifcsname\string#2@case@##1\endcsname\csname\string#2@case@##1\endcsname\else#1\fi%
  }
}


\begin{document}

\DTLloaddb{list}{database2.csv}
%\DTLsetseparator{,}
\begin{center}
\begin{tikzpicture}
\tikzset{
    line/.style={draw, -latex'},
      max width/.style args={#1}{
        execute at begin node={\begin{varwidth}{#1}},
        execute at end node={\end{varwidth}}
    }}
% \matrix (m) [matrix of nodes]{
\DTLforeach*{list}{\Nummer=zahl,\Texteins=texteins,\Buchstabe=buchstabe,\Textzwei=textzwei,\Losung=losung} {
        \node [rectangle, max width=5cm,inner sep=0pt, minimum width=5cm, text width=\breite-\InnerSep,
align=justify](\Nummer)  at (0,-\value{DTLrowi}-0.2) {\Nummer \Texteins~} ;     \node[rectangle, anchor=center,minimum width=8cm, align=justify,max width=8cm,text width=8cm-\InnerSep] (\Buchstabe) at (8,-\value{DTLrowi}-0.2){\Buchstabe \quad \Textzwei\hspace{60pt}};
}
%};


\end{tikzpicture}
\end{center}
\end{document}

好的,基本上,我正在对 CSV 文件进行(逐行)迭代,并使用行号 (-\value{DTLrowi}) 作为 y 坐标,在节点之间的空间中添加另一个 -0.2。我目前正在使用 \matrix 进行解决方案,这样无论文本有多长,它都将是固定的直列。但是,在取消注释 \matrix 部分时,我遇到了问题(“}”似乎丢失了)。

相关内容