在我的手稿中,在某个部分/小节/小子部分中,我希望能够使用命令 foo 在另一个文件中生成某种内容表(看起来像相同的机制),如下所示:
\subsection{Stuff}
some text
\foo{Inside text}
some text again
\subsubsection{Another stuff}
blah blah
\foo{Another inside text}
在本地打印“内部文本”,并将以下条目添加到我的其他文件中:
**Stuff**
Inside text
** Another Stuff **
Another inside text
我怎样才能实现这一点?
答案1
完全改编自我在此处的回答:提取 LaTex 文档的结构,包括注释
您的文档在此mydoc.tex
\documentclass{article}
\newcommand\addxyzline[2]{\addtocontents {xyz}{\protect \xyzline {#1}{#2}}}
\makeatletter
\newcommand\writexyz{\newcommand\xyzline[2]{}\@starttoc{xyz}}
\makeatother
\newcommand\Subsection[1]{\subsection{#1}\addxyzline{Subsection}{#1}}
\newcommand\Subsubsection[1]{\subsubsection{#1}\addxyzline{Subsubsection}{#1}}
\newcommand\foo[1]{#1\addxyzline{par}{#1}}
\begin{document}
%\tableofcontents% CAN UNCOMMMENT TO SEE THAT toc WORKS FINE
\Subsection{Stuff}
some text.
\foo{Inside Text.}
Some text again.
\Subsubsection{Another stuff}
blah blah.
\foo{Another inside text.}
blah-blah.
\writexyz
\end{document}
编译生成
通过\writexyz
该文档的结尾,它还生成一个mydoc.xyz
包含以下内容的文件:
\xyzline {Subsection}{Stuff}
\xyzline {par}{Inside Text.}
\xyzline {Subsubsection}{Another stuff}
\xyzline {par}{Another inside text.}
下列模板将会使用它。
第二个模板文件:
\documentclass{article}
\newcommand\xyzline[2]{\csname#1\endcsname {#2}\par}
\newcommand\Subsection[1]{\medskip**#1**}
\newcommand\Subsubsection[1]{\medskip** #1 **}
\begin{document}
\input{mydoc.xyz}% NAME OF .xyz FILE GOES HERE IN THE ARGUMENT
\end{document}
编译生成