\今天和国际化

\今天和国际化

我正在编写一个支持国际化支持的 LaTeX 文档,如下所述维基百科。这是我的最小文件:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[english,frenchb,spanish]{babel}

%% Required package.                                                                                                                                                   
\usepackage{ifthen}

%% TeX function that generates the language commands.                                                                                                                  
\def\localedef#1#2{
\ifthenelse{ \equal{\locale}{#1} }{
  \selectlanguage{#2}
  \expandafter\def\csname#1\endcsname ##1{##1}
  }{
  \expandafter\def\csname#1\endcsname ##1{}
  }
}

%% Selected language. Can be placed anywhere before the language commands.                                                                                             
\providecommand\locale{fr}

%% Language commands.                                                                                                                                                  
\localedef{en}{english}
\localedef{fr}{frenchb}
\localedef{es}{spanish}

\usepackage{hyperref}

\begin{document}

\title{\en{Example of \LaTeX \ document with multi-language support}                                                                                                   
\fr{Exemple de document \LaTeX \ avec support multi-langues}                                                                                                           
\es{Ejemplo de documento con soporte multi-idioma}}
\author{\en{Author}\fr{Auteur}\es{Autor}}
\date{\today}
\maketitle

\en{Hello, this document was written based on explanations available here}
\fr{Bonjour, ce document a été écrit en suivant les explications disponibles ici}
\es{Buenos dias, este documento fue elaborado sobre la base de las explicaciones disponibles aquí}
:

\url{https://en.wikibooks.org/wiki/LaTeX/Internationalization}

\end{document}

如您所见,我可以轻松地在语言之间切换,这里我选择了法语(\providecommand\locale{fr})。当我使用 进行编译pdflatex并使用 进行可视化时evince,一切都运行正常,只是 给出的日期\today是西班牙语:

在此处输入图片描述

我做错了什么?

附言:我在 Xubuntu 14.04 上,并且我的所有软件包都是最新的。

答案1

稍微重写一下选择代码,你就可以根据文档开头的语言来做出选择。这样你只需要写,例如

\AtBeginDocument{\selectlanguage{french}}

选择法语版本。

示例输出

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{etoolbox}
\usepackage[english,french,spanish]{babel}
\usepackage[hyphens]{url}
\usepackage{hyperref}

\AtBeginDocument{\selectlanguage{french}}

\newcommand{\localedef}[2]{\csdef{#1}##1{\iflanguage{#2}{##1}{}\ignorespaces}}
\localedef{en}{english}
\localedef{fr}{french}
\localedef{es}{spanish}

\begin{document}

\title{\en{Example of \LaTeX\ document with multi-language support}
\fr{Exemple de document \LaTeX\ avec support multi-langues}
\es{Ejemplo de documento \LaTeX\ con soporte multi-idioma}}
\author{\en{Author}\fr{Auteur}\es{Autor}}
\date{\today}
\maketitle

\en{Hello, this document was written based on explanations available here}
\fr{Bonjour, ce document a été écrit en suivant les explications disponibles ici}
\es{Buenos dias, este documento fue elaborado sobre la base de las explicaciones disponibles aquí}:
\begin{quote}
  \url{https://tex.stackexchange.com/questions/186033/today-and-internationalization}
\end{quote}

\end{document}

以上\localedef只是检测当前语言是否符合您提供的缩写,如果符合则输出其文本,否则不输出任何内容。我已\ignorespaces在此命令的末尾添加了一个,因为就像在您的示例中一样,不同的变体通常从新行开始,这可能会在输出中添加不必要的空格。etoolbox为了简单起见,我使用了来自的命令。

请注意,frenchb现在已被弃用,应改用french

相关内容