acro:在 PDF 书签中显示长缩写名称

acro:在 PDF 书签中显示长缩写名称

我正在使用包 acro。我有以下缩写:

\DeclareAcronym{SDP}{
  short = SDP,
  long  = Sequential Decision Process,
  long-plural-form = Sequential Decision Processes,
  class = abbrev
}

然后我有了章节标题:

\section{\aclp{SDP}}
\section{\acsp{SDP}}

正确打印 PDF 中的“顺序决策过程”和“SDP”。但是,PDF 书签中的各部分均显示“SDP”。

在里面文档,它说您可以指定属性pdfstring来设置将在 PDF 书签中打印的内容。但是它没有提供长格式和短格式的选项。我如何根据章节标题更改 PDF 书签?

答案1

这应该有效:

\documentclass{article}
\usepackage{acro}

\ExplSyntaxOn
\cs_new:Npn \acro_expandable_long:n #1
  { \prop_item:Nn \l__acro_long_prop {#1} }

\cs_new:Npn \acro_expandable_long_plural:n #1
  {
    \bool_if:nTF
      { \prop_item:Nn \l__acro_long_plural_form_prop {#1} }
      { \prop_item:Nn \l__acro_long_plural_prop {#1} }
      {
        \prop_item:Nn \l__acro_long_prop {#1}
        \prop_item:Nn \l__acro_long_plural_prop {#1}
      }
  }

\cs_new:Npn \acro_pdf_string_long:n #1
  {
    \acro_if_star_gobble:nTF {#1}
      { \acro_expandable_long:n }
      { \acro_expandable_long:n {#1} }
  }

\cs_new:Npn \acro_pdf_string_long_plural:n #1
  {
    \acro_if_star_gobble:nTF {#1}
      { \acro_expandable_long_plural:n }
      { \acro_expandable_long_plural:n {#1} }
  }

\AtBeginDocument
  {
    \pdfstringdefDisableCommands
      {
        \cs_set_eq:NN \acl  \acro_pdf_string_long:n
        \cs_set_eq:NN \aclp \acro_pdf_string_long_plural:n
      }
  }
\ExplSyntaxOff

\usepackage{hyperref}

\DeclareAcronym{SDP}{
  short = SDP,
  long  = Sequential Decision Process,
  long-plural-form = Sequential Decision Processes
}

\DeclareAcronym{CD}{
  short = CD,
  long  = Compact Disc
}

\begin{document}

\section{\acs{CD}, \acs{SDP}}
\section{\acsp{CD}, \acsp{SDP}}
\section{\acl{CD}, \acl{SDP}}
\section{\aclp{CD}, \aclp{SDP}}

\end{document}

在此处输入图片描述

到目前为止,acro仅支持书签中的短格式的决定是经过深思熟虑的——我认为长格式没有必要,因为书签仅用于有限的目的:链接到按规定打印首字母缩略词的“真实”标题。(至少在我的系统上,书签大多数时候都会被截断……)

我会看看是否能在下一个版本中添加更全面的支持。

相关内容