我正在为我组织的备忘录和报告创建样式表。我需要在使用该样式创建的每个报告中包含免责声明类型的声明。我使用基于基本文章类的类文档 (*.cls)。有没有办法强制声明出现在每份报告中?我不希望它出现在每页上,而是出现在每份文档的开头或结尾,最好出现在结尾。
答案1
etoolbox
本试验使用命令AfterPreamble
和标准 LaTeX 钩子将语句(包括当前时间、日期、总页数和文件名)设置为第一页的页脚,并为最后一页设置一些类似的内容\AtEndDocument
。
我发现,应该能够打印语句并使其出现在第一页上\AtBeginDocument
。
\documentclass{report}
\usepackage{etoolbox} %important for \AfterPreamble
% Eye candy and other commands, only relevant to what
% should be written at begin / end of document.
\usepackage{datetime}%
\usepackage{blindtext}%
\usepackage{xcolor}%
\usepackage{scrpage2}%
\newcounter{TotalPageNumber}%
\newrobustcmd{\WriteBeginDocumentStatement}[1][]{%
\noindent\textbf{\textcolor{blue}{This document with \theTotalPageNumber~page(s) named "\jobname.tex" was generated at
\currenttime~ on \today} #1}\par
}
\newrobustcmd{\WriteEndDocumentStatement}{%
\noindent\textbf{\textcolor{blue}{End of "\jobname.tex" at
\currenttime~ on \today}}\par
}
\AfterPreamble{%
\cfoot{%
\ifnumless{\number\value{page}}{2}{% Only on first page!
\parbox{0.8\textwidth}{%
\WriteBeginDocumentStatement[ -- inserted from \texttt{\(\backslash\)AfterPreamble}]
}}{%
% nothing else
}}
}%
\AtBeginDocument{%
\WriteBeginDocumentStatement[ -- inserted from \texttt{\(\backslash\)AtBeginDocument}]%
}%
\makeatletter
\AtEndDocument{%
\cfoot{%
\WriteEndDocumentStatement}%
\immediate\write\@auxout{\string\setcounter{TotalPageNumber}{\number\value{page}}}
}%
\makeatother
\pagestyle{scrheadings}
\begin{document}
\blindtext
\newpage
\blindtext[8]
\newpage
\blindtext
\end{document}
注意:屏幕截图已被裁剪!