我有许多英文文件需要翻译成中文。我使用中转站中文排版包和西拉特克斯用于编译。文档中有一些重复的字符串(注释、注意、反馈等),我希望使用翻译包裹。
我检查一下中转站装载了\IfPackageLoaded
,然后使用\selectlanguage{chinese}
。
梅威瑟:
我的前言.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mypreamble}[test]
%\usepackage[english]{babel}
%\babelprovide{chinese}
\usepackage{translations}
\DeclareLanguage{chinese}
\newcommand*\location{\GetTranslation{mycountry}}
% translations for 'mycountry':
\DeclareTranslationFallback {mycountry}{Default}
\DeclareTranslation{English}{mycountry}{Country}
\DeclareTranslation{chinese} {mycountry}{国家}
% code required for checking if ctex is loaded
\usepackage{ltxcmds}
\makeatletter
\newcommand{\IfPackageLoaded}[3]{\ltx@ifpackageloaded{#1}{#2}{#3}}
\makeatother
主文本
\documentclass{article}
\usepackage{mypreamble}
% comment out for English, uncomment for Chinese
\usepackage{ctex}
\begin{document}
\IfPackageLoaded{ctex}{\selectlanguage{chinese}}{\selectlanguage{english}}
\tableofcontents
\listoftables
\section{Intro}
\location
\end{document}
以下是我想要的和得到的如果我不添加 babel(这是翻译)。但是,这也让我错误 Package babel Error: You haven't defined the language chinese yet
。
如果我添加 babel通过取消注释序言中的两个字符串,错误消失;但随后巴别塔搞砸了中转站将标准字符串(目录、表格列表等)翻译成中文:
任何能解决这一难题的帮助都将不胜感激!
答案1
看起来你需要
\usepackage[english]{babel}
\babelprovide[import]{chinese}
以避免错误。但是babel-zh.ini
(以及其他中文语言环境,例如babel-zh-Hant-HK.ini
、babel-zh-Hans.ini
等)未在[captions]
部分中定义键,因此\chinesecontentsname
、\chineselisttablename
等未定义。据我所知,没有办法babel
自动从 查找这些定义的术语ctex
。
(在 TL 2020babel-ja.ini
和babel-ko.ini
做在 中定义键值对[captions]
,因此如果您使用\babel[import]{japanese}
或 ,则不会遇到此问题\babel[import]{korean}
。但在 TL2020 中仍然不是这种情况babel-zh.ini
。)
您可以在 main.tex 或 mypreamble.sty 中自己定义这些命令:
\renewcommand{\chinesecontentsname}{目录}
\renewcommand{\chineselisttablename}{表格}
或者,如果您愿意,您可以复制babel-zh.ini
(它在/usr/local/texlive/2020basic/texmf-dist/tex/generic/babel/locale/zh/
),将其重命名为babel-zh-myownhacks.ini
,然后编辑以下[captions]
部分:
[captions]
preface = 前言
ref = 参考文献
abstract = 摘要
...
然后通过以下方式将其加载到你的 .tex/.sty 中
\babelprovide[import=zh-myownhacks]{chinese}