我正在尝试构建一个使用 minipage 环境的双列表。在 \xdef 块中,我无法使用“minipage”,但在 \gdef 中可以使用。我的目的是在整个页面中构建这样的双表。我该如何解决这个问题?
\def\TEMP{}%
\foreach \n in {0,...,2}
{
\xdef\TEMP {\unexpanded\expandafter{\TEMP}\noexpand
\begin{minipage}{.25\textwidth}
\includegraphics[width=\line{figure\n.png}%
\end{minipage}
}%
\expandafter\gdef\expandafter\TEMP\expandafter{\TEMP
&
\begin{minipage}[!htb]{.2\textwidth}
Name:\\name figure\\\\
id:\\ id figure
\end{minipage}
\\ \hline
}%
}%
\begin{table}[!htb]
\begin{tabular}{ | c | c | }
\hline
Figure & Info \\ \hline \hline
\TEMP
\end{tabular}
\end{table}
答案1
这是一个不同的方法,它有一个界面,\int_step_function:nnnN
甚至可以用来构建表。
\documentclass{article}
\usepackage{booktabs}
\usepackage[draft]{graphicx}
\ExplSyntaxOn
\NewDocumentCommand{\forintegers}{mO{1}mm}
{ % #1 = start, #2 = step (optional, default 1)
% #3 = end, #4 = template
\fabri_forintegers:nnnn { #1 } { #2 } { #3 } { #4 }
}
\cs_new_protected:Nn \fabri_forintegers:nnnn
{
\cs_gset:Nn \__fabri_forintegers_function:n { #4 }
\int_step_function:nnnN { #1 } { #2 } { #3 } \__fabri_forintegers_function:n
}
\cs_new:Nn \__fabri_forintegers_function:n {} % initialize
\ExplSyntaxOff
\begin{document}
\begin{table}[!htp]
\begin{tabular}{ @{} c c @{} }
\toprule
Figure & Info \\
\midrule \addlinespace
\forintegers{0}{2}{%
\begin{minipage}{0.25\textwidth}
\includegraphics[width=\textwidth]{figure#1.png}
\end{minipage}
&
\begin{minipage}{0.2\textwidth}
Name: \\ name figure \\[2ex] id: \\ id figure
\end{minipage}
\\ \addlinespace
}
\bottomrule
\end{tabular}
\end{table}
\end{document}
的第一个参数\forintegers
是起点;接下来是步骤的可选参数(默认为 1),然后是终点。最后一个参数是一个模板,其中#1
代表循环中的当前整数。
注意:该draft
选项用于生成虚假图像。
你也可以用 来实现\foreach
,但是比较笨拙。只需定义一个可以传递 ( 的扩展) 的本地宏即可\n
。此处的表格是按规则排版的,仅供比较。
千万不要\\\\
“留下垂直空间”。
\documentclass{article}
\usepackage{pgffor}
\usepackage[draft]{graphicx}
\begin{document}
\begin{table}[!htb]
\gdef\TEMP{}% initialize
\newcommand{\tablecell}[1]{%
\begin{minipage}{.25\textwidth}
\includegraphics[width=\linewidth]{figure#1.png}%
\end{minipage}%
&
\begin{minipage}{.2\textwidth}
Name:\\name figure\\[2ex]
id:\\ id figure
\end{minipage}
\\ \hline
}
\foreach \n in {0,...,2}{%
\xdef\TEMP{\unexpanded\expandafter{\TEMP}\noexpand\tablecell{\n}}%
}
\begin{tabular}{ | c | c | }
\hline
Figure & Info \\ \hline \hline
\TEMP
\end{tabular}
\end{table}
\end{document}