Ich schreibe ein Dokument auf Französisch und muss mich mit Geschlechtsformen von Wörtern im acro
Paket befassen. Ich möchte etwas wie
tridimensionnelles (3D) (eine weibliche Form) oder bidimensionnel (2D) (für eine männliche Form)
Mit dem Code:
\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}
Ich kann Texte produzieren wie
Aber das 3D in den Klammern wird nicht angezeigt.
Habt ihr Ideen, wie man mit dem acro
Paket auf Geschlechterformen eingehen kann?
Antwort1
acro
verfügt über Schnittstellen zum Definieren beliebiger neuer Eigenschaften mit \DeclareAcroProperty
und neuer Befehle mit\NewAcroCommand
in der Dokumentation in den Abschnitten detailliert beschrieben werden.29. EigenschaftenUnd30. Eigene Akronym-Befehle.
Ich denke jedoch, dass es zum Definieren mehrerer Eigenschaften und einer internen Schnittstelle \DeclareAcroEnding
leicht missbraucht werden kann, um gute Ergebnisse zu erzielen.
\DeclareAcroEnding{feminine}{}{}
Definitionen *-feminine
und *-feminine-form
Äquivalente zu *-plural
und *-plural-form
sind alle zunächst leer. Wo sich die weibliche Form durch Buchstaben unterscheidet, die an die männliche Form angehängt werden, long-feminine=les
kann gesetzt werden, oder wo sie sich wesentlicher unterscheidet, long-feminine-form=tridimensionelles
kann verwendet werden, um sie in ihrer Gesamtheit anzugeben.
Dann müssen wir neue -Varianten hinzufügen, \ac
um diese Eigenschaften anzuwenden, z. B.
\NewAcroCommand \acF {m}
{ \acrofeminine \UseAcroTemplate {first} {#1} }
\NewAcroCommand \AcF {m}
{ \acrofeminine \acroupper \UseAcroTemplate {first} {#1} }
(Hinweis: Ich verwende, F
um Konflikte mit den bereits vorhandenen zu vermeiden\acf
-type-Befehlen zu vermeiden, die das vollständige Erscheinungsbild erzwingen). Andere Varianten müssen einzeln explizit definiert werden, können aber auf den gefundenen Definitionen basieren.in der Quelle.
\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}
Für den weiblichen Plural müssen wir meiner Meinung nach eine separate Endung \DeclareAcroEnding{feminineplural}{s}{s}
mit demselben Standard wie für die plural
Endung deklarieren. Leider sehe ich nicht, wie wir die feminine
Endungen erben können, daher wird dies einige Duplikate erfordern, selbst wenn der Plural nur ein s anhängt.
\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}
Es ließe sich wahrscheinlich eine etwas schönere Schnittstelle als die ausgenutzte \DeclareAcroEnding
erstellen, allerdings nicht ohne viel Boilerplate-Code oder ohne Abhängigkeit von der expl3
Schnittstelle.
Antwort2
Wenn ein Akronym zwei beliebig unterschiedliche Formen annehmen kann (sei es in einer oder allen der Formen Kurz/Lang/Vorname/Plural usw.), besteht die einfache Lösung darin, zwei eng miteinander verbundene Akronyme zu definieren.
Deruselist
Eigenschaft eines Akronyms ermöglicht es, 2d
dass 2dB
Akronyme 2d
sich selbst als verwendet betrachten, wenn 2dB
sie verwendet wurden, auch wenn dies nicht der Fall ist, und umgekehrt.
\DeclareAcronym{2d}{
short = 2D,
long = bidimensionnel,
uselist = {2dB},
}
\DeclareAcronym{2dB}{
short = 2D,
long = bidimensionnelB,
uselist = {2d},
}
Die beiden Akronyme können sich beliebig stark oder wenig unterscheiden (bei Bedarf sogar überhaupt nicht) und haben innerhalb des Textes keine gemeinsame Erstverwendung. Dies kann bei Bedarf auf eine beliebige Anzahl von Akronymen ausgedehnt werden.
Allerdings sind bei der Kombination von Akronymen auf diese Weise einige Einschränkungen zu beachten:
Das Zurücksetzen der Verwendung bleibt lokal für das Akronym und
\acreset{2d}
wird nur zurückgesetzt2d
, wenn es, falls es verwendet wurde,2dB
weiterhin verwendet wird.\acsetup{single=true}
führt zu unerwartetem Verhalten, wenn beide verwendet werden, aber einer von beiden nur einmal verwendet wird.Da wir zwei Akronyme haben,
\printacronyms
werden beide aufgelistet, es sei denn, ihre Listenform ist identisch (z. B. wenn sie eine Kurz-/Langform haben, sich aber in den Pluraleigenschaften unterscheiden). Dies kann gelöst werden, indem eines der Akronyme markiert undexclude
in\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}
Allerdings kann auch dies unerwartete Folgen haben, wenn es nur
2dB
im Dokument verwendet und\acsetup{list/display=used}
festgelegt wird.