Atualizar

Atualizar

Estou usando o acronympacote em LaTeX. Por razões estilísticas e de clareza, quero que cada letra correspondente na descrição completa do acrônimo seja sublinhada (ver MWE). Isso funciona bem, exceto em um caso de uso, ou seja, quando preciso colocar a sigla em maiúscula no início de uma frase usando \Ac{}. Parece que, devido ao \underline{}comando a primeira letra da sigla não está sendo reconhecida e assim, não sendo maiúscula. Para maior clareza, estou procurando uma solução que utilize o acronympacote (não o glossariespacote, por exemplo), pois sou obrigado a usar um modelo fornecido pela minha universidade. Alguém tem alguma solução? Qualquer ajuda seria apreciada. Saúde!

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_output

Minha primeira ideia foi que, na mesma linha em que o acronympacote permite declarar uma versão personalizada no plural de um acrônimo, eu poderia definir uma versão personalizada em maiúscula de cada acrônimo, mas não encontrei nenhuma maneira padrão de fazer isso. Redefinir o \Ac{}comando de forma que ele possa "examinar" qualquer estilo também seria uma opção, eu acho, mas tenho pouco conhecimento de LateX para realizar tal façanha.

Responder1

Atualizar

A resposta original funciona com TeX Live 2022, mas conforme mencionado por Bart Wolleswinkel e Dai Bowen nos comentários: não funciona com TeX Live 2023. A razão é que a definição de \MakeUppercasemudou. Este comando é usado na definição do comando \@firstupperque é definido pelo pacote acronym.

Uma solução é redefinir o comando \@firstuppera ser usado \text_titlecase_first:n.

Além disso, na resposta abaixo, um comando \acrounderlineé definido. Isso sublinhará a primeira letra e a primeira letra após cada uma -no segundo argumento antes de passar para \acro.

insira a descrição da imagem aqui

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

Resposta original

Uma solução é usar um par extra de aparelho: {\underline{d}}.

insira a descrição da imagem aqui

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

informação relacionada