Estou usando o acronym
pacote 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 acronym
pacote (não o glossaries
pacote, 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}
Minha primeira ideia foi que, na mesma linha em que o acronym
pacote 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 \MakeUppercase
mudou. Este comando é usado na definição do comando \@firstupper
que é definido pelo pacote acronym
.
Uma solução é redefinir o comando \@firstupper
a 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
.
\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}}
.
\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}