我必须写很多篇幅很长的报告,在每篇报告的末尾,我都会用一页纸来总结这份文件的所有结果/主线。在撰写所有章节的阶段,我都会将这些相关信息用粗体标出。
我的问题是:有没有办法实现一个函数, 将整个文档中的grep
所有\textbf{}
内容保存到文档末尾的单个页面中?类似于\listoffigures
,但更像\listofmyimportantinformation
- 之类的东西?
答案1
这个想法是创建一个在最后(自动)包含的外部文件。
如果您不想自动包含,您需要注释掉该\AtEndDocument
部分并创建类似的命令
\def\listofmyimportantinformation{\@input{"\jobname.bflist.tex"}}
。
解决方案 1
使用专用命令
以下解决方案使用专用命令来\textbf
标记重要内容。
\documentclass{article}
\usepackage{newfile}
\makeatletter
\AtBeginDocument{%
\newoutputstream{importantlist}
\openoutputfile{"\jobname.importantlist.tex"}{importantlist}}
\def\listofmyimportantstuff{%
\closeoutputstream{importantlist}
\section{The Following Stuffs are Important}
\@input{"\jobname.importantlist.tex"}}
\makeatother
\def\importantstuff#1{%
\textbf{#1}
\addtostream{importantlist}{\textbf{#1}}}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\importantstuff{This is important}
\lipsum[2]
\importantstuff{\textsf{Also this one is}}
\listofmyimportantstuff
\end{document}
解决方案 2
使用\textbf
命令
请注意,此解决方案与最佳实践不同。一旦您重新定义该\textbf
命令,可能会产生意想不到的后果,因为该命令最有可能在内部使用,或者在您不希望它出现在重要内容列表中的地方使用。
\documentclass{article}
\usepackage{newfile}
\makeatletter
\AtBeginDocument{%
\newoutputstream{bflist}
\openoutputfile{"\jobname.bflist.tex"}{bflist}}
\AtEndDocument{%
\closeoutputstream{bflist}
\@input{"\jobname.bflist.tex"}}
\makeatother
\renewcommand{\textbf}[1]{{\bfseries#1}\addtostream{bflist}{{\bfseries#1}}}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\textbf{This text is in bold.}
\lipsum[2]
\textbf{\textsf{Another text in bold.}}
\end{document}