我正在准备一份土耳其语文件,它是黏着语二维元音和谐。这意味着有很多后缀,它们会根据与发音相关的单词改变形式。自动参考编号与土耳其语的这一方面完全不兼容。
这是一个简单的例子。假设我想说“根据定理 3.1...”,翻译成土耳其语就是“定理 3.1'e göre...”。获取此输出的代码显然是
Teorem \ref{theorem_tag}'e göre...
但是如果数字发生变化,比如说数字变成了 3.6,那么输出就会变成“Teorem 3.6'e göre...”,这是错误的。由于元音和谐和其他一些机制,它应该是“Teorem 3.6'ya göre...”。
是否有可能实现一个\ref_suffix{theorem_tag}{'a}
输出后缀正确形式的命令?元音和谐、清音化和其他后缀变化规则在算法上非常简单,并且不存在任何不规则性,至少在数字的情况下是这样。
编辑:根据 egreg 的要求,以下是土耳其语中元音和谐的规则。符号:设 X 和 Y 为元音集。X -> Y 形式的规则表示,如果一个音节的元音来自 X,则下一个音节的元音应该来自 Y。规则如下
{a,ı,o,u} -> {a,ı,o,u},
{a,e,ı,i} -> {a,e,ı,i},
{o,ö,u,ü} -> {a,e,u,ü}。
答案1
您可以使用 if-then 控制结构根据定理计数器的值来调整后缀的形式,例如使用包如果那么。这是 MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{ifthen}
\newtheorem{theorem}{Teorem}
\newcommand{\harmony}[1]{%
\ifthenelse{\equal{\ref{#1}}{1}}{\ref{#1}'e}{}%
\ifthenelse{\equal{\ref{#1}}{6}}{\ref{#1}'ya}{}%
}
\begin{document}
Teorem \harmony{thm} göre, so-and-so. Teorem \harmony{thm'} göre, this-and-that.
\begin{theorem}\label{thm}
Lorem ipsum
\end{theorem}
\setcounter{theorem}{5}
\begin{theorem}\label{thm'}
Lorem ipsum
\end{theorem}
\end{document}
显然,这只有在您可以为定理总数设置一个合理的低上限(在这种情况下,解决方案并不是真正通用/有效的)或土耳其数字系统相对于元音和谐非常系统化(不幸的是,我不懂土耳其语)的情况下才可行。原则上,ifthen 包允许在条件前提中进行比equal
我在此处使用的宏更复杂的比较。