Como tratar automaticamente "a" e "an" na frente das siglas com o pacote glossários?

Como tratar automaticamente "a" e "an" na frente das siglas com o pacote glossários?

Estou usando o glossariespacote para lidar com siglas e me deparei com a tarefa de decidir automaticamente o uso de "a" ou "an" na frente delas.

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

Como posso conseguir que o segundo produza “um SMA”? Não me importo de indicar uma vez para cada siglase precisa do "n" ou nãoquando o formato abreviado é usado.

Conheço o glossaries-prefixpacote que permite definir prefixos para todos os diferentes casos (primeiro uso, plural, singular, etc.). No entanto, usando este pacote, eu teria que usar manualmente seus diferentes comandos ( \pglsetc.) em vez dos comandos de siglas curtas ( \acetc.).

Existe uma maneira de fazer isso automaticamente?

Responder1

Eu comecei a usar oacronympacote para esse fim. Odocumentaçãomostra que define os comandos \iac(e \Iac) que inserem automaticamente o artigo indefinido em sua forma correta, conforme apropriado.

Responder2

Talvez isso possa ajudar você a começar:

Meu palpite é que a solução ideal seria um pacote extremamente complicado (como o reconhecimento de padrões de hifenização para vários idiomas) para reconhecer a vs an etc.

Se o seu uso com artigos for realmente primeiro = Artigo A e abreviações = Artigo B, então eu proporia adicionar algumas chaves aos glossários e detectar se o acrônimo foi usado ou não para reconhecer qual dos artigos usar.

Nota: não adicionei interceptação de erros ao comando para reconhecer quando um usuário tentou usar a substituição do artigo, mas não a definiu, mas defini o comando para que o usuário possa passar um artigo conforme necessário, como um argumento opcional.

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

informação relacionada