Wie werden „a“ und „an“ vor Akronymen mit dem Glossarpaket automatisch behandelt?

Wie werden „a“ und „an“ vor Akronymen mit dem Glossarpaket automatisch behandelt?

Ich verwende das glossariesPaket zur Handhabung von Akronymen und bin auf die Aufgabe gestoßen, automatisch über die Verwendung von „a“ oder „an“ davor zu entscheiden.

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

Wie kann ich erreichen, dass der zweite "einen SMA" ergibt? Ich habe nichts dagegen, einmal für jedes Akronym anzugebenob es das "n" braucht oder nichtwenn die Kurzform verwendet wird.

Ich kenne das glossaries-prefixPaket, mit dem man Präfixe für alle verschiedenen Fälle (Erstverwendung, Plural, Singular usw.) definieren kann. Bei Verwendung dieses Pakets müsste ich jedoch die verschiedenen Befehle ( \pglsusw.) manuell verwenden, anstatt der kurzen Akronymbefehle ( \acusw.).

Gibt es eine Möglichkeit, dies automatisch zu tun?

Antwort1

Ich habe angefangen, dieacronymPaket für diesen Zweck. DieDokumentation\iaczeigt, dass es die (und )-Befehle definiert \Iac, die den unbestimmten Artikel automatisch in der richtigen Form einfügen, sofern dies angebracht ist.

Antwort2

Vielleicht hilft Ihnen das hier beim Einstieg:

Ich schätze, die ideale Lösung wäre ein extrem kompliziertes Paket (wie die Silbentrennungsmustererkennung für verschiedene Sprachen), um „a“ und „an“ usw. zu erkennen. Da ich dazu nicht in der Lage bin, hier ein Vorschlag.

Wenn Ihre Verwendung mit Artikeln tatsächlich zuerst = Artikel A und Abkürzungen = Artikel B ist, würde ich vorschlagen, den Glossaren einige Schlüssel hinzuzufügen und zu ermitteln, ob das Akronym verwendet wurde oder nicht, um zu erkennen, welcher der Artikel zu verwenden ist.

Hinweis: Ich habe dem Befehl keine Fehlerabfangfunktion hinzugefügt, um zu erkennen, wenn ein Benutzer versucht hat, die Artikelersetzung zu verwenden, diese aber nicht definiert hat. Ich habe den Befehl jedoch so definiert, dass der Benutzer bei Bedarf einen Artikel als optionales Argument übergeben kann.

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

verwandte Informationen