首字母缩略词 + 副标题:标题中的首字母缩略词问题

首字母缩略词 + 副标题:标题中的首字母缩略词问题

我尝试将首字母缩略词包与子标题一起使用。但是,即使在没有使用子标题的图形中,首字母缩略词也无法正常工作。

梅威瑟:

\documentclass[11pt]{report}
\usepackage[withpage, printonlyused]{acronym}
\usepackage{subcaption}

\begin{document}

    \ac{FYI}.

    \begin{figure}
        \caption{\ac{TLA}}
    \end{figure}

    \begin{acronym}[TLA]
        \acro{FYI}{for your information}
        \acro{TLA}{three-letter acronym}
    \end{acronym}

\end{document}

姆韦

如你看到的,

  1. 尽管这是第一次使用,但 TLA 并未在标题中展开
  2. TLA 包含在列表中,但没有页码(这是我更关心的)

我发现了(2)的解决方法:

        \caption{\ac{TLA}\protect\label{acro:TLA}}

但是,我尝试将其添加到其自身\protect的扩展中\ac(在这行),却没有任何效果,这很奇怪。

通过跟踪编译,我可以 \protected@write\@auxout...正在扩展,但实际上并未写入辅助文件。子标题是否重新定义事物以某种方式吞噬辅助输出?

答案1

如果没有 caption/subcaption 包,如果字幕文本适合一行,则将对其进行一次求值,如果不适合,则将对其进行两次求值。使用 caption/subcaption 包时,字幕文本将始终被求值两次。

这里的问题是,\ac将被评估两次,但实际上只有第二次评估被排版。只需使用更长的标题,就可以强制解决这个问题,而无需使用 caption/subcaption 包:

\documentclass[11pt]{report}
\usepackage[withpage, printonlyused]{acronym}

\begin{document}

    \ac{FYI}.

    \begin{figure}
        \caption{\ac{TLA} -- And some more text so the caption text will be evaluated twice.}
    \end{figure}

    \begin{acronym}[TLA]
        \acro{FYI}{for your information}
        \acro{TLA}{three-letter acronym}
    \end{acronym}

\end{document}

一个不道德的解决方法是抑制对的第一次评估\ac,例如:

\documentclass[11pt]{report}
\usepackage[withpage, printonlyused]{acronym}

\usepackage{caption}
\makeatletter
\g@addto@macro\caption@prepareslc{%
  \let\ac\@firstofone}
\makeatother

\begin{document}

    \ac{FYI}.

    \begin{figure}
        \caption{\ac{TLA} -- And some more text so the caption text will be evaluated twice.}
    \end{figure}

    \begin{acronym}[TLA]
        \acro{FYI}{for your information}
        \acro{TLA}{three-letter acronym}
    \end{acronym}

\end{document}

\ac虽然这似乎可以正常工作,但它解决了一个问题,但又产生了一个新问题:如果第一次使用单行检查,它现在无法正常工作- 这可能会导致对齐字幕不正确。例如:

\documentclass[11pt]{report}
\usepackage[withpage, printonlyused]{acronym}

\usepackage{caption}
\makeatletter
\g@addto@macro\caption@prepareslc{%
  \let\ac\@gobble}
\makeatother

\begin{document}

    \ac{FYI}.

    \begin{figure}
        \caption{\ac{TLA} -- And some more text and some more text.}
    \end{figure}

    \begin{acronym}[TLA]
        \acro{FYI}{for your information}
        \acro{TLA}{three-letter acronym}
    \end{acronym}

\end{document}

由于适当的解决方案是将 caption 包适配到 accorim 包,因此我在此填写了一个错误报告:

https://github.com/axelsommerfeldt/caption/issues/10

附录

我刚刚花了一些时间查看了首字母缩略词的来源,发现重新定义和单行检查的\acused内部命令似乎是一个合适的解决方案。例如,此文档现在给出了正确的标题对齐方式:\AC@placelabel

\documentclass[11pt]{report}
\usepackage[withpage, printonlyused]{acronym}

\usepackage{caption}
\makeatletter
\g@addto@macro\caption@prepareslc{%
  \let\acused\@gobble
  \let\AC@placelabel\@gobble}
\makeatother

\begin{document}

    \ac{FYI}.

    \begin{figure}
        \caption{\ac{TLA} -- And some more text and some more text.}
    \end{figure}

    \begin{acronym}[TLA]
        \acro{FYI}{for your information}
        \acro{TLA}{three-letter acronym}
    \end{acronym}

\end{document}

请让我知道使用此解决方案是否一切正常——如果是,我想将此补丁放入字幕包中。(如果不行,我想改进补丁。)谢谢!

相关内容