我正在使用acro
包来制作整个文本中使用的首字母缩略词列表。当我第一次在图片标题中使用首字母缩略词时,它不会显示在首字母缩略词列表中。即使我在其他地方再次使用相同的首字母缩略词,它仍然会保持这种状态(参见CMS
下面的 MWE)。如果在图片之前首先使用首字母缩略词,则一切都正常(参见ATLAS
MWE)。
问题:如何使图形标题中首次出现的首字母缩略词出现在首字母缩略词列表中?
以下是 MWE:
\documentclass[12pt,a4paper]{article}
\usepackage{acro}
\DeclareAcronym{CMS}{short = CMS, long = Compact Muon Solenoid}
\DeclareAcronym{ATLAS}{short = ATLAS, long = A Toroidal LHC ApparatuS}
\begin{document}
\ac{ATLAS} % acronym first used before the figure
\begin{figure}[htb]
\centering
\caption{Acronym first used here, in the figure: (\ac{CMS}), the
second one was used already (\ac{ATLAS}).}
\label{fig:label}
\end{figure}
\ac{CMS}\\ % using the acronym again, outside of the figure
\ac{ATLAS}\\
\printacronyms[name=List of acronyms]
\end{document}
答案1
问题在于字幕的单行检查:字幕存储在一个框中并进行测量。由于字幕长度超过一行,因此会丢弃此框并按原样打印文本。
这有两个效果:在创建框时,缩写被标记为已使用,因此您在第二步中在标题中得到简短的缩写。并且由于框被丢弃,辅助文件中没有写入任何内容,因此列表中缺少该条目。
避免这两个问题的简单方法是避免使用单行检查,例如
\usepackage[singlelinecheck=false]{caption}
如果您不想这样:可以通过在标题中添加重置来避免第一个问题,通过在标题后再次将首字母缩略词标记为已使用来避免第二个问题。这会导致以下结果。如您所见,它适用于两个首字母缩略词:
\documentclass[12pt,a4paper]{article}
\usepackage{acro}
%\usepackage[singlelinecheck=false]{caption}
\DeclareAcronym{CMS}{short = CMS, long = Compact Muon Solenoid}
\DeclareAcronym{ATLAS}{short = ATLAS, long = A Toroidal LHC ApparatuS}
\begin{document}
\ac{ATLAS} % acronym first used before the figure
\begin{figure}[htb]
\centering
\caption{Acronym first used here, in the figure:
(\acifused{CMS}{\ac{CMS}}{\ac{CMS}\acreset{CMS}}),
the second one was used already
(\acifused{ATLAS}{\ac{ATLAS}}{\ac{ATLAS}\acreset{ATLAS}}).
}
\acuse{CMS}\acuse{ATLAS}
\label{fig:label}
\end{figure}
\ac{CMS}\\ % using the acronym again, outside of the figure
\ac{ATLAS}\\
\printacronyms[name=List of acronyms]
\end{document}
附注:1. 图形是浮动对象,不是正常阅读流程的一部分。我会避免在标题中使用首字母缩略词的唯一扩展版本。2. 图形列表可以再次更改输出...
答案2
根据手册第 3.6 节acro
。这可以通过命令完成。\acuse{acronym}
如果您希望显示长格式,您可以\acf{CMS}
在标题中使用,或者在下次使用该命令时使用它。
在标题中使用 的危险\acf{CMS}
在于您可能希望在其他地方第一次使用,然后您必须删除f
,正确的做法应该是:\acfifused{CMS}{\ac{CMS}}{\acf{CMS}\acuse{CMS}}
我很确定这是正常 \ac
命令所做的。然而真正的错误似乎出在\acifused
。
因此如下:
\documentclass[12pt,a4paper]{article}
\usepackage{acro}
\DeclareAcronym{CMS}{short = CMS, long = Compact Muon Solenoid}
\DeclareAcronym{ATLAS}{short = ATLAS, long = A Toroidal LHC ApparatuS}
\begin{document}
\ac{ATLAS} % acronym first used before the figure
\begin{figure}[htb]
\centering
\caption{Acronym first used here, in the figure: (\ac{CMS}\acuse{CMS}), the
second one was used already (\ac{ATLAS}).}
\label{fig:label}
\end{figure}
\ac{CMS}\\ % using the acronym again, outside of the figure
\ac{ATLAS}\\
\printacronyms[name=List of acronyms]
\end{document}