Ich verwende das acronym
Paket in LaTeX. Aus stilistischen Gründen und der Übersichtlichkeit halber möchte ich, dass jeder entsprechende Buchstabe in der vollständigen Akronymbeschreibung unterstrichen wird (siehe MWE). Das funktioniert gut, außer in einem Anwendungsfall, nämlich wenn ich das Akronym am Anfang eines Satzes mit groß schreiben muss \Ac{}
. Es scheint, dass aufgrund des \underline{}
Befehls der erste Buchstabe des Akronyms nicht erkannt und daher nicht groß geschrieben wird. Der Übersichtlichkeit halber suche ich nach einer Lösung, die das acronym
Paket verwendet (nicht das glossaries
Paket zum Beispiel), da ich verpflichtet bin, eine Vorlage zu verwenden, die von meiner Universität bereitgestellt wird. Hat jemand eine Lösung? Jede Hilfe wäre willkommen. Danke!
MWE:
\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}
Meine erste Idee war, dass ich in derselben Zeile, in der das acronym
Paket Ihnen erlaubt, eine benutzerdefinierte Pluralversion eines Akronyms zu deklarieren, eine benutzerdefinierte Version mit Großbuchstaben für jedes Akronym definieren könnte, aber ich habe keine Standardmethode dafür gefunden. \Ac{}
Ich denke, dass es auch eine Option wäre, den Befehl so neu zu definieren, dass er jede Formatierung „durchschauen“ kann, aber ich habe zu wenig LateX-Kenntnisse, um so etwas zu erreichen.
Antwort1
Aktualisieren
Die ursprüngliche Antwort funktioniert mit TeX Live 2022, aber wie Bart Wolleswinkel und Dai Bowen in den Kommentaren erwähnt haben: Sie funktioniert nicht mit TeX Live 2023. Der Grund dafür ist, dass sich die Definition von \MakeUppercase
geändert hat. Dieser Befehl wird in der Definition des Befehls verwendet \@firstupper
, der vom Paket definiert wird acronym
.
Eine Lösung besteht darin, den \@firstupper
zu verwendenden Befehl neu zu definieren \text_titlecase_first:n
.
Darüber hinaus ist in der Antwort weiter unten ein Befehl \acrounderline
definiert. Dieser unterstreicht den ersten Buchstaben und den jeweils ersten Buchstaben -
im zweiten Argument, bevor dieser an übergeben wird \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}
Ursprüngliche Antwort
Eine Lösung besteht darin, ein zusätzliches Paar Klammern zu verwenden: {\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}