
Estou usando o glossaries
pacote 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-prefix
pacote 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 ( \pgls
etc.) em vez dos comandos de siglas curtas ( \ac
etc.).
Existe uma maneira de fazer isso automaticamente?
Responder1
Eu comecei a usar oacronym
pacote 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}