将 tikz 日历名称翻译成波斯语?

将 tikz 日历名称翻译成波斯语?

我看到了问题如何翻译 tikz 日历名称?我尝试用以下代码制作波斯语日历:

\documentclass{standalone}

\usepackage[farsi]{babel}
\usepackage[farsi]{translator}

\usepackage{tikz}
\usetikzlibrary{calendar}

\begin{document}

\sffamily\scriptsize
\tikz
  \calendar [dates=2000-01-01 to 2000-12-31,
    month list,month label left,month yshift=1.25em]
    if (Sunday) [black!50];

\end{document}

喜欢那个问题,但它显示以下错误:!LaTeX 错误:LAE' unknown. ! LaTeX Error: Command \alefhamza unavailable in encoding OT1. ! LaTeX Error: Unknown optiontranslator'. ! LaTeX Error: Font familyLAE+cmss 的编码方案 farsi' 未知。

我能做什么?坦克

答案1

我不认识波斯语,但我的其中一种语言不受该软件包的开箱即用支持translator。很遗憾calendar不能直接使用 Babel,因为语言定义文件包括月份名称,并且可用于更多种类的语言。但编写自己的语言并不困难。

您需要找到translator-months-dictionary-English.dict它并将其复制到您的工作目录中translator-months-dictionary-Farsi.dict。在 Linux 上,对于威尔士语,您可以使用

cp $(kpsewhich translator-months-dictionary-English.dict) ./translator-months-dictionary-Welsh.dict

只需使用您通常使用的任何方法来查找、复制和重命名文件即可。该.dict文件现在是其中的一部分translator,不再是 Beamer 的一部分,而是一个独立的软件包。

在文本编辑器中打开重命名的文件,将威尔士语单词和缩写替换为英语的波斯语翻译。将Welsh顶部的单词更改为Farsi

\ProvidesDictionary{translator-months-dictionary}{Welsh}

\providetranslation{January}{Ionawr}
\providetranslation{February}{Chwefror}
\providetranslation{March}{Mawrth}
\providetranslation{April}{Ebrill}
\providetranslation{May}{Mai}
\providetranslation{June}{Mehefin}
\providetranslation{July}{Gorffennaf}
\providetranslation{August}{Awst}
\providetranslation{September}{Medi}
\providetranslation{October}{Hydref}
\providetranslation{November}{Tachwedd}
\providetranslation{December}{Rhagfyr}

\providetranslation{Jan}{Ion}
\providetranslation{Feb}{Chwe}
\providetranslation{Mar}{Maw}
\providetranslation{Apr}{Ebr}
\providetranslation{May}{Mai}
\providetranslation{Jun}{Meh}
\providetranslation{Jul}{Gorff}
\providetranslation{Aug}{Awst}
\providetranslation{Sep}{Medi}
\providetranslation{Oct}{Hyd}
\providetranslation{Nov}{Tach}
\providetranslation{Dec}{Rhag}

\providetranslation{Monday}{Llun}
\providetranslation{Tuesday}{Mawrth}
\providetranslation{Wednesday}{Mercher}
\providetranslation{Thursday}{Iau}
\providetranslation{Friday}{Gwener}
\providetranslation{Saturday}{Sadwrn}
\providetranslation{Sunday}{Sul}

\providetranslation{Mon}{Llun}
\providetranslation{Tue}{Maw}
\providetranslation{Wed}{Mer}
\providetranslation{Thu}{Iau}
\providetranslation{Fri}{Gwe}
\providetranslation{Sat}{Sad}
\providetranslation{Sun}{Sul}

也就是说,不是英语的部分应该是波斯语,而Welsh英语单词应该是Farsi

然后我用

\documentclass[welsh]{standalone}
\usepackage{babel}
\usepackage{translator}

\usepackage{tikz}
\usetikzlibrary{calendar}

\begin{document}

\sffamily\scriptsize
\tikz
  \calendar [dates=2000-01-01 to 2000-12-31,
    month list,month label left,month yshift=1.25em]
    if (Sunday) [black!50];

\end{document}

结果

威尔士日历

答案2

month text=\ifcase\the\numexpr\pgfcalendarcurrentmonth-1 translationofJan\or translationofFeb ...\or translationofDec\fi您可以在日历选项列表中使用。

相关内容