对具有相似标题的多个文件进行子归档的更好方法?

对具有相似标题的多个文件进行子归档的更好方法?

我有一套讲义,每个讲座都包含在一个子文件中,主文件包含所有讲座的列表,如下所示:

\subfile{lec-1}
\subfile{lec-2}
% more files labeled lec-X
\subfile{lec-26}

每次我需要将视图设置为某些讲座/完整文档时,我都需要手动评论/取消评论,并且我希望有一些不那么繁琐的事情。

有没有更好的方法来组织这些?也许一个简单的 foreach 循环就可以了,但是有没有更优雅的解决方案?谢谢!

答案1

您可以使用\foreachfrompgffor包来避免重复所有内容\subfile

multiaudience可以设置两个(或更多)“受众”,即文档的版本。
在我的 MWE 中,complete打印所有内容,并onlysome打印子文件 1、3 和 4。

您可以通过简单地注释/取消注释以下两行之一来选择使用哪一个:

%\DefCurrentAudience{onlysome} 
\DefCurrentAudience{complete} 

以下是完整的 MWE:

\documentclass{book}

\usepackage{pgffor}
\usepackage{multiaudience}
\SetNewAudience{complete}
\SetNewAudience{onlysome} 

\usepackage{subfiles}

\begin{document}

%\DefCurrentAudience{onlysome} 
\DefCurrentAudience{complete} 

\begin{shownto}{complete}
\foreach \ind in {1,...,26}
    {\subfile{lec-\ind}}
\end{shownto}

\begin{shownto}{onlysome}
\foreach \ind in {1,3,4}
    {\subfile{lec-\ind}}
\end{shownto}

\end{document}

答案2

如下parts.sty所示,您可以在一开始指定要包含哪些部分,如下所示:

\documentclass{article}
\usepackage{parts}
\onlyParts{basic}
%\onlyParts{basic,advanced}% typeset all
\begin{document}
\Part{basic}{\subfile{lec-1}}
\Part{advanced}{\subfile{lec-2}}
\Part{basic}{\subfile{lec-3}}
\Part{advanced}{\subfile{lec-4}}
\end{document}

如果您想通过讲座编号指定包含的材料,您可以使用自定义命令更简洁地​​完成\myPart

\documentclass{article}
\usepackage{parts}
\newcommand\myPart[#1]{\Part{#1}{\subfile{lec-#1}}}
\onlyParts{2,4}
\begin{document}
\myPart{1}
\myPart{2}
\myPart{3}
\myPart{4}
\end{document}

这是的代码parts.sty

\newcommand\onlyParts[1]{\def\parts@only{#1}}
\onlyParts{}
\newcommand\Part[2]{%
  \def\parts@this{#1}%
  \@for\parts@that:=\parts@only\do{%
    \ifx\parts@this\parts@that
      #2%
    \fi  
  }%
  \ignorespaces
}

此实用程序不仅限于加载子文件,您还可以将其与文本和其他代码一起使用。

\documentclass{article}
\usepackage{parts}
\onlyParts{Monday,Wednesday}
\begin{document}
\Part{Monday}{On Mondays, we recover from the weekend. }
\Part{Tuesday}{On Tuesdays, we work from nine to five. }
\Part{Wednesday}{On Wednesdays, we prepare for the rest of the week. }
\Part{Monday}{On a second thought, we should also get something done on Mondays. }
\end{document}

在此处输入图片描述

相关内容