有條件的輸入

有條件的輸入

我有一个主文档,其中包含其他几个文档的输入。这是我的主文档

\documentclass[11pt, a4paper]{article}
\newcommand{\years}[1]{\textbf{Years} #1}
\newcommand{\corps}[1]{#1}


\begin{document}

%\input{0022}
\input{0086}
% other input here

\end{document}

这是我的一个输入

\years{
\begin{itemize}
\item 2023
\item 2021
\item 2007
\end{itemize}}


\corps{lalala}

我希望我的输出仅包含“years”命令中没有“2022”的文件。也就是说,不输入“years”命令中带有 2022 的文件。

目前的条件是在“年份”命令中,但它可以在任何地方/任何其他地方。

我该怎么做?非常感谢,抱歉我的英语不好!

答案1

正如 Alan Munn 在评论中提到的,可能有更好的方法来组织这些数据。但这里有一个简单的方法来满足您的要求。该\years命令现在采用逗号分隔的年份列表,并假定它出现在文件顶部\input并且只在该文件中出现一次。

\begin{filecontents}{testA.tex}
\years{2023,2021,2007}

\corps{lalala}
\end{filecontents}

\begin{filecontents}{testB.tex}
\years{2022,1986,1524}

\corps{some text}
\end{filecontents}

\begin{filecontents}{testC.tex}
\years{1066,1975}

\corps{some more text}
\end{filecontents}

\documentclass{article}

\newcommand{\corps}[1]{#1}

\ExplSyntaxOn

\clist_new:N \l_laura_years_clist

\NewDocumentCommand { \years } { m }
  {
    \clist_set:Nn \l_laura_years_clist { #1 }
    \clist_if_in:NnTF \l_laura_years_clist { 2022 }
      { \endinput }
      {
        \subsubsection*{Years}
        \begin{itemize}
        \clist_map_inline:Nn \l_laura_years_clist
          { \item ##1 }
        \end{itemize}
      }
  }

\ExplSyntaxOff

\begin{document}

\input{testA}

\input{testB}

\input{testC}

\end{document}

列表

相关内容