以下编码风格在行为上是否存在差异?
编码样式 A:\caption
不包含\label
。
\begin{figure}
\includegraphics{cat.eps}
\caption{This is a cat.}
\label{fig:cat}
\end{figure}
编码样式 B:\caption
括起来\label
。
\begin{figure}
\includegraphics{cat.eps}
\caption{\label{fig:cat}This is a cat.}
\end{figure}
答案1
我不能肯定地说,使用普通的 LaTeX,但如果你使用showlabels
包(在草稿模式下非常有用),则标签会显示在两者的不同位置。
代码:
\documentclass{article}
\thispagestyle{empty}
\usepackage{graphicx}
\usepackage{showlabels}
\begin{document}
\begin{figure}
\includegraphics{vignettes}
\caption{This is a cat.}
\label{fig:cat}
\end{figure}
\begin{figure}
\includegraphics{vignettes}
\caption{\label{fig:cat}This is a cat.}
\end{figure}
\end{document}
结果:
答案2
与 Latex 内部命令视图没有区别。例如,命令\addtocontents
定义为
\long\def\addtocontents#1#2{%
\protected@write\@auxout
{\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%
{\string\@writefile{#1}{#2}}}
换句话说,当或将参数传递给 TOC 和 LOF\label
时,它将变为无操作。同样,等命令也会将节标题写入运行头。另一方面,开关在很多地方内部使用,以防止导致分页符,例如在节命令之后的命令中。很明显,LaTeX 被设计为将标签放在和命令内部或之后。\caption
\section
\markboth
\if@nobreak
\label
\@afterheading
\caption
\sectionxxx
请注意,标签不能放在\caption
或的短参数中\section
\caption[\label{xx}Short capt]{Long capt}% DO NOT DO THIS
因为标签将会消失。
例外:对于脚注,标签必须位于脚注本身内,否则它不会被定义并且将引用当前活动计数器,该计数器可能是章节计数器。
答案3
据我所知,编码样式 A 和 B 之间只有两点区别:
- A 是图形环境的常规顺序。
- A 更容易阅读。
答案4
如何修复 \afterpage 之前的单页上的段落标题和 \afterpage 之后第一页上的文本?
上面的帖子说明了在顶部使用编码样式 B(标记内的标签被标记为\caption{\label{fig:cat}This is a cat.}
)是获得正确结果的必要条件的情况。具体来说,在那种情况下, 的编码\paragraph{title}\label{text}
会导致与\afterpage
包一起出现错误的分页,而 则\paragraph{title\label{text}}
不会。
此外,根据该线程,最好将标签放在被标记的项目内。
那么标签的位置可能会产生其他影响吗?