![我可以将我的翻译与原文保留在一起吗?](https://linux22.com/image/232773/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%E6%88%91%E7%9A%84%E7%BF%BB%E8%AF%91%E4%B8%8E%E5%8E%9F%E6%96%87%E4%BF%9D%E7%95%99%E5%9C%A8%E4%B8%80%E8%B5%B7%E5%90%97%EF%BC%9F.png)
我有一篇用 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
答案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.}