为 babel 定义一个新的语言别名

为 babel 定义一个新的语言别名

我想定义一个babel语言别名,它的作用与通常的语言选择器、babel派生器(例如csquotes和 )的原始别名相同biblatex。理想情况下,babel原始语言的简写也适用于别名。为了举例说明,假设我想创建一个myenglishaliasfrom english

这里的用例是,我的文档通常包含两种母语变体,即我自己的文本和一些来自旧来源的引文,这些引文使用了旧拼写。现在,到目前为止,我还没有觉得有必要对 LaTeX 进行不同的处理(连字符等),但是,我希望编辑器对它们进行不同的处理(即使用不同的词典进行拼写检查)。但我必须能够区分标记,以便编辑器的解析可以识别这两种语言变体。

一些限制:

  • 我认为一个简单的解决方法是复制一份english.ldf,重命名,然后将其添加到我的texmf树中。但是,我希望该文档可以在任何 TeX 安装中编译,而不仅仅是在我的计算机上。所以这必须在文档级别处理。

  • 从技术上讲,我也可以使用现有的别名(实际上,感兴趣的语言有一个别名),但标记在语义上会产生误导。所以我想为用例定义一个有意义的别名。

我不知道这是否可行,如果可行,是否值得。但我想考虑一下技术问题,稍后再评估。文档建议的\babelprovide工具可能就是这个,但据我所知,我不知道如何“导入所有内容”。或者也许还有其他方法。我也不确定使用 是否真的等同于语言\babelprovide,因为感兴趣的语言是.ldf基于 的,而\babelprovide似乎import是从.ini文件中导入的。但我认为“身份”并不是一个严格的要求。如上所述,用例是用于引文,因此通常是短文本。只要别名的行为“足够接近”原始语言,那就没问题了。

这是我希望实现的目标的 MWE:

\documentclass{article}

\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage{lipsum}

\begin{document}

\section{Section 1}

\foreignlanguage{english}{\lipsum[1]}

\begin{otherlanguage}{english}
  \lipsum[2-4]
\end{otherlanguage}

\foreignquote{english}{\lipsum[5]}

\hyphenquote{english}{\lipsum[6]}

\foreignblockquote{english}{\lipsum[7]}

\begin{foreigndisplayquote}{english}
  \lipsum[8-10]
\end{foreigndisplayquote}

\begin{hyphendisplayquote}{english}
  \lipsum[11-13]
\end{hyphendisplayquote}

\selectlanguage{english}

\lipsum[14-16]

\cite{sigfridsson}

\printbibliography

\section{Section 2}

What I'd like to do is for the following (and similar constructs) to be valid
and work just like if ``english'' was being selected.

% \foreignlanguage{myenglishalias}{\lipsum[1]}
%
% \begin{otherlanguage}{myenglishalias}
%   \lipsum[2-4]
% \end{otherlanguage}
%
% \foreignquote{myenglishalias}{\lipsum[5]}
%
% \hyphenquote{myenglishalias}{\lipsum[6]}
%
% \foreignblockquote{myenglishalias}{\lipsum[7]}
%
% \begin{foreigndisplayquote}{myenglishalias}
%   \lipsum[8-10]
% \end{foreigndisplayquote}
%
% \begin{hyphendisplayquote}{myenglishalias}
%   \lipsum[11-13]
% \end{hyphendisplayquote}
%
% \selectlanguage{myenglishalias}
%
% \lipsum[14-16]
%
% \cite{sigfridsson}
%
% \printbibliography

\end{document}

答案1

遗憾的是,使用旧的好ldf机制通常无法实现这一点,因为文件混合了逻辑、数据和用户界面。当然,它们在单语文档中效果很好,但在多语文档中,该ldf机制可能会出现问题。事实上,ini引入该机制的原因之一是为了提供一种以更现代、更强大的基础来定义和使用语言的方法。

在大多数情况下,文件的结果与文件的结果ini几乎相同(甚至相同)ldf,英语就是这种情况。对于其他语言,如法语,可能会存在重要差异(例如,空格与“,”、? 等的空格在文件中没有“固定” ini[编辑。目前babel在 XeLaTeX 和 LuaLaTeX 中都提供此功能,但必须分别使用interchar=puntuation.space或来激活transforms=puntuation.space。另请注意,ini文件目前没有简写 - 如果您需要它们,则必须定义它们。

因此,请尝试以下方法:

\babelprovide[import=en]{myenglishalias}

然后,您可以用以下方法重新定义这个新语言环境的字符串:

\setlocalecaption{myenglishalias}{contents}{Table of contents}

如果这对您有用,那就好了。如果没有用,请随时寻求更多帮助来解决您发现的任何问题。

相关内容