Pacote acro, palavra gênero feminino e masculino em francês

Pacote acro, palavra gênero feminino e masculino em francês

Estou escrevendo um documento em francês e tenho que lidar com as formas de gênero das palavras no acropacote. 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

insira a descrição da imagem aqui

Mas o 3D entre parênteses não aparece.

Você tem alguma ideia de como lidar com formas de gênero no acropacote?

Responder1

acropossui interfaces para definir novas propriedades arbitrárias com \DeclareAcroPropertye novos comandos \NewAcroCommanddetalhados 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 \DeclareAcroEndingpode ser um pouco mal utilizado com bons resultados. \DeclareAcroEnding{feminine}{}{}define *-femininee *-feminine-formequivale a *-plurale *-plural-formque estão todos inicialmente vazios. Onde a forma feminina difere por letras anexadas à forma masculina long-feminine=lespode ser definida, ou onde ela difere mais substancialmente long-feminine-form=tridimensionellespode ser usada para declará-la em sua totalidade.

Então precisamos adicionar novas \acvariantes 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 Fpara evitar conflitos com os \acfcomandos -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}

Saída de código

Para o plural feminino, acho que temos que declarar uma desinência separada \DeclareAcroEnding{feminineplural}{s}{s}usando o mesmo padrão da pluraldesinência. Infelizmente não vejo como podemos herdar as feminineterminaçõ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}

Saída de código


Uma interface um pouco melhor do que a exploração \DeclareAcroEndingprovavelmente poderia ser construída, mas não sem muito código padrão ou sem depender da expl3interface.

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 uselistpropriedade de uma sigla permite as siglas 2de 2dBpermite 2dconsiderar-se utilizada se 2dBtiver 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á redefinida 2denquanto, se tiver sido usado, 2dBainda 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 \printacronymsambos, 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 usando excludeem\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 2dBacabar sendo usado no documento e \acsetup{list/display=used}for definido.

informação relacionada