用語集パッケージを使用して、頭字語の前の「a」と「an」を自動的に処理するにはどうすればよいですか?

用語集パッケージを使用して、頭字語の前の「a」と「an」を自動的に処理するにはどうすればよいですか?

私はglossaries頭字語を処理するためにパッケージを使用しており、頭字語の前に「a」または「an」を使用するかどうかを自動的に決定するタスクに遭遇しました。

\documentclass{scrbook}
\usepackage{hyperref}
\usepackage[toc,acronym,nopostdot,nomain,style=alttree,shortcuts]{glossaries}
  \setacronymstyle{long-sc-short}
  \makeglossaries
  \newacronym{sma}{sma}{SubMiniature version A}
\begin{document}
  a \ac{sma}\\ % gives "a SubMiniature version A (SMA)"
  a \ac{sma}   % gives "a SMA"
\end{document}

2番目に「SMA」を生成するにはどうしたらいいでしょうか?頭字語ごとに1回ずつ示してもかまいません。「n」が必要かどうか短縮形が使用される場合。

glossaries-prefixすべての異なるケース(初出、複数、単数など)の接頭辞を定義できるパッケージについては知っています。ただし、このパッケージを使用すると、\pgls短い頭字語コマンド(など)の代わりに、さまざまなコマンド(など)を手動で使用する必要があります\ac

これを自動的に行う方法はありますか?

答え1

私は使い始めましたacronymこの目的のためのパッケージです。ドキュメンテーション適切な場合に不定冠詞を正しい形式で自動的に挿入する\iac(および) コマンドを定義していることがわかります。\Iac

答え2

おそらく、これが始めるのに役立つでしょう:

私の推測では、理想的な解決策は、a と an などを認識するための非常に複雑なパッケージ (さまざまな言語のハイフネーション パターン認識など) になるでしょう。これは私の能力の範囲外なので、ここに提案があります。

冠詞の使用法が本当に最初 = 記事 A、略語 = 記事 B である場合は、用語集にいくつかのキーを追加し、頭字語が使用されているかどうかを検出して、どの冠詞を使用するかを認識することを提案します。

注: ユーザーが冠詞の置換を使用しようとしたがそれを定義していなかった場合にそれを認識するためのエラー トラップをコマンドに追加していませんが、ユーザーが必要に応じてオプションの引数として冠詞を渡すことができるようにコマンドを定義しました。

\documentclass{scrbook}
\usepackage{hyperref}
\usepackage{xparse}
\usepackage[toc,acronym,nopostdot,nomain,style=alttree,shortcuts]{glossaries}

  \setacronymstyle{long-sc-short}


  \glsaddkey
  {article-abrv}        % new key
  {\relax}          % default value if "article-abrv" isn't used in \newglossaryentry
  {\glsentryArtA}   % analogous to \glsentrytext
  {\GlsentryArtA}   % analogous to \Glsentrytext
  {\glsArtA}        % analogous to \glstext
  {\GlsArtA}        % analogous to \Glstext
  {\GLSArtA}        % analogous to \GLStext

  \glsaddkey
  {article-long}    % new key
  {\relax}          % default value if "article-long" isn't used in \newglossaryentry
  {\glsentryArtL}   % analogous to \glsentrytext
  {\GlsentryArtL}   % analogous to \Glsentrytext
  {\glsArtL}        % analogous to \glstext
  {\GlsArtL}        % analogous to \Glstext
  {\GLSArtL}        % analogous to \GLStext


    \DeclareDocumentCommand{\aac}{o m}{%
        \IfValueTF{#1}{%
            \ifglsused{\glsentryshort{#2}}%
            {\glsdisp{#2}{#1~\ac{#2}}}%TRUE
            {\glsdisp{#2}{#1~\ac{#2}}}%FALSE
        }{%
            \ifglsused{\glsentryshort{#2}}%
            {\glsdisp{#2}{\glsArtA{#2}~\ac{#2}}}%TRUE
            {\glsdisp{#2}{\glsArtL{#2}~\ac{#2}}}%FALSE
        }%
    }

    \DeclareDocumentCommand{\Aac}{o m}{%
        \IfValueTF{#1}{%
            \ifglsused{\glsentryshort{#2}}%
            {\glsdisp{#2}{#1~\ac{#2}}}%TRUE
            {\glsdisp{#2}{#1~\ac{#2}}}%FALSE
        }{%
        \ifglsused{\glsentryshort{#2}}%
        {\glsdisp{#2}{\GlsArtA{#2}~\ac{#2}}}%TRUE
        {\glsdisp{#2}{\GlsArtL{#2}~\ac{#2}}}%FALSE
    }%
  }

  \makeglossaries

  \newacronym[article-abrv={an},article-long={a}]{sma}{sma}{SubMiniature version A}  
  \newacronym{uv}{UV}{Ultraviolet}

\begin{document}

\Aac{sma}

\Aac{sma}

Lowercase example:  \aac{sma}

Override example:  \aac[the]{sma}

%\Aac{uv}% code has no error trapping to let you use \aac as a replacement to \ac

\end{document}

関連情報