问题描述
我之前已经隐隐约约地明白\input和\include的区别:\input仅仅把另一个文件导入到主tex文件中,不再做其他处理,这就好像使用copy命令将别的文件内容拿过来那样;而\include命令配合使用时,能比较灵活地进行相关的处理,与\includeonly配合时,编译后能让某个\include的内容不显示,其他\include的内容显示,并且可以保持原有的目录结构和页码结构不变,这对于编写一个大型文档非常方便,能促进快速编译又能保持内容稳定。\input却做不到这一点,当你注释掉某个\input时,后面\input的文件中的内容页码就会变成编译前注释掉的那部分\input的页码。所以,通常的学位论文中多个章节的组织时,使用的是\include命令。
按道理说,不管使用\input还是\include,都会把其包含的文件显示出来。可是,今天我遇到的一些现象让我大吃一惊:在自定义的环境中,使用\include命令时显示不出内容,而当使用\input命令时才显示出要包含文件的内容。我今天尽把出现的现象描述下,至于产生这种现象的原因,留给日后探究。
问题具体呈现
我在cls文件中自定义了这样一个环境1:
\newenvironment{Acknowledgement}[1][\@acknowledgementtitle]
{%
\stcleardp
\phantomsection
\addcontentsline{toc}{chapter}{\@acknowledgementtitletoc}
\chapter*{#1}
\fs\wuhao %将致谢字体设置为仿宋 Added by Chen Guangzhi 2016-01-16
}{\par}
于是,我在主文件tex中使用上述的自定义环境Acknowledgement,
\begin{Acknowledgement}
\include{data/ack}
\end{Acknowledgement}
上述代码运行后,文件ack中的内容不能显示出来。但是我将上述代码改为:
\begin{Acknowledgement}
\input{data/ack}
\end{Acknowledgement}
就能正确地得到ack中的内容。
反思
关于上面的问题,留给我日后探究。如果哪位高手能够解释,请指导并回复,谢谢!!
- 请读者不要运行本文中的代码,因为其中含有一些我自定义的命令。这些代码是为了方便我讲述问题使用的,如果确实想运行代码,请把代码中我自定义的命令改成你的定义,或者把它们删除。相信读者能够分辨请,那些是我自定义的命令,那些是 LATEX 本身固有的命令。 ↩