我想定义一个babel
语言别名,它的作用与通常的语言选择器、babel
派生器(例如csquotes
和 )的原始别名相同biblatex
。理想情况下,babel
原始语言的简写也适用于别名。为了举例说明,假设我想创建一个myenglishalias
from 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}
如果这对您有用,那就好了。如果没有用,请随时寻求更多帮助来解决您发现的任何问题。