将 cleveref 宏转换为标准 LaTeX

将 cleveref 宏转换为标准 LaTeX

我的目标是创建一个函数,以交互方式将包(、等)Emacs Lisp提供的宏转换为标准 LaTeX:cleveref\cref\Cref

例如:
\cref{sec:1} --> section~\ref{sec:1}.

为了实现这个结果,我考虑以这种方式重新定义 cleveref 提供的宏:

\documentclass{article}
\usepackage{hyperref}
\usepackage{cleveref}

\NewCommandCopy{\oldcref}{\cref}

\RenewDocumentCommand{\cref}{ m }{%
  \typeout{\oldcref{#1}}
\oldcref{#1}}

\begin{document}

\section{First section\label{sec:1}}

\cref{sec:1}

\section{Second section\label{sec:2}}
\cref{sec:1,sec:2}

\end{document}

这将打印在日志文件中:
\oldcref {sec:1}
我需要打印它:
\cref{sec:1} --> section~\ref{sec:1}

更重要的是:\cref{sec:1,sec:2}应该纳入文件
\cref{sec:1,sec:2} --> sections~\ref{sec:1} and \ref{sec:2}
.log

像这样的输出也可能是合适的(也许更容易获得):
\cref{sec:1,sec:2} --> sections 1 and 2

这是可行的吗?它是否是一个足够强大的解决方案,可用于科学文档编辑工作流程?

我开始考虑这样的解决方案,因为在很多情况下,软件包poorman提供的选项cleveref不起作用(Cleveref 的 poorman 选项不适用于 hyperref)。

在文件中(或专用的辅助文件中)拥有这样的列表.log将允许它用于将定义的宏转换为cleveref标准LaTeX,我相信它对很多人都有用。

就目前而言,只需扩展\cref\Cref宏对我来说就足够了。

(最终目标可能是一个宏,它将要扩展的宏作为参数,然后逐一进行适当的重新定义:

\expandCleverefs{\cref,\Cref, etc.}

但以防万一,我会提出另一个问题。)

笔记。我尝试提供所有必要的信息以“帮助您帮助我”。在寻求帮助之前,我尝试使用我掌握的所有资源(Google、手册、AI......)来解决问题,但我有局限性。我非常尊重您为帮助我而投入的时间,并对此心怀感激。

已添加注释。我的工作是编辑科学家撰写的科学论文,每个科学家的用法LaTeX都不同。我的任务是将它们标准化,以符合我们出版的期刊的风格。从实用角度来说,我不需要做 选项所做的所有事情cleverefpoorman而是重新定义\cref\Cref,它们是包的主要宏。由于我可以使宏转换具有交互性,因此在识别潜在错误时应该不会遇到任何问题。从生成辅助文件的编译过渡到包含文件中宏的使用与它们在 中的“效果”LaTeX之间的关联列表的方法是我想到的最简单的想法,并且与“poorman”选项的方法非常相似。.tex.pdf

相关内容