我真的找不到任何匹配的东西,也许有人有一个想法或起点:
我想维护一组用 Kile 编写的文档,使用 LaTeX 通过 xetex 转换为 pdf 格式。这些文档必须不时更新。我要求每份文档都提供两到三种语言版本。
我不想为不同的语言维护单独的源文件/集合,因为这肯定会导致文档不同步。相反,我设想的是这样的:
- each token of natural language ("phrase") will be enclosed in a macro
- the macro fetches the translation of the phrase from a local service
- this service could be a script reading translations from a file
由于有适合维护此类短语集合的应用程序,这对我来说似乎是一种自然的方法。但是,我找不到一个好的起点。
答案1
好的,我通过尝试并考虑我在其他地方找到的示例,设法整理出了自己的解决方案。这是我目前在项目开始时使用的方法。到目前为止,它运行良好:
%%%%%%%%%%%%%%%
% this is a document holding multiple languages
% switch between ENGLISH and GERMAN by commenting one of the following lines:
\usepackage[ngerman,english]{babel} % makes ENGLISH content
%\usepackage[english,ngerman]{babel} % makes GERMAN content
% this is the macro to define phrases in two languages:
\newcommand{\babel}[2]{\ifnum\pdfstrcmp{\languagename}{english}=0 {#2}\else{#1}\fi}
\newcommand{\babelDE}[1]{\ifnum\pdfstrcmp{\languagename}{ngerman}=0 {#1}\fi}
\newcommand{\babelEN}[1]{\ifnum\pdfstrcmp{\languagename}{english}=0 {#1}\fi}
% example: \babel{Deutscher Text}{english text}
% example: \babelDE{deutscher Text}
% example: \babelEN{english text}
%%%%%%%%%%%%%%%
答案2
使用伊夫兰包可以编写一个稍微干净的命令,相当于上一个答案中的命令:
\usepackage[ngerman,english]{babel}
%\usepackage[english,ngerman]{babel}
\usepackage{iflang}
\newcommand{\babel}[2]{\IfLanguageName{english}{#1}{#2}}
答案3
我遇到了类似的问题,@KJO 建议使用catchfilebetweentags
如下包https://tex.stackexchange.com/a/4952/170109. 它对我有用。