我想使用\includegraphics
来排列 EPS 图形(包括 via )。目前,无需任何循环即可完成此操作,如下所示:tabular
\foreach
\begin{tabular}{*5{>{\centering\arraybackslash}m{.15\textwidth}}}
$X_{40}$ & $X_{60}$ & $X_{80}$ & $X_{120}$ & $X_{160}$ \\
\includegraphics[width=.15\textwidth]{./testrun/testvar_type_X_40.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_X_60.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_X_80.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_X_140.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_X_160.eps} \\
\includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_40.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_60.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_80.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_140.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_160.eps} \\
\end{tabular}
如您所见,第二行和第三行有一些冗余。此外,每行中所有列仅在数字 40、60、80、140、160 上有所不同。所以我的想法是,\foreach
在每行中至少使用一个来放置数字。
我这样做的原因是https://tex.stackexchange.com/a/22276。但是,\includegraphics
在其中使用似乎不起作用(Argument of \reserved@a has an extra }
)。这是使用的代码:
\documentclass[draft]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{grffile}
\usepackage{array}
\usepackage{pgffor}
\usepackage{etoolbox}
\begin{document}
\let\tabularContent\empty
\newcommand{\plotChannels}{
\foreach \channel in {40,60,80,120,160}{
\begingroup\edef\x{
\endgroup\noexpand\gappto\noexpand\tabularContent{
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_X_\channel.eps}
}
}\x
}
\gappto\tabularContent{\\}
}
\plotChannels
\begin{tabular}{*6{>{\centering\arraybackslash}m{.15\textwidth}}}
$X_{40}$ & $X_{60}$ & $X_{80}$ & $X_{120}$ & $X_{160}$ \\
\tabularContent
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_40.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_60.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_80.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_140.eps}
& \includegraphics[width=.15\textwidth]{./testrun/testvar_type_Xest_160.eps} \\
\end{tabular}
\end{document}
感谢您的帮助。
答案1
你漏掉\noexpand
了\includegraphics
答案2
\documentclass{article}
\usepackage{pgffor,array,ragged2e}
\usepackage[demo]{graphicx}
\newtoks\tabtoks
\newcommand\addtabtoks[1]{\tabtoks\expandafter{\the\tabtoks#1}}
\newcommand*\printtabtoks{\the\tabtoks}
\begin{document}
\tabtoks{}
\addtabtoks{\tabular{*5{>{\Centering}m{.15\textwidth}}@{}l@{}}}
\addtabtoks{$X_{40}$ & $X_{60}$ & $X_{80}$ & $X_{120}$ & $X_{160}$ \\ }
\foreach\channel in {40,60,80,120,160}{%
\global\addtabtoks{\includegraphics[width=.15\textwidth]{./testrun/testvar_type_X_\channel} &}}
\addtabtoks{\endtabular}
\printtabtoks
\end{document}