![在 \label {} 中使用符号 'fig:' 有什么好处?](https://linux22.com/image/281716/%E5%9C%A8%20%5Clabel%20%7B%7D%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%AC%A6%E5%8F%B7%20'fig%3A'%20%E6%9C%89%E4%BB%80%E4%B9%88%E5%A5%BD%E5%A4%84%EF%BC%9F.png)
阅读手册时,我总是发现图形被标记为\label{fig:name}
。我想知道使用这种符号而fig:
不是从名称本身开始的优势是什么。如果我的文档中只有图形,那么\ref
使用不带的标签fig:
会更快,因为我不必fig:
事先输入就可以找到我想要的正确图形。我是否错过了什么优势?我应该使用 吗fig:
?
答案1
至少有两个原因:
它以非常合理的方式表达了标签的含义,在以下所有情况下,标签的意图都很简单,它还可以让您将彼此有意义的事物分组,
fig:system
并eq: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}
答案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 并不关心标签命名空间。它们只是标签名称的一部分。