表格环境中的 Latex foreach

表格环境中的 Latex foreach

我正在尝试使用 tikz 包的foreach在表格环境中使用 tikz 包的命令。我知道它不太适合这样做,但我如何才能让以下命令工作(我认为,很明显它的作用是什么应该textbf确实如此,而且我知道该命令也存在一些困难):

\newcommand{\myTable}[1]{
    \begin{tabular}{p{0.35\textwidth}|p{0.65\textwidth}}
        \hline
        Headline 1 & Headline 2 \\
        \foreach \lhs/\rhs in {#1} {
            \textbf{\lhs} & \rhs \\
        }
        \hline
    \end{tabular}
}

梅威瑟:

\documentclass{article}
\usepackage{tikz}

\newcommand{\myTable}[1]{
    \begin{tabular}{p{0.35\textwidth}|p{0.65\textwidth}}
        \hline
        Headline 1 & Headline 2 \\
        \foreach \lhs/\rhs in {#1} {
            \textbf{\lhs} & \rhs \\
        }
        \hline
    \end{tabular}
}

\begin{document}
\myTable{{Title 1}/{Description 1}, {Title 2}/{Description 2}}
\end{document}

答案1

下面的代码有点痛苦,使用\foreach使用蒂克兹

\documentclass{article}
\usepackage{etoolbox}
\usepackage{tikz}
\makeatletter
\newcommand{\myTable}[1]{%
    \def\tabledata{}% reset \tabledata
    \foreach \lhs/\rhs in {#1} {% build table data from #1  
        \protected@xappto\tabledata{\textbf{\lhs} & \rhs \\}
    }%
    \begin{tabular}{p{0.35\textwidth}|p{0.65\textwidth}}
        \hline
        Headline 1 & Headline 2 \\ \hline
        \tabledata \hline
    \end{tabular}
}
\makeatother

\begin{document}
   \myTable{{Title 1}/{Description 1}, {Title 2}/{Description 2}}
\end{document}

诀窍在于您需要先构建表数据,然后将其放入环境中tabular。扩展\\也会导致问题。

更直接的方法是使用\docsvlist使用电子工具箱

\documentclass{article}
\usepackage{etoolbox}
\def\addtablerow#1/#2!{\textbf{#1} & #2\\}
\newcommand{\myTable}[1]{
    \renewcommand*\do[1]{\addtablerow##1!}
    \begin{tabular}{p{0.35\textwidth}|p{0.65\textwidth}}
        \hline
        Headline 1 & Headline 2 \\ \hline
        \docsvlist{#1} \hline
    \end{tabular}
}

\begin{document}
    \myTable{Title 1/Description 1, Title 2/Description 2}
\end{document}

\docsvlist命令将 (当前版本) 应用于\do逗号分隔列表中的每个元素。反过来,\do调用\addtablerow,它需要两个参数,它们由/和分隔!

在这两种情况下,你最终都会得到:

在此处输入图片描述

顺便说一句,在这两种情况下,您都可以删除许多括号 - 如第二个示例所示。

相关内容