![有條件的輸入](https://linux22.com/image/471944/%E6%9C%89%E6%A2%9D%E4%BB%B6%E7%9A%84%E8%BC%B8%E5%85%A5.png)
我有一个主文档,其中包含其他几个文档的输入。这是我的主文档
\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}