更新

更新

我在 LaTeX 中使用该acronym包。出于风格和清晰度的原因,我希望完整首字母缩略词描述中的每个相应字母都带有下划线(请参阅 MWE)。除了一种用例外,这种方法效果很好,即当我需要使用 将句子开头的首字母缩略词大写时\Ac{}。似乎由于命令,\underline{}无法识别首字母缩略词的首字母,因此不会将其大写。为了清楚起见,我正在寻找一种使用该acronym包(而不是glossaries例如包)的解决方案,因为我有义务使用我的大学提供的模板。有人有解决方案吗?任何帮助都将不胜感激。干杯!

梅威瑟:

\documentclass{article}
\usepackage{acronym}

\begin{document}

\Ac{DoS} attacks should be capitalized but it is not. \Ac{w.r.t.} without the underline works fine.

\begin{acronym}
    \acro{DoS}{\underline{d}enial-\underline{o}f-\underline{s}ervice}%
    \acro{w.r.t.}{with respect to}%
\end{acronym}

\end{document}

mwe_输出

acronym我的第一个想法是,在包允许您声明首字母缩略词的自定义复数版本的同一行中,我可以定义每个首字母缩略词的自定义大写版本,但我没有找到任何标准方法来做到这一点。\Ac{}我认为重新定义命令以使其可以“查看”任何样式也是一个选择,但我对 LateX 的了解太少,无法完成这样的壮举。

答案1

更新

原始答案适用于 TeX Live 2022,但正如 Bart Wolleswinkel 和 Dai Bowen 在评论中提到的那样:它不适用于 TeX Live 2023。原因是 的定义\MakeUppercase已更改。此命令用于\@firstupper由包定义的命令的定义中acronym

\@firstupper一个解决方案是重新定义要使用的命令\text_titlecase_first:n

此外,在下面的答案中,\acrounderline定义了一个命令。这将在-将其传递给之前在第二个参数中的第一个字母和每个字母后的第一个字母下划线\acro

在此处输入图片描述

\documentclass[border=6pt,varwidth]{standalone}
\usepackage{acronym}
\ExplSyntaxOn
\makeatletter
\renewcommand { \@firstupper } [1] { \text_titlecase_first:n {#1} }
\makeatother
\tl_new:N \l__BartWolleswinkel_acro_underline_tl
\newcommand { \acrounderline } [2]
  {
    \tl_set:Nn \l__BartWolleswinkel_acro_underline_tl {#2}
    \tl_replace_all:Nnn \l__BartWolleswinkel_acro_underline_tl { - } { - \underline }
    \tl_put_left:Nn \l__BartWolleswinkel_acro_underline_tl { \underline }
    \acro {#1} { \l__BartWolleswinkel_acro_underline_tl }
  }
\ExplSyntaxOff
\begin{document}

\Ac{DoS} is capitalized without braces around \verb|\underline{d}|.

\Ac{w.r.t.} works.

\Ac{DoS2} works as well and also works with for example \verb|\textbf| if there is a pair of braces around it.

\begin{acronym}
    \acro{DoS}{\underline{d}enial-\underline{o}f-\underline{s}ervice}%
    \acro{w.r.t.}{with respect to}%
    \acrounderline{DoS2}{denial-of-service-{\textbf{2}}}%
\end{acronym}

\end{document}

原始答案

一个解决方案是使用一对额外的括号:{\underline{d}}

在此处输入图片描述

\documentclass[border=6pt,varwidth]{standalone}
\usepackage{acronym}

\begin{document}

\Ac{DoS} attacks should be capitalized but it is not. \Ac{w.r.t.} without the underline works fine.

\begin{acronym}
    \acro{DoS}{{\underline{d}}enial-\underline{o}f-\underline{s}ervice}%
    \acro{w.r.t.}{with respect to}%
\end{acronym}

\end{document}

相关内容