如何获取更完整的参考文献

如何获取更完整的参考文献

有时当我工作的时候我会写一些类似

\begin{proposition} \label{my new result}
...
\end{proposition}
...
blah blah in Proposition \ref{my new result} blah...

但后来我意识到这个命题实际上应该变成一个引理。所以我把它改成

\begin{lemma} \label{my new result}
...
\end{lemma}

问题是,我必须找出所有我写过 Proposition 的地方,然后将其改为 Lemma,这很繁琐,而且容易出错。好吧,我们在编辑器中有搜索功能,所以其实并不复杂,但这样做仍然感觉不对。我更愿意写

\begin{proposition} \label{my new result}
...
\end{proposition}
...
blah blah in \labelNameFor{my new result} \ref{my new result} blah...

其中 labelNameFor 是一个假设的魔法命令,输出“Proposition”。然后我可以忘记所有引用结果的地方,只需进行任何我想要的更改即可。

有没有办法做这样的事情?据我所知,标签/引用机制只是基于计数器,所以我没有看到直接的方法,但也许比我更聪明、更勤奋的人已经考虑过这个问题。

答案1

我建议使用cleveref该包增强了 LaTeX 的交叉引用功能,可以确定交叉引用的类型和上下文。

在你的情况下,\cref{my new result}将输出命题 1。如果你将这个特定的环境更改为环境,则输出lemma相同\cref{my new result}引理 1

如果您想彻底改变样式,甚至可以更改整个文档中环境的引用名称。例如:

\documentclass{article}
\usepackage{cleveref}
\newtheorem{proposition}{Proposition}
\begin{document}
\begin{proposition}\label{my new result}
...
\end{proposition}
...
blah blah in \Cref{my new result} blah...
\end{document}

输出... 提案 1 中的等等等等...

如果你把这个修改添加到序言中

\Crefname{proposition}{Lemma}{Lemmas}
\crefname{proposition}{lemma}{lemmas}

输出变为...引理 1 中的 blah blah...

具有类似功能的其他软件包ntheoremthref可选),hyperref(与\autoref)和fancyref。您的问题可能可以通过其中任何一个来解决,但cleveref似乎更灵活并且通常提供更多功能 - 如果您对定理环境或一般交叉引用的更多功能感兴趣,请查看它。

答案2

ntheorem包通过其\thref命令很好地处理了这个问题。

另一个选择是利用hyperref及其\autoref命令。

这两种方法都可以避免搜寻所有引用实例的需要。

因此,Proposition \ref{thm:label}您不必写入,而只需写入\autoref{thm:label}。然后,如果您稍后将定理更改为引理,\autoref则会自动更新(经过两次编译...)

答案3

如上所述,这个问题与上一个问题非常相似。 这是我对这个问题的回答(已接受)。摘要:使用fncylab

针对您关于引用基于计数器的评论:这是真的,但这并不妨碍您想要的更详细的方案!事实上,每个计数器都是几个相关宏的捆绑包(在 C 中它将是一个struct),其中一个被调用p@<counter name>并包含在引用中使用时要在计数器编号之前打印的材料。该fncylab包实际上修改了它(以 LaTeX 源本身建议的方式),因此p@<counter name>可以是一个以数字为参数的宏。

相关内容