如何自动将文档分段信息添加到日志文件中?

如何自动将文档分段信息添加到日志文件中?

是否可以将数据添加到文件.log

例如,我创建了一个 LaTeX 文件,在某个时候,我想输入一个将数据添加到.log文件中的命令。

我不想将某些内容硬编码到 LaTeX 文件中。我想添加一条消息,例如“您现在正在解析第 1 节”。然后在文档的其他地方,我想添加“您现在正在解析第 2 节”。

这可能吗?如果可以,我该如何实现?

答案1

就像我在我的回答中建议的那样你的其它问题,你可以挂接到\section宏中。问题是这\section不是一个简单的宏。它的扩展涉及一个辅助宏\@startsection,而辅助宏又会扩展\@sect参数。您可以阅读第 61.2 节来源2e了解血腥细节,但第一个参数是节的“级别”(sectionsubsection等),第八个参数是节的名称。

您需要一个带有 e-TeX 原语的 TeX 可执行文件才能使用etoolbox包。但你可能不知道。下面的代码将\@sect日志指令添加到命令中。它基本上按照 David 和 Werner 在他们的评论中所建议的那样做,但在每个分段命令之后都会自动执行。

\documentclass{article}
\usepackage{lipsum}
\usepackage{etoolbox}

\makeatletter
\apptocmd{\@sect}{
   \typeout{You are now parsing #1 \expandafter\csname the#1\endcsname, ``#8''}
}
{%
   \typeout{Patch of \string\@sect\space succeeded}
}
{%
   \typeout{Patch of \string\@sect\space failed}
}
\makeatother

\begin{document}

\section{First}
\lipsum[1-2]

\subsection{A subsection}
\lipsum[3-7]

\section{Second}
\lipsum

\section{Third}
\lipsum

\end{document}

以下是控制台输出的片段:

(/usr/local/texlive/2012/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2012/texmf-dist/tex/latex/lipsum/lipsum.sty)
(/usr/local/texlive/2012/texmf-dist/tex/latex/etoolbox/etoolbox.sty
(/usr/local/texlive/2012/texmf-dist/tex/latex/etex-pkg/etex.sty))
Patch of \@sect succeeded
(./Pete.aux)
You are now parsing section 1, ``First''
You are now parsing subsection 1.1, ``A subsection''
[1{/usr/local/texlive/2012/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
You are now parsing section 2, ``Second''
[2]
You are now parsing section 3, ``Third''
[3] [4] [5] (./Pete.aux) )</usr/local/texlive/2012/texmf-dist/fonts/type1/publi
c/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2012/texmf-dist/fonts/type1/public
/amsfonts/cm/cmr10.pfb>
Output written on Pete.pdf (5 pages, 41359 bytes).
Transcript written on Pete.log.

相关内容