我正在使用acro
包来管理首字母缩略词。我已经\ac{ }
在图片标题中使用了该命令,但是,在图中\appendix
,在以下配置下(参见下面的 MWE),即使第一次调用首字母缩略词,它也不会以长格式出现。我该如何解决?
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{acro}
\usepackage{blindtext}
\usepackage{setspace}
\DeclareAcronym{PVC}{
short=PVC,
long=Poli Vinil Chloride
}
\begin{document}
\onehalfspacing
\blindtext
\clearpage
\pagebreak
%
\appendix
\begin{center}
\vspace*{\fill}
\section*{Supplementar Files}
\vspace*{\fill}
\end{center}
\clearpage
\pagebreak
%%
\singlespacing
\section{Test}\label{sec:Esquemas-Filtros}
\acresetall
\begin{figure}[htb]
\centering
Dummy text
\caption{Some caption text to ilustrate the problem \ac{PVC}}
\label{fig:label}
\end{figure}
%
\clearpage
\pagebreak
\end{document}
答案1
根据@clemens的评论进行编辑:
如果您将您的更改\ac{PVC}
为,\acf{PVC}
您将获得与我的以下代码相同的结果(针对此特定示例)。但也许有一天我们会从一个新的更好的答案中学到更多...
旧答案:
您可以重新定义声明首字母缩写词命令来保存全名(我\ACROfull{}
对每个 ACRO 都这样称呼它,并使用它来代替 ac)
在任何首字母缩略词声明之前放置此代码:
\let\oldDeclareAcronym=\DeclareAcronym
\def\saveac#1{\xdef\temp{\acl{#1} (\acs{#1})}\global\expandafter\let\csname#1full\endcsname\temp}
\long\def\DeclareAcronym#1#2{\oldDeclareAcronym{#1}{#2}\saveac{#1}}
然后,您可以在标题中调用\PVCfull{}
而不是\ac{PVC}
,它将打印\ac{PVC}
与标题相同的内容。
据我尝试理解,出于某种原因,标题禁止在其环境中扩展首字母缩略词。
当然,你也可以直接在标题里写:\acl{#1} (\acs{#1})
而不是上述所有声明和重新声明。
答案2
问题在于,article
根据标题的长度,排版方式会有所不同。如果标题长度超过一行,则排版方式会横跨整个长度,否则会居中。为此,首先将标题放在一个框内:
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{#1: #2}%
\ifdim \wd\@tempboxa >\hsize
#1: #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
这意味着如果首字母缩略词第一次在框 ( \sbox\@tempboxa{#1: #2}
) 内使用,并且其宽度超出,\hsize
那么当标题排版时 ( #1: #2\par
),首字母缩略词将不再使用!更糟糕的是:标题甚至可能不再长!\hsize
以下文档演示了这一点:
\documentclass[12pt,a4paper]{article}
\usepackage{acro}
\DeclareAcronym{PVC}{
short = PVC,
long = Poli Vinil Chloride
}
\usepackage{showframe}
\begin{document}
\begin{figure}[h]
\caption{Some caption text to illustrate the problem \ac{PVC}}
\end{figure}
\acresetall
\begin{figure}[h]
\caption{\ac{PVC}}
\end{figure}
\end{document}
只要你不使用任何重新定义的包\@makecaption
并且坚持使用article
类,我们就可以修改我们自己的定义\@makecaption
:
\documentclass[12pt,a4paper]{article}
\usepackage{acro}
\DeclareAcronym{PVC}{
short = PVC,
long = Poli Vinil Chloride
}
\makeatletter
\renewcommand\@makecaption[2]{%
\vskip\abovecaptionskip
\sbox\@tempboxa{\acswitchoff#1: #2}% <<<<<
\ifdim \wd\@tempboxa >\hsize
#1: #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil#1: #2\hfil}% <<<<<
\fi
\vskip\belowcaptionskip}
\makeatother
\usepackage{showframe}
\begin{document}
\begin{figure}[h]
\caption{Some caption text to illustrate the problem \ac{PVC}}
\end{figure}
\acresetall
\begin{figure}[h]
\caption{\ac{PVC}}
\end{figure}
\end{document}