Пакет acro, слово род женский и мужской во французском языке

Пакет 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}установлено.

Связанный контент