我可以将我的翻译与原文保留在一起吗?

我可以将我的翻译与原文保留在一起吗?

我有一篇用 LaTeX 编写的英文文章,我要将其翻译成俄语。我想让我的翻译与原文保持同步。这意味着我希望每个段落都尽可能接近其原始版本。理想情况下是这样的:

\documentclass{article}
\UseLanguage{English} % or Russian
\begin{document}
The technology described in the article is very complex.
  \inRussian{Технология, описанная в статье, очень сложна.}
\end{document}

序言将指定使用哪种语言,文档将自动编译为所选语言。是否有任何软件包可以让我以这种方式翻译文章?

答案1

定义两个宏,并根据需要交换它们的定义

\newcommand{\inRussian}[1]{#1}

\newcommand{\inEnglish}[1]{}

或者定义一个宏

\newcommand{\EngOrRus}[2]{#1}

当您想要切换语言时,请将#1 改为#2。

答案2

我通常会将 LaTeX 文件转换为采购订单文件(使用波阿)并使用专门的翻译工具,如虚拟然后可以从翻译的 PO 文件生成俄语 LaTeX 文件。稍后当英语发生变化时,可以使用标准 PO 合并工具轻松同步翻译。嗯,这听起来太复杂了,但它相当可扩展,而且我几乎每天都做这样的事情,所以这是我的自然选择。

答案3

您可以comment为此使用该包并为每种语言定义环境。这支持更长的文本部分,并且作为宏可能更有效。

\documentclass{article}
% (still needs font and input encoding for Russian text)
\usepackage{comment}
% change that the other way around to activate Russian language:
\includecomment{English}
\excludecomment{Russian} 


\begin{document}
\begin{English}
The technology described in the article is very complex.
\end{English}
\begin{Russian}
Технология, описанная в статье, очень сложна.
\end{Russian}
\end{document}

请注意,这似乎在 DTX 文件的文档文本中不起作用,很可能是因为 的 catcode 发生了变化%。但这与像您这样的普通文档无关。

答案4

我知道这个问题已经得到解答了,但我还是想分享一下我的看法。

我搜索的内容与 yegor256 完全相同,从其他答案中的指针开始,我整理了一个符合我需求的小 sty 文件。它支持同一文档中任意数量的不同语言。

%
% Environment settings
%

\newcommand{\setdoclang}[2]
{
    \main@language{#2}
    \def\doclang{#2}
    \def\doclangshort{#1}
}

\setdoclang{en}{english}

%
% Multilingual support commands
%
\newcommand{\langif}[3]
{
    \ifthenelse{\equal{#1}{\doclang} \or \equal{#1}{\doclangshort}}
        {#2}
        {#3}%
}
\newcommand{\lang}[2]{\langif{#1}{#2}{}}
\newcommand{\sectionlang}[2]{\lang{#1}{\section{#2}}}
\newcommand{\subsectionlang}[2]{\lang{#1}{\subsection{#2}}}
\newcommand{\subsubsectionlang}[2]{\lang{#1}{\subsubsection{#2}}}

它很有用,因为它还可以同步包的正确语言babel,这样您的文档将始终具有正确的语言环境设置。您只需在您的 tex 中编写如下代码:

% MULTILINGUAL SUPPORT
\usepackage[italian,english]{babel} %enables babel to every lang supported by your document
\usepackage{multilanguage} % import the file with the above definitions
\setdoclang{it}{italian} % set short and long language codes
                         % the second one must be known by babel
%\setdoclang{en}{english}
% END MULTILINGUAL SUPPORT

之后,您可以混合使用每种语言显示的常规文档部分(即文档结构、图像等)和仅针对某些语言显示的部分,如下所示:

% Sections, subsections, subsubsections:
\sectionlang{it}{Sezione 1} % in the first parameter you can freely use
                            % both short or long language codes
\sectionlang{english}{Section 1}

% Strings that are displayed only in a certain language
\lang{it}{Questa stringa appare solo in italiano.}
\lang{en}{This string shows up only in English.}

% When you have only two languages, you can simply rely on this if-else
% construct
\langif{it}{If vero: questo e' italiano.}{Else: this is for any language
different from Italian.}

相关内容