更新

更新

我正在使用acronymLaTeX 中的包。出於文體原因和清晰起見,我希望完整首字母縮略詞描述中的每個對應字母都帶有下劃線(請參閱 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}

相關內容