如何在章节标题和书签中正确显示字典中定义的翻译字符串?

如何在章节标题和书签中正确显示字典中定义的翻译字符串?

从章节标题和书签的角度来看,translator包中的翻译字符串的行为不同,取决于它们是直接在文件中定义.tex还是在字典中定义:在后一种情况下,章节标题和书签都只显示翻译字符串的键而不是翻译。

案件好的,都在章节标题和书签中

在以下 MCE 中,翻译后的字符串直接定义.tex文件中用于章节标题通过\translatelet

\documentclass[english]{article}
\usepackage{translator}
\usepackage{babel}
\usepackage{hyperref}
%
\deftranslation[to=English]{key-from-document}{translation from document}
%
\translatelet\MacroFromDocument{key-from-document}
%
\begin{document}
\section{\MacroFromDocument}
Indirect (macro) use of \verb|\translate| (from document).
\end{document}

本案是

  • 好的,在章节标题中,
  • 好的,在书签中,

因为两处都出现了“翻译自文档”的翻译

案件好的在章节标题中,但是不行在书签中

在以下 MCE 中,翻译后的字符串直接定义.tex文件中用于章节标题直接与 \translate

\documentclass[english]{article}
\usepackage{translator}
\usepackage{babel}
\usepackage{hyperref}
%
\deftranslation[to=English]{key-from-document}{translation from document}
%
\begin{document}
\section{\translate{key-from-document}}
Direct use of \verb|\translate| (from document).
\end{document}

此案是:

  • 在章节标题中可以:其中出现了“文档翻译”的翻译,
  • 不是书签中的内容正常:翻译已被键“key-from-document”所取代。

案件不行在章节标题和书签中

在以下 MCE 中,翻译后的字符串字典中定义用于章节标题通过\translatelet直接与 \translate

\begin{filecontents}{mydictionary.dict}
\ProvidesDictionary{mydictionary}{English}
\deftranslation{key-from-dictionary}{translation from dictionary}
\end{filecontents}
%
\documentclass[english]{article}
\usepackage{translator}
\usepackage{babel}
\usepackage{hyperref}
%
\deftranslation[to=English]{key-from-document}{translation from document}
\translatelet\MacroFromDictionary{key-from-dictionary}
%
\begin{document}
\section{\MacroFromDictionary}
Indirect (macro) use of \verb|\translate| (from dictionary).
\section{\translate{key-from-dictionary}}
Direct use of \verb|\translate| (from dictionary).
\end{document}

此案是:

  • 不是在章节标题中可以:翻译被键“key-from-document”替换,
  • 不是书签中没问题:翻译被键“key-from-document”替换。

所有错误情况都与超链接警告有关:“PDF 字符串中不允许使用标记(PDFDocEncoding):[...] 在输入行中删除“\translate”[...]”但我不知道如何解决它。

答案1

以下似乎有效。我有

  1. 将词典重命名为mydictionary-English
  2. 添加\usedictionary {mydictionary}到序言中

最后一个案例的代码:

编辑:抱歉,我只检查了章节标题,而不是书签;书签又是另一个问题。间接使用没问题,但直接使用(受保护的)\translate宏就不合hyperref我的心意了。

\documentclass[english]{article}
\usepackage{translator}
\usepackage{babel}
\usepackage{hyperref}
\usepackage{filecontents}

\begin{filecontents*}{mydictionary-English.dict}
\ProvidesDictionary{mydictionary}{English}
\deftranslation{key-from-dictionary}{translation from dictionary}
\end{filecontents*}
\usedictionary {mydictionary}


\begin{document}

\translatelet\MacroFromDictionary{key-from-dictionary}

\section{\MacroFromDictionary}
Indirect (macro) use of \verb|\translate| (from dictionary).

\section{\translate{key-from-dictionary}}
Direct use of \verb|\translate| (from dictionary).
\end{document}

相关内容