LaTeX在自定义环境中要使用\input才能出效果

问题描述

我之前已经隐隐约约地明白\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中的内容。

反思

关于上面的问题,留给我日后探究。如果哪位高手能够解释,请指导并回复,谢谢!!


  1. 请读者不要运行本文中的代码,因为其中含有一些我自定义的命令。这些代码是为了方便我讲述问题使用的,如果确实想运行代码,请把代码中我自定义的命令改成你的定义,或者把它们删除。相信读者能够分辨请,那些是我自定义的命令,那些是 LATEX 本身固有的命令。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值