![让子文件声明要包含在文档不同位置的部分](https://linux22.com/image/273440/%E8%AE%A9%E5%AD%90%E6%96%87%E4%BB%B6%E5%A3%B0%E6%98%8E%E8%A6%81%E5%8C%85%E5%90%AB%E5%9C%A8%E6%96%87%E6%A1%A3%E4%B8%8D%E5%90%8C%E4%BD%8D%E7%BD%AE%E7%9A%84%E9%83%A8%E5%88%86.png)
我想要几个 Latex 文件,导入或包含在主document.tex
文件中,这些文件声明要包含在主文件中的不同部分,例如:
% in file a.tex
\begin{notes}
My notes from file A
\end{notes}
\begin{examples}
An example from file A
\end{examples}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% in file b.tex
\begin{notes}
My notes from file B
\end{notes}
\begin{examples}
An example from file B
\end{examples}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% in file document.tex
\section{Notes}
% input notes from a.tex and b.tex
\section{Examples}
% input examples from a.tex and b.tex
并有以下输出:
Notes
My notes from file A
My notes from file B
Examples
An example from file A
An example from file B
我可以有 4 个单独的文件而不是 2 个(a.notes.tex
、a.examples.tex
等),但如果可能的话,我想将与之相关的所有内容保存a
在一个文件中。您知道是否有办法实现此行为?
答案1
当然,您可以使用collect
包。在文件中,使用document.tex
声明两个集合(notes
和examples
)\definecollection
,并使用 定义两个关联环境(note
和example
)collect
:
\usepackage{collect}
\definecollection{notes}
\definecollection{examples}
\makeatletter
\newenvironment{note}
{\@nameuse{collect}{notes}{\par\noindent}{\par}{}{}}
{\@nameuse{endcollect}}
\newenvironment{example}
{\@nameuse{collect}{examples}{\par\noindent}{\par}{}{}}
{\@nameuse{endcollect}}
\makeatother
在每个文件中a.tex
,b.tex
您可以使用这些环境来编写您的注释和示例:
文件a.tex
:
\begin{note}
First note in file \texttt{a.tex}.
\end{note}
\begin{note}
Second note in file \texttt{a.tex}.
\end{note}
\begin{note}
Third note in file \texttt{a.tex}.
\end{note}
\begin{example}
First example in file \texttt{a.tex}.
\end{example}
\begin{example}
Second example in file \texttt{a.tex}.
\end{example}
文件b.tex
:
\begin{note}
First note in file \texttt{b.tex}.
\end{note}
\begin{note}
Second note in file \texttt{b.tex}.
\end{note}
\begin{example}
First example in file \texttt{b.tex}.
\end{example}
\begin{example}
Second example in file \texttt{b.tex}.
\end{example}
\begin{example}
Third example in file \texttt{b.tex}.
\end{example}
然后,在document.tex
包含文件a
和必须包含集合的位置b
使用。完整的示例如下:\includecoleection
document.tex
文件document.tex
:
\documentclass{article}
\usepackage{collect}
\definecollection{notes}
\definecollection{examples}
\makeatletter
\newenvironment{note}
{\@nameuse{collect}{notes}{\par\noindent}{\par}{}{}}
{\@nameuse{endcollect}}
\newenvironment{example}
{\@nameuse{collect}{examples}{\par\noindent}{\par}{}{}}
{\@nameuse{endcollect}}
\makeatother
\input{a}\input{b}
\begin{document}
\section{Notes}
\includecollection{notes}
\section{Examples}
\includecollection{examples}
\end{document}
结果如下: