For 循环构建表格插入图

For 循环构建表格插入图

我正在尝试构建一个使用 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}

在此处输入图片描述

相关内容