![文档环境之外的致谢](https://linux22.com/image/378795/%E6%96%87%E6%A1%A3%E7%8E%AF%E5%A2%83%E4%B9%8B%E5%A4%96%E7%9A%84%E8%87%B4%E8%B0%A2.png)
如何\section
在我的document
环境之外(之前)添加致谢部分(可能不是特别的)?
在我的.cls中,有
\def\@acknowledge{}
...
\def\acknowledge#1{\booltrue{@ack} \gdef\@acknowledge{#1}}
...
\def\ackpage{
\chapter*{Acknowledgments}
\@acknowledge
\newpage
}
但当我把换行符放在
\acknowledge{folks in here}
(看https://www.overleaf.com/latex/templates/virginia-tech-etd-template/cpqhbscstfrx)
答案1
当你使用\def
TeX 的默认行为时不是允许段落中断,作为检查代码中缺少括号或其他错误的机制。
您有以下几种选择:
如果您可以修改,您可以通过制作宏.cls
来使 TeX 允许段落分隔符:\acknowledge
\long
\long\def\acknowledge#1{\booltrue{@ack}\gdef\@acknowledge{#1}}
那么它将允许\par
在参数中使用标记。
或者您可以使用 LaTeX 语法,并使用\newcommand
默认允许段落分隔符:
\newcommand{\acknowledge}[1]{\booltrue{@ack}\gdef\@acknowledge{#1}}
或者,如果您愿意,您可以使用该environ
包并使其acknowledge
看起来更像一个环境:
\usepackage{environ}
\NewEnviron{acknowledge}{%
\booltrue{@ack}%
\global\let\@acknowledge\BODY}
包environ
将环境内容存储在 中\BODY
,那么您只需将其复制到\@acknowledge
即可\let
。默认情况下,这允许段落分隔。
如果你不能更改.cls
,那么您可以绕过 TeX 的检查并使用\endgraf
或\par
换行。例如,如果您有:
\acknowledge{%
folks in
here}
(与 相同\acknowledge{folks in \par here}
)您可以使用:
\acknowledge{folks in\endgraf here}
那么 TeX 就不会知道那里有一个段落分隔符。