私はフランス語で文書を書いていますが、パッケージで単語の性形式を扱う必要があります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
(完全な外観を強制する既存の -type コマンドとの衝突を避けるために使用しています\acf
)。他のバリアントは個別に明示的に定義する必要がありますが、見つかった定義に基づいて定義できます。ソース内。
\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
1 つの頭字語が任意に異なる 2 つの形式 (短縮形/長文/名詞/複数形などのいずれかまたはすべて) をとる可能性がある場合の簡単な解決策は、密接に関連した 2 つの頭字語を定義することです。
uselist
頭字語の特性により、頭字語自体2d
は使用されていない場合でも、使用されている場合は使用されているとみなすこと2dB
ができ、その逆も同様です。2d
2dB
\DeclareAcronym{2d}{
short = 2D,
long = bidimensionnel,
uselist = {2dB},
}
\DeclareAcronym{2dB}{
short = 2D,
long = bidimensionnelB,
uselist = {2d},
}
2 つの頭字語は多少異なっていてもよく (必要であればまったく異なっていなくてもよい)、テキスト内で共通の最初の使用法を共有しません。必要に応じて、任意の数の頭字語に拡張できます。
ただし、このように頭字語を組み合わせる場合には、いくつか注意点があります。
使用法のリセットは頭字語に対してローカルのままであり、使用されている間
\acreset{2d}
のみリセットされます2d
が、使用されている場合は、2dB
使用されたことが記憶されます。\acsetup{single=true}
両方が使用され、そのうちの 1 つが 1 回だけ使用されると、予期しない動作が発生します。頭字語が2つあるため、リスト形式が同一でない限り(例えば、短縮形/長形式は同じだが複数形が異なる場合)、両方がリストされます。これは、頭字語の1つにタグを
\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}
設定された場合には予期しない結果が生じる可能性があります。