可以使用 LaTeX 包来维护同步文本翻译

可以使用 LaTeX 包来维护同步文本翻译

语境:

在我正在规划的文档文本中,我将会出现许多外语(当然对我来说是外语)的“字符串”。

我目前的计划是使用该glossaries软件包,因为它允许我:

  • 创建自定义类型
  • 添加键
  • 将其视为\gls{english name so I know what I am doing}易于维护的字符串。
  • 作为一种外语,我期望进行大量修正,并有一个单一的位置来维护和修复这些字符串
  • 将第一次使用视为外文引文(英文翻译)
    • 例如:\gls{My land is rich}可以轻松生产

M'fhearann saidhbhir(我的土地很肥沃)

  • 无论我使用单个单词、句子还是段落,只要我重新定义 gls 调用格式化输出的外观即可。

根据一个较老的问题: 我是否过度使用了词汇表包?我相信我也可以用来etoolbox做类似的事情

 \newentry{My land is rich}{M'fhearann saidhbhir}
 and use it with 
 \entry{My land is rich} (My land is rich)

问题:如果翻译有误,TeX 文件中的标签将不正确,但可以在定义文件中更正。这让我想知道是否有人已经编写了一个包来解决此类问题。

从概念上讲,有无数种方法可以以标签替换字符串的形式管理数据,但理想情况下,我仍然需要使用可识别的标签,因此像\entry{T1}\gls{T1}\T1(可以用创建\newcommand{}{})这样的东西不会有帮助,即使它们严格解决了问题。

我见过一些看起来非常有活力的包,所以想知道它们是否存在。

我唯一没有完全形成的概念是考虑重新定义一个新的自定义命令,其中包含类似以下内容的内容:\translate{T1}{my land is rich}第二个参数毫无用处,对作者和任何精通 TeX 的合作者来说纯粹是表面文章,而 T1 是使用任何我能使用的包(即glossaries或)填充的标签etoolbox

答案1

这里的想法是创建一个命令,\myterm它根据其第一个参数创建其他命令;然后可以在文档中使用这些创建的命令,并且会根据您的设置扩展为一个字符串或另一个字符串。

\documentclass{article}
\usepackage{filecontents}
% The terminology.sty file % -----------------------------------------
\begin{filecontents*}{terminology.sty}
\def\termfileversion{0.01}
\def\termfiledate{2015/06/27}
%
%
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{terminology}
  [\termfiledate{} v\termfileversion{} Commands for technical terminology]


\RequirePackage{etoolbox}
\RequirePackage{xcolor}
\RequirePackage{xparse}

% When "proofing" text, highlight words
\definecolor{proofcol}{cmyk}{0,   0.87, 1,    0.21}


% Boolean switches
\providebool{proof}
\providebool{latin}

% Macro-maker:
% #1 = \macro
% #2 = {Latin string}
% #3 = [Latin root]
% #4 = {English string}
% #5 = [English root]
%
% Note: #3 and #5 might be useful if you want to create plural
% variants that can be related back to the singular forms; though this
% would require extending the \myterm macro
%
\NewDocumentCommand{\myterm}{mmomo}
{%
  % The optional command (##2) here overrides the defaults
  % The star (##1) means it will print the "original" in parenthesis
  \expandafter\NewDocumentCommand\csname#1\endcsname{so}%
  {%
    % We want to be able to use the Latin or the English
    \ifbool{latin}%
    {% latin = true
      \IfNoValueTF{##2}%
      {\p@col{#2}}%
      {\p@col{##2}}%
      \IfBooleanTF{##1}%
      {\space \showorig{#4}}%
      {\relax}%
    }%
    {% latin = false
      \IfNoValueTF{##2}%
      {\p@col{#4}}%
      {\p@col{##2}}%
      \IfBooleanTF{##1}%
      {\space \showorig{#2}}%
      {\relax}%
  }%
}%
}%

% Helper macros
\newcommand{\showorig}[1]{(\emph{#1})}
\newcommand{\p@col}[1]{%
  \ifbool{proof}%
  {\textcolor{proofcol}{#1}}%
  {#1}%
}


% Now some  definitions:
\myterm{useright}{usus iuris}{use of right}
\myterm{rightuse}{ius utendi}{right of using}
\myterm{rightsuse}{iura utendi}[ius utendi]{rights of using}[right of using]

\endinput
\end{filecontents*}% -------------------------------------------------

\usepackage[T1]{fontenc}
\usepackage{terminology}


\begin{document}
\parindent 0pt

\booltrue{latin}

\verb|\useright:| \useright

\verb|\rightuse:| \rightuse

\verb|\rightuse:| \rightsuse

\booltrue{proof} % Putting things in colour

\verb|\rightsuse:| \rightsuse[not wrongs of using]

\verb|\rightsuse:| \rightsuse*[not wrongs of using]

% Switch to using English
\boolfalse{latin}

\verb|\useright:| \useright*

\verb|\rightuse:| \rightuse

\verb|\rightuse:| \rightsuse

\boolfalse{proof} % No colour...

\verb|\rightsuse:| \rightsuse[not wrongs of using]

\verb|\rightsuse:| \rightsuse*[not wrongs of using]

\end{document}

这种方法的一个优点是您可以“丰富”宏,\myterm以便它执行其他操作,例如填充索引或(在上面的示例中)拉丁语-英语词汇表等。我在这里没有这样做,因为这可能不是您想要的方法。

相关内容