Estoy escribiendo un documento en francés y tengo que lidiar con las formas de género de las palabras con el acro
paquete. Me gustaría producir algo como
tridimensionnelles (3D) (una forma femenina) o bidimensionnel (2D) (para una forma masculina)
Con el 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}
Puedo producir texto como
Pero el 3D entre paréntesis no aparece.
¿Tiene alguna idea para abordar las formas de género con el acro
paquete?
Respuesta1
acro
tiene interfaces para definir nuevas propiedades arbitrarias \DeclareAcroProperty
y nuevos comandos que \NewAcroCommand
se detallan en la documentación en las secciones29. Propiedadesy30. Comandos de siglas propias.
Sin embargo, para definir múltiples propiedades y una interfaz interna, creo que \DeclareAcroEnding
se puede abusar ligeramente con buenos resultados.
\DeclareAcroEnding{feminine}{}{}
define *-feminine
y *-feminine-form
equivale a *-plural
y *-plural-form
que están inicialmente vacíos. Cuando la forma femenina difiere mediante letras adjuntas a la forma masculina long-feminine=les
, se puede establecer, o cuando difiere más sustancialmente, long-feminine-form=tridimensionelles
se puede utilizar para indicarlo en su totalidad.
Luego necesitamos agregar nuevas \ac
variantes para aplicar estas propiedades, por ejemplo
\NewAcroCommand \acF {m}
{ \acrofeminine \UseAcroTemplate {first} {#1} }
\NewAcroCommand \AcF {m}
{ \acrofeminine \acroupper \UseAcroTemplate {first} {#1} }
(tenga en cuenta que estoy usando F
para evitar chocar con el ya existente\acf
comandos de tipo ya existentes que fuerzan la apariencia completa). Otras variantes deben definirse explícitamente individualmente, pero pueden basarse en las definiciones encontradas.en la fuente.
\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 el plural femenino, creo que tenemos que declarar una terminación separada \DeclareAcroEnding{feminineplural}{s}{s}
usando el mismo valor predeterminado que para la plural
terminación. Desafortunadamente, no veo cómo podemos heredar las feminine
terminaciones, por lo que esto requerirá cierta duplicación, incluso si al plural solo se le agrega una 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}
Probablemente se podría construir una interfaz un poco mejor que la explotación \DeclareAcroEnding
, pero no sin una gran cantidad de código repetitivo o sin depender de la expl3
interfaz.
Respuesta2
La solución perezosa, cuando se tiene un acrónimo que puede tomar dos formas que difieren arbitrariamente (ya sea en uno o en todos los cortos/largos/primeros/plurales/etc.), es definir dos acrónimos estrechamente conectados.
La uselist
propiedad de una sigla permite las siglas 2d
y 2dB
permite 2d
considerarse usada si 2dB
se ha usado, aunque no se haya usado, y viceversa.
\DeclareAcronym{2d}{
short = 2D,
long = bidimensionnel,
uselist = {2dB},
}
\DeclareAcronym{2dB}{
short = 2D,
long = bidimensionnelB,
uselist = {2d},
}
Las dos siglas pueden diferir tanto o tan poco (incluso nada si es necesario) y dentro del texto no compartirán un primer uso común. Esto puede ampliarse a un número arbitrario de siglas si es necesario.
Sin embargo, existen algunas advertencias al combinar acrónimos como este:
El restablecimiento del uso sigue siendo local para el acrónimo,
\acreset{2d}
solo se restablecerá2d
mientras, si se ha utilizado,2dB
aún recordará que se utilizó.\acsetup{single=true}
dará un comportamiento inesperado si se usan ambos pero uno de ellos solo se usa una vez.Como tenemos dos acrónimos, enumeraremos
\printacronyms
ambos a menos que su forma de lista sea idéntica (por ejemplo, si comparten una forma corta/larga pero difieren en las propiedades plurales). Esto se puede resolver etiquetando una de las siglas y usandoexclude
en\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}
sin embargo, esto también puede tener consecuencias inesperadas si solo
2dB
termina usándose en el documento y\acsetup{list/display=used}
se configura.