使用选项生成文档的多个版本

使用选项生成文档的多个版本

在我开始之前,我想说我已经读过这个帖子这个帖子

我正在用两种语言写一篇论文。我想在原版下方写上每个段落和标题的其他语言版本。

是否可以使用相同的选项切换两种语言

Lang == Esp

\if{Lang=Eng}
   \chapter{LITERATURE}
\elif
   \chapter{LITERATURA}

或者

\if{Lang=Eng}
   {I love you.}
\elif
   {Te quiero.}

有什么办法可以做到这一点?

答案1

您可以使用如下方法,我用它来创建 CV 文档的各种版本。

\documentclass{minimal}

\usepackage{ifthen}
\newboolean{somevariable}
\setboolean{somevariable}{false}

\begin{document}

\ifthenelse{\boolean{somevariable}}{Text if somevariable is true.}{Text if somevariable is false.}

\end{document}

答案2

总是有docstrip,它允许您使用特殊注释(称为保护)区分一个代码与另一个代码,并且还具有两个代码所共有的代码。

在我看来,这种方法相对于条件语句的优势在于,添加更多语言相当简单,避免了嵌套条件语句的麻烦。

例如,您可以有一个源文件(我们将其命名为source.dtx,但任何其他名称都可以):

\documentclass{book}
\begin{document}

%<english>\chapter{LITERATURE}
%<spanish>\chapter{LITERATURA}

%<*english>
\emph{The Tau Manifesto} is dedicated to one of the most important numbers in
mathematics, perhaps \emph{the} most important: the \emph{circle constant} relating
the circumference of a circle to its linear dimension. For millennia, the circle has
been considered the most perfect of shapes, and the circle constant captures the
geometry of the circle in a single number. Of course, the traditional choice for
the circle constant is $\pi$--but, as mathematician Bob Palais notes in his
delightful article ``$\pi$ Is Wrong!'', $\pi$ \emph{is wrong}. It's time to set
things right.
%</english>

%<*spanish>
\emph{El Manifiesto de Tau} está dedicado a uno de los números más importantes en
matemáticas, quizás \emph{el} más importante: la \emph{constante de círculo} que relaciona
la circunferencia de un círculo con su dimensión lineal. Durante milenios, el círculo ha
sido considerado la forma más perfecta, y la constante del círculo captura la
geometría del círculo en un solo número. Por supuesto, la elección tradicional para
la constante de círculo es $\pi$--pero, como señala el matemático Bob Palais en su
artículo encantador ``$\pi$ Is Wrong!'', $\Pi$ \emph{es incorrecto}. Es hora de arreglar las cosas.
%</spanish>

\end{document}

(样本文本取自这里并通过谷歌翻译为西班牙语)

那么您只需要一个所谓的“安装文件”:

\input docstrip % Loads the docstrip program
% Optional switches
\askforoverwritefalse % Allows it to overwrite older files without asking
\keepsilent % Reduces verbosity
\nopreamble % Removes preamble
\nopostamble % removes postamble
% Separating sources:
\generate{%
  %
  \file{english.tex}{%
    \from{source.dtx}{english}%
  }%
  %
  \file{spanish.tex}{%
    \from{source.dtx}{spanish}%
  }%
  %
}
% Exiting
\endbatchfile

它将根据 中english.tex标记为 的部分生成一个文件,并根据中标记为 的部分生成另一个文件。 中未标记的部分将进入两个输出文件。<english>source.dtxspanish.tex<spanish>source.dtxsource.dtx

要执行此操作,您只需在安装文件上运行 TeX:

> pdftex installation.ins

生成的结果english.tex如下:

\documentclass{book}
\begin{document}

\chapter{LITERATURE}

\emph{The Tau Manifesto} is dedicated to one of the most important numbers in
mathematics, perhaps \emph{the} most important: the \emph{circle constant} relating
the circumference of a circle to its linear dimension. For millennia, the circle has
been considered the most perfect of shapes, and the circle constant captures the
geometry of the circle in a single number. Of course, the traditional choice for
the circle constant is $\pi$--but, as mathematician Bob Palais notes in his
delightful article ``$\pi$ Is Wrong!'', $\pi$ \emph{is wrong}. It's time to set
things right.


\end{document}

答案3

您可以使用 iflang 包:

\documentclass{article}
\usepackage[english,ngerman]{babel}
\usepackage{iflang}
\begin{document}

\IfLanguageName{english}{This is english}{This is not english}

\IfLanguageName{ngerman}{Das ist deutsch}{Das ist nicht  deutsch}

\selectlanguage{english}

\IfLanguageName{english}{This is  english}{This not english}

\IfLanguageName{ngerman}{Das ist deutsch}{Das ist nicht deutsch}

\end{document}

在此处输入图片描述

答案4

您可以使用另一个 TeX 引擎 ConTeXt 非常顺利地完成此操作。它有一个模式选项,您可以将其作为选项传递。使用 进行编译时mode=thismode,正确\startmode[thismode] \stopmode对中包含的所有内容都将被解释。

这是 MWE

\startmode[english]
\language[en]
\stopmode
\startmode[espanol]
\language[es]
\stopmode

\starttext
\startmode[english]
I love you
\stopmode
\startmode[espanol]
Te quiero.
\stopmode
\stoptext

context --mode=english mwe.tex将此 MWE 粘贴到 mwe.tex 中,并比较和的输出context --mode=espanol mwe.tex。如果您想让两个文本并排,context --mode=english,espanol mwe.tex请这样做。

相关内容