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