我有两个文件,main_EN.tex
和main.CN.tex
,分别包含相同的英文和中文内容。它们共享相同的序言和词汇表文件。词汇表是使用该glossaries-extra
软件包创建的。我是这个软件包的新手,对众多选项和所有复杂性感到有点不知所措。
因此,我不确定如何在词汇表中添加术语和缩略词的中文定义以及术语的中文翻译。
理想情况下,我想要的是这样的:
\newglossaryentry{charger}
{
name-english={charger},
name-chinese={充电器},
description-english={A device for charging mobile phones},
description-chinese={给手机充电的设备}
}
\newacronym{usb}{USB}
{
translation-english={Universal Serial Bus},
translation-chinese={通用串行总线}
}
然后我希望能够提取所选语言的定义。
此主题提出了一种方法,但是我无法让它适用于中文,而且看起来有点复杂。
您能建议一下最好的方法吗?
到目前为止,我已尝试使用包添加翻译translations
。请参阅下面的 MWE 代码或查看实际平均能量损失。
我的序言.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{my-preamble}
\usepackage[colorlinks=true]{hyperref}
\usepackage[english]{babel}
% Import local copy of `babel-zh.ini`
\babelprovide[import]{chinese}
\usepackage{translations}
\DeclareLanguage{chinese}
% Allow Chinese typesetting
\usepackage{ctex}
\usepackage[acronym]{glossaries-extra}
\makeglossaries
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Definitions for the translations package %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\DeclareTranslationFallback{charger}{charger}
\DeclareTranslation{English}{charger}{charger}
\DeclareTranslation{chinese}{charger}{充电器}
%\DeclareTranslationFallback{def-charger}{A device for charging mobile phones}
\DeclareTranslation{English}{def-charger}{A device for charging mobile phones}
\DeclareTranslation{chinese}{def-charger}{给手机充电的设备}
%\DeclareTranslationFallback{def-usb}{Universal Serial Bus}
\DeclareTranslation{English}{def-usb}{Universal Serial Bus}
\DeclareTranslation{chinese}{def-usb}{通用串行总线}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Definitions for the glossaries-extra package %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newglossaryentry{charger}
{
name={\GetTranslation{charger}},
description={\GetTranslation{def-charger}}
}
\newacronym{usb}{USB}{\GetTranslation{def-usb}}
主页_EN.tex
\documentclass[10pt]{article}
\usepackage{my-preamble}
\begin{document}
\selectlanguage{english}
\section*{In English}
The \gls{charger} has three \glsxtrfull{usb} ports.
\printglossaries
\end{document}
主页_CN.tex
\documentclass[10pt]{article}
\usepackage{my-preamble}
\begin{document}
\selectlanguage{chinese}
\section*{在中文中}
\gls{charger}有三个 \glsxtrfull{usb} 端口
\printglossaries
\end{document}
结果
如您所见,这些部分词汇表和缩略词显示正确的翻译,但术语标签未替换为文档正文中的实际术语。我还收到多个“未定义控制序列”错误。
任何帮助都将非常感谢!
编辑:
在评论中,维内斯提出了使用该软件包的想法iflang
。它运行完美!
请参阅下面的 MWE 代码或查看实际平均能量损失。
我的序言.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{my-preamble}
\usepackage[colorlinks=true]{hyperref}
\usepackage[english]{babel}
% Import local copy of `babel-zh.ini`
\babelprovide[import]{chinese}
\usepackage{translations}
\DeclareLanguage{chinese}
\usepackage{iflang}
% Allow Chinese typesetting
\usepackage{ctex}
\usepackage[acronym]{glossaries-extra}
\makeglossaries
词汇表
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Definitions for the glossaries-extra package %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newglossaryentry{charger}
{
name={\IfLanguageName{english}
{charger}
{充电器}},
description={\IfLanguageName{english}
{A device for charging mobile phones}
{给手机充电的设备}}
}
\newacronym{usb}{USB}
{
\IfLanguageName{english}
{Universal Serial Bus}
{通用串行总线}
}
主要__EN.tex
\documentclass[10pt]{article}
\usepackage{my-preamble}
\begin{document}
\selectlanguage{english}
\input{glossary}
\section*{In English}
The \gls{charger} has three \glsxtrfull{usb} ports.
{\let\clearpage\relax
\printglossaries
}
\end{document}
主要__CN.tex
\documentclass[10pt]{article}
\usepackage{my-preamble}
\begin{document}
\selectlanguage{chinese}
\input{glossary}
\section*{在中文中}
\gls{charger}有三个 \glsxtrfull{usb} 端口
{\let\clearpage\relax
\printglossaries
}
\end{document}
结果
答案1
经过简短的讨论(参见原始问题下方的评论),答案是使用包iflang
。因此,下面的代码是简化的 MWE。
@f-hollow 您不必删除您的编辑,但我建议您也添加您的原始代码。因此,首先应该很容易理解问题,然后才容易理解解决方案。
\documentclass[10pt]{article}
\usepackage{babel}
\usepackage{ctex} % allows chinese typesetting, but you must have a compatible OS-font
\usepackage{iflang}
\usepackage[acronym]{glossaries-extra}
\newglossaryentry{charger}
{
name={\IfLanguageName{english}{charger}{充电器}},
description={\IfLanguageName{english}{A device for charging mobile phones}{给手机充电的设备}}
}
\newacronym{usb}{USB}
{
\IfLanguageName{english}{Universal Serial Bus}{通用串行总线}
}
\makeglossaries
\begin{document}
\selectlanguage{english}
\section*{In English}
The \gls{charger} has three \glsxtrfull{usb} ports.
\printglossaries
\end{document}