突出显示 \paragraph 命令参数(如果有标记)

突出显示 \paragraph 命令参数(如果有标记)

为了编辑,我需要\paragraph在文档中标记 s,我想直接在文件中执行此操作.pdf。我想知道是否有办法\paragraph仅在命令已标记的情况下更改命令的布局(例如更改参数的文本颜色)。

这是一个 MWE:

\documentclass[11pt]{article}
\pagestyle{empty}
\usepackage{blindtext}
\begin{document}

\section{Section}

\subsection{Subsection}

\paragraph{Paragraph 1.}
\blindtext

\paragraph{Paragraph 2.}
\label{paragraph2}
\blindtext

\end{document}

我想要这样的东西:

在此处输入图片描述

我的想法是重新定义\paragraph命令,使其在.aux文件中寻找正则表达式并使其相应地运行(但我不知道如何做到这一点)。

答案1

当 LaTeX 找到一个增加计数器的命令(例如\section)时,内部宏\@currentlabel将使用计数器的新值进行设置。下次\label遇到命令时,将从文件中检索当前标签值\@currentlabel并将其存储在.aux文件中,以便\ref命令找到它(请参阅\@currentlabel 如何工作?它如何连接到分段命令/标题?了解更多信息\@currentlabel)。

以下代码在\paragraph遇到命令时存储标签的当前值。然后,在命令中\label,检查当前标签值是否与\paragraph使用命令时相同。如果是,则您仍在该段落中(而不是在下一节中)。在这种情况下,您可以将该段落标记为已标记,例如使用\marginnote

\paragraph可以\label使用xpatch提供命令的包添加相关代码\xpretocmd,用于在命令的原始定义开头添加一些代码。请注意,对于段落,这是可行的,因为段落没有设置任何计数器(它不是编号部分)。如果您使用类似的方法来检查,例如带标签的子部分,那么您需要存储当前标签值计数器增加,即在命令结束时 - 这可能会有问题,因为在 LaTeX 中,命令可能由推迟参数处理的宏链组成,从而为修补带来额外的复杂性。

梅威瑟:

\documentclass[11pt]{article}
\pagestyle{empty}
\usepackage{xcolor}
\usepackage{xpatch}
\makeatletter
\xpretocmd{\paragraph}{\edef\mylabel{\@currentlabel}}{\typeout{paragraph patch ok}}{\typeout{paragraph patch failed}}
\xpretocmd{\label}{\ifx\mylabel\@currentlabel\marginpar{\textcolor{red}{labeled paragraph}}\fi}{\typeout{label patch ok}}{\typeout{label patch failed}}
\makeatother
\def\shortblindtext{Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin.
Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales com-
modo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede.}
\begin{document}

\section{Section}

\subsection{Subsection}

\paragraph{Paragraph 1a.}
\shortblindtext

\paragraph{Paragraph 2a.}
\label{paragraph2}
\shortblindtext

\section{Section}
\label{sec2}
\subsection{Subsection}
\label{subsec2}
\shortblindtext
\paragraph{Paragraph 1b.}
\label{par21}
\shortblindtext

\paragraph{Paragraph 2b.}
\shortblindtext

\end{document}

结果:

在此处输入图片描述

相关内容