在 \label {} 中使用符号 'fig:' 有什么好处?

在 \label {} 中使用符号 'fig:' 有什么好处?

阅读手册时,我总是发现图形被标记为\label{fig:name}。我想知道使用这种符号而fig:不是从名称本身开始的优势是什么。如果我的文档中只有图形,那么\ref使用不带的标签fig:会更快,因为我不必fig:事先输入就可以找到我想要的正确图形。我是否错过了什么优势?我应该使用 吗fig:

在此处输入图片描述

答案1

至少有两个原因:

  • 它以非常合理的方式表达了标签的含义,在以下所有情况下,标签的意图都很简单,它还可以让您将彼此有意义的事物分组,fig:systemeq:system具有系统的含义,一个是图形,另一个是等式。

    • fig:对于数字
    • tbl:/tabl:用于桌子
    • eq:对于方程
    • chap:/chp:章节
    • sec:对于部分
  • 它通常可以被编辑器解析,以便更轻松地查找图形/表格/公式标签。在 emacs 中,有 RefTeX 可以简化交叉引用系统。其他几个编辑器也有这样的交叉引用系统实例。

答案2

除了其他人给出的原因(源的可理解性;利用编辑器功能等)之外,如果您使用fancyref,您可以自动执行更具描述性的交叉引用。这样可以轻松确保整个文档中的交叉引用格式一致。该系统可以适应使用您自己喜欢的前缀和标签,并且可以扩展以涵盖对文档其他元素的交叉引用。它可以处理普通和可变引用,并提供开箱即用的大写和小写引用命令。

\documentclass{article}
\usepackage{fancyref}

\begin{document}

\section{A section}\label{sec:mysec}

\begin{figure}
  \centering \fbox{A figure}
  \caption{My figure}\label{fig:myfig}
\end{figure}

\Fref{sec:myothersec} will demonstrate that \fref{fig:myfig} is fantastic.

\section{Another section}\label{sec:myothersec}

\Fref{fig:myfig} showed whatever my figure showed in \fref{sec:mysec}.

\end{document}

fancyref 演示

答案3

我个人从未使用过这样的约定(LaTeX 不假设标签有任何结构),标签字符串实际上只是一个不透明的内部标识符。如果您发现为类似对象的标签提供通用前缀很方便,那么可以这样做,但这肯定不是系统的要求。一些软件包和/或编辑器可能会尝试解析标签的结构并查找等fig:,但可能不应该这样做。

答案4

我目前正在写一些“几何与拓扑”讲稿(德语)。通过这个项目,我了解了标签的命名空间为何有意义。

避免双重标签:我遇到过没有前缀(例如fig:andsec:bsp:)的问题thm:,因为有双重标签。很多时候,我会有一个想要引用的图形和一个定理。命名空间很好地解决了这个问题。

使代码更易于阅读

避免混淆:有时,我想引用部分。所以我确信该部分有一个标签,例如\label{lifting}。但事实上,该标签是为图表选择的。当我有前缀时,这种情况不会发生。有了前缀,LaTeX 会产生一些前缀??,并让我明显地意识到我犯了一个错误。

在看过上面的截图后,我认为你还有另一个好处:

自动完成:我想大多数时候您都知道是否要引用图形、部分、表格或其他内容。这样,您实际上需要考虑的元素数量就会大大减少。(顺便问一下,您使用什么编辑器?我仍然使用 gEdit / pluma mot 输入 LaTeX... 也许您有更好的选择?)

Cleveref 和 Fancref:您应该使用以下一些理由\usepackage{cleveref}(请参阅长答案)这样,你可以做类似的事情

\usepackage[nameinlink]{cleveref}
 ...
 As you can see in \cref{sec:abc} ...

这可能意味着

 As you can see in section 7

其中链接了“第 7 节”。此外,您还可以传递语言选项,cleveref这可能会使翻译更容易。

因此,使用自己的标签命名空间约定有一些重要的原因。

合作是使用“众所周知的命名空间方案”(例如fig:图形和sec:章节)的唯一原因。

然而,LaTeX 并不关心标签命名空间。它们只是标签名称的一部分。

相关内容