アップデート

アップデート

私はacronymLaTeX でパッケージを使用しています。文体上の理由と明確さのために、完全な頭字語の説明で対応する各文字に下線を付けたいです (MWE を参照)。これは、 を使用して文頭の頭字語を大文字にする必要がある場合を除いて、問題なく機能します。 コマンドが原因で、頭字語の最初の文字が認識されず、大文字にならないよう\Ac{}です。 明確さのために、大学から提供されたテンプレートを使用する義務があるため、パッケージ (たとえばパッケージではありません) を使用するソリューションを探しています。 誰か解決策を持っていますか? どんな助けでもいただければ幸いです。乾杯!\underline{}acronymglossaries

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_出力

acronym私の最初のアイデアは、パッケージで頭字語のカスタム複数形を宣言できるのと同じ行で、各頭字語の大文字バージョンをカスタム定義できるというものでしたが、これを行う標準的な方法は見つかりませんでした。\Ac{}コマンドを再定義して、スタイルを「参照」できるようにすることもオプションだと思いますが、そのような偉業を達成するには LateX の知識がほとんどありません。

答え1

アップデート

元の回答は TeX Live 2022 では機能しますが、Bart Wolleswinkel と Dai Bowen がコメントで述べているように、TeX Live 2023 では機能しません。その理由は、 の定義が変更されたためです。このコマンドは、パッケージ によって定義されている\MakeUppercaseコマンドの定義で使用されます。\@firstupperacronym

\@firstupper解決策としては、 を使用するようにコマンドを再定義することです\text_titlecase_first:n

さらに、以下の回答では、コマンドが定義されています。これにより、これを に渡す前に、2 番目の引数の\acrounderline最初の文字とそれぞれの後の最初の文字に下線が引かれます。-\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}

元の回答

解決策としては、追加の中括弧を使用することです{\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}

関連情報