Aktualisieren

Aktualisieren

Ich verwende das acronymPaket 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 acronymPaket verwendet (nicht das glossariesPaket 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}

mwe_ausgabe

Meine erste Idee war, dass ich in derselben Zeile, in der das acronymPaket 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 \MakeUppercasegeändert hat. Dieser Befehl wird in der Definition des Befehls verwendet \@firstupper, der vom Paket definiert wird acronym.

Eine Lösung besteht darin, den \@firstupperzu verwendenden Befehl neu zu definieren \text_titlecase_first:n.

Darüber hinaus ist in der Antwort weiter unten ein Befehl \acrounderlinedefiniert. Dieser unterstreicht den ersten Buchstaben und den jeweils ersten Buchstaben -im zweiten Argument, bevor dieser an übergeben wird \acro.

Bildbeschreibung hier eingeben

\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}}.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen