法语中“Package acro”一词表示女性和男性

法语中“Package acro”一词表示女性和男性

我正在用法语写一份文档,我必须用这个acro包处理单词的性别形式。我想制作类似

tridimensionnelles (3D)(阴性形式)或 bidimensionnel (2D)(阳性形式)

使用代码:

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

我可以生成类似的文字

在此处输入图片描述

但括号里的3D没有出现。

acro您有什么想法来用这个包来处理性别形式吗?

答案1

acro具有用于定义任意新属性的接口\DeclareAcroProperty,以及用于定义新命令的接口\NewAcroCommand,以及用于在文档各节中详细说明的29. 属性30. 拥有缩写命令

但是,对于定义多个属性和一个内部接口,我认为\DeclareAcroEnding可以稍微滥用以达到良好的效果。 \DeclareAcroEnding{feminine}{}{}定义*-feminine*-feminine-form等同于*-plural*-plural-form,它们最初都是空的。女性形式与男性形式的区别在于附加的字母long-feminine=les,或者差异更大的地方long-feminine-form=tridimensionelles可以用来完整地陈述它。

然后我们需要添加新的\ac变体来应用这些属性,例如

\NewAcroCommand \acF {m}
  { \acrofeminine \UseAcroTemplate {first} {#1} }
\NewAcroCommand \AcF {m}
  { \acrofeminine \acroupper \UseAcroTemplate {first} {#1} }

(注意我使用是F为了避免与已经存在的\acf强制完整显示的现有 -type 命令发生冲突)。其他变体需要单独明确定义,但可以基于找到的定义在源中

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

代码输出

对于阴性复数,我认为我们必须\DeclareAcroEnding{feminineplural}{s}{s}使用与plural复数相同的默认值声明一个单独的结尾。不幸的是,我不知道如何继承结尾feminine,所以这将需要一些重复,即使复数只是附加一个 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}

代码输出


也许可以构建一个比利用稍微好一点的界面\DeclareAcroEnding,但这需要大量的样板代码或依赖界面expl3

答案2

当您有一个首字母缩略词,其可能采用两种任意不同的形式(无论是短/长/首字母/复数/等等中的一个还是全部)时,偷懒的解决方案是定义两个紧密相连的首字母缩略词。

首字母缩略词的属性uselist允许使用首字母缩略词2d,并且2dB允许2d将其自身视为已使用,如果2dB已经使用,即使其本身尚未使用,反之亦然。

\DeclareAcronym{2d}{
    short   = 2D,
    long    = bidimensionnel,
    uselist = {2dB},
}
\DeclareAcronym{2dB}{
    short   = 2D,
    long    = bidimensionnelB,
    uselist = {2d},
}

两个缩写词可以有很大差异,也可以很小差异(必要时甚至可以完全不同),并且在文本中不会有共同的首次使用。如果需要,可以扩展到任意数量的缩写词。

不过,像这样组合使用首字母缩略词也存在一些注意事项:

  • 重置使用仍然局限于首字母缩略词,\acreset{2d}只会2d在已使用过的情况下重置,并且2dB仍会记得它已被使用。

  • \acsetup{single=true}如果两者都使用但其中一个只使用一次,将会产生意外的行为。

  • 由于我们有两个首字母缩略词,因此除非它们的列表形式相同(例如,如果它们共享短/长形式,但复数属性不同),否则将同时列出它们。这可以通过标记其中一个首字母缩略词并使用来\printacronyms解决exclude\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}
    

    2dB然而,如果最终仅在文档中使用并\acsetup{list/display=used}设置,这也会产生意想不到的后果。

相关内容