저는 프랑스어로 문서를 작성 중인데 패키지에서 단어의 성별 형태를 처리해야 합니다 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
그런 다음 이러한 속성을 적용하려면 새로운 -variants를 추가해야 합니다 . 예:
\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
임의로 다른 두 가지 형식(짧은/긴/첫 번째/복수형 등 중 하나 또는 전부)을 취할 수 있는 하나의 두문자어가 있는 경우 게으른 해결책은 두 개의 밀접하게 연결된 두문자어를 정의하는 것입니다.
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}
설정된 경우 예상치 못한 결과를 초래할 수 있습니다 .