Estou escrevendo um documento em francês e tenho que lidar com as formas de gênero das palavras no acro
pacote. Eu gostaria de produzir algo como
tridimensionnelles (3D) (uma forma feminina) ou bidimensionnel (2D) (para uma forma masculina)
Com o código:
\documentclass[12pt,twoside,openright]{book}
\usepackage[version=3]{acro} %list of abbreviations
\acsetup{
list/template = longtable,
list/display = used,
uppercase/list,
format/alt
}
\DeclareAcronym{2d}{
short = 2D,
long = bidimensionnel,
alt-format = tridimensionnelles}
\DeclareAcronym{3d}{
short = 3D,
long = tridimensionnel,
alt = tridimensionnelles}
\begin{document}
\ac{2d} is masculine gender form.
\newline
\aca{3d} is the feminine gender form, but there is not the short form (3D).
\end{document}
Posso produzir textos como
Mas o 3D entre parênteses não aparece.
Você tem alguma ideia de como lidar com formas de gênero no acro
pacote?
Responder1
acro
possui interfaces para definir novas propriedades arbitrárias com \DeclareAcroProperty
e novos comandos \NewAcroCommand
detalhados na documentação nas seções29. Propriedadese30. Comandos de siglas próprias.
No entanto, para definir múltiplas propriedades e uma interface interna, acho que \DeclareAcroEnding
pode ser um pouco mal utilizado com bons resultados.
\DeclareAcroEnding{feminine}{}{}
define *-feminine
e *-feminine-form
equivale a *-plural
e *-plural-form
que estão todos inicialmente vazios. Onde a forma feminina difere por letras anexadas à forma masculina long-feminine=les
pode ser definida, ou onde ela difere mais substancialmente long-feminine-form=tridimensionelles
pode ser usada para declará-la em sua totalidade.
Então precisamos adicionar novas \ac
variantes para aplicar essas propriedades, por exemplo
\NewAcroCommand \acF {m}
{ \acrofeminine \UseAcroTemplate {first} {#1} }
\NewAcroCommand \AcF {m}
{ \acrofeminine \acroupper \UseAcroTemplate {first} {#1} }
(observe que estou usando F
para evitar conflitos com os \acf
comandos -type já existentes que forçam a aparência completa). Outras variantes precisam ser explicitamente definidas individualmente, mas podem ser baseadas nas definições encontradasna fonte.
\documentclass[12pt,twoside,openright]{book}
\usepackage{acro}[=v3]
\DeclareAcroEnding{feminine}{}{}
\DeclareAcronym{2d}{
short = 2D,
long = bidimensionnel,
long-feminine=les,
}
\DeclareAcronym{3d}{
short = 3D,
long = tridimensionnel,
long-feminine-form=tridimensionnelles,
}
\NewAcroCommand \acF {m}
{ \acrofeminine \UseAcroTemplate {first} {#1} }
\NewAcroCommand \AcF {m}
{ \acrofeminine \acroupper \UseAcroTemplate {first} {#1} }
\begin{document}
\ac{2d} \acreset{2d} \acF{2d}
\acF{3d} \acreset{3d} \ac{3d}
\printacronyms[heading=none]
\end{document}
Para o plural feminino, acho que temos que declarar uma desinência separada \DeclareAcroEnding{feminineplural}{s}{s}
usando o mesmo padrão da plural
desinência. Infelizmente não vejo como podemos herdar as feminine
terminações, então isso exigirá alguma duplicação, mesmo que o plural apenas acrescente um s.
\documentclass[12pt,twoside,openright]{book}
\usepackage{acro}[=v3]
\DeclareAcroEnding{feminine}{}{}
\DeclareAcroEnding{feminineplural}{s}{s}
\DeclareAcronym{2d}{
short = 2D,
long = bidimensionnel,
long-feminine=les,
long-feminineplural=less
}
\NewAcroCommand \acpF {m}
{ \acrofeminineplural \UseAcroTemplate {first} {#1} }
\begin{document}
\acp{2d} \acreset{2d} \acpF{2d}
\printacronyms[heading=none]
\end{document}
Uma interface um pouco melhor do que a exploração \DeclareAcroEnding
provavelmente poderia ser construída, mas não sem muito código padrão ou sem depender da expl3
interface.
Responder2
A solução preguiçosa, quando você tem um acrônimo que pode assumir duas formas que diferem arbitrariamente (seja em um ou em todos os curtos/longos/primeiro/plural/etc), é definir dois acrônimos fortemente conectados.
A uselist
propriedade de uma sigla permite as siglas 2d
e 2dB
permite 2d
considerar-se utilizada se 2dB
tiver sido utilizada, mesmo que não o tenha, e vice-versa.
\DeclareAcronym{2d}{
short = 2D,
long = bidimensionnel,
uselist = {2dB},
}
\DeclareAcronym{2dB}{
short = 2D,
long = bidimensionnelB,
uselist = {2d},
}
As duas siglas podem diferir tanto ou pouco (ou mesmo nada, se necessário) e dentro do texto não compartilharão um primeiro uso comum. Isto pode ser estendido a um número arbitrário de siglas, se necessário.
Existem algumas advertências ao combinar siglas como esta:
A redefinição do uso permanece local para a sigla,
\acreset{2d}
só será redefinida2d
enquanto, se tiver sido usado,2dB
ainda lembrará que foi usado.\acsetup{single=true}
apresentará um comportamento inesperado se ambos forem usados, mas um deles for usado apenas uma vez.Como temos dois acrônimos, listaremos
\printacronyms
ambos, a menos que sua forma de lista seja idêntica (por exemplo, se eles compartilharem uma forma curta/longa, mas diferirem nas propriedades plurais). Isso pode ser resolvido marcando uma das siglas e usandoexclude
em\printacronyms
\DeclareAcronym{2d}{ short = 2D, long = bidimensionnel, uselist = {2dB}, } \DeclareAcronym{2dB}{ short = 2D, long = bidimensionnelB, uselist = {2d}, tag = {B-form}, } \begin{document} \ac{2d} \ac{2dB} \printacronyms[heading=none,exclude={B-form}] \end{document}
no entanto, isso também pode ter consequências inesperadas se
2dB
acabar sendo usado no documento e\acsetup{list/display=used}
for definido.