如果条件由循环变量控制

如果条件由循环变量控制

我想根据循环中变量的变化来打印一些图像:如果变量group为 1,则不应打印图像。但如果值为group2,则应打印图像。所以我正在寻找一种“if”条件。

我已经查看了 LaTeX 中的 if 条件,但没有找到适合我的情况的解决方案(使用循环中变化的变量控制 if)。

\newcounter{group}
\newcounter{subj}
\newcounter{number_of_runs_simona}
\forloop{group}{1}{\value{group} < 2}{
    \forloop{subj}{1}{\value{subj} < 2}{
    \forloop{number_of_runs_simona}{1}{\value{number_of_runs} < 26}{
    \centering

    \textbf{\large Group \arabic{group}, Subject \arabic{subj}, Run \arabic{number_of_runs}}

    \begin{figure}[!ht]
      \centering
        \includegraphics{\FILENAMEONE{\arabic{group}}{\arabic{subj}}{\arabic{number_of_runs_simona}}}
    \end{figure}

    \clearpage
    }
    }
    }

仅当变量group的值为 2 时,才应打印图“FILENAMEONE”。

非常感谢您的帮助。

答案1

像这样吗?

\documentclass{article}

\begin{document}

\newcount\group
\newcount\subj
\newcount\nors

\group=0
\loop
  \advance\group by 1
  \subj=0
  {\loop
     \advance\subj by 1
     \nors=0
     {\loop
       \advance\nors by 1
        {
          group \the\group, subject \the\subj, run \the\nors
          \par
          \ifnum\group=2
            \begin{figure}[h!]
              \centering
              \emph{includegraphics filenameone-\the\group-\the\subj-\the\nors}
              \caption{Test of filenameone-\the\group-\the\subj-\the\nors}
            \end{figure}
            \par
          \fi
        }
        \ifnum\nors<26
      \repeat}
     \ifnum\subj<2  
   \repeat}
  \ifnum\group<2
\repeat

\end{document} 

抱歉,我一直混合使用低级\if命令和计数器定义,即使这可能是一种不好的做法。

我不确定\ifnum\value{group}=2在您的情况下会如何工作,但也许这就是您需要围绕您的figure环境来使您的原始示例正常工作的全部内容......

答案2

如果您不介意额外的包,pgffor提供 foreach-loops 会很方便。

\documentclass{article}
\usepackage{graphicx}
\usepackage{pgffor}

\begin{document}

test

\foreach \n in {1,...,2}{
    \ifnum\n=2%
        \includegraphics{pic}%
    \fi%
}

\end{document}

相关内容