Actualizar

Actualizar

Estoy usando el acronympaquete en LaTeX. Por razones de estilo y claridad, quiero que cada letra correspondiente en la descripción completa del acrónimo esté subrayada (ver MWE). Esto funciona bien excepto en un caso de uso, es decir, cuando necesito poner en mayúscula el acrónimo al comienzo de una oración usando \Ac{}. Parece que, debido al \underline{}comando, la primera letra del acrónimo no se reconoce y, por lo tanto, no se escribe en mayúscula. Para mayor claridad, estoy buscando una solución que utilice el acronympaquete (no el glossariespaquete, por ejemplo), ya que estoy obligado a utilizar una plantilla proporcionada por mi universidad. ¿Alguien tiene alguna solución? Cualquier ayuda sería apreciada. ¡Salud!

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}

salida_mwe

Mi primera idea fue que, en la misma línea en la que el acronympaquete te permite declarar una versión plural personalizada de un acrónimo, podría definir una versión personalizada en mayúscula de cada acrónimo, pero no encontré ninguna forma estándar de hacerlo. Creo que también sería una opción redefinir el \Ac{}comando de manera que pueda "revisar" cualquier estilo, pero tengo poco conocimiento de LateX para lograr tal hazaña.

Respuesta1

Actualizar

La respuesta original funciona con TeX Live 2022, pero como lo mencionan Bart Wolleswinkel y Dai Bowen en los comentarios: no funciona con TeX Live 2023. La razón es que la definición de \MakeUppercaseha cambiado. Este comando se utiliza en la definición del comando \@firstupperdefinido por el paquete acronym.

Una solución es redefinir el comando \@firstuppera utilizar \text_titlecase_first:n.

Además, en la respuesta a continuación, \acrounderlinese define un comando. Esto subrayará la primera letra y la primera letra después de cada una -en el segundo argumento antes de pasar esto a \acro.

ingrese la descripción de la imagen aquí

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

Respuesta original

Una solución es utilizar un par extra de tirantes: {\underline{d}}.

ingrese la descripción de la imagen aquí

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

información relacionada