english
我使用、 american
或USenglish
作为包的选项是否有区别(如果有的话,有哪些区别)babel
?
我已经调查过封装描述,对我来说似乎也是一样的,但由于我认为自己是 LaTeX 新手,因此我对专家意见非常感兴趣。
答案1
不,就 Babel 而言,这三个都是同义词。
摘自babel
文档第 78 页:
“American” 是 “English” 的一个版本,它可以有自己的连字符模式。默认的英语模式实际上是美式英语。我们允许将模式加载为 “english”、“american” 或 “USenglish”。
这三种语言名称之间没有区别;但是,它们和UKenglish
, british
(它们本身是同义词)之间的连字符和日期格式都有区别。
以下文档(必须使用 进行编译lualatex
)显示了 5 种规范类型的连字符点差异和日期格式差异的示例:(这里仅排除澳大利亚,因为没有lualatex
定义它的语言定义文件。)
% !TEX TS-program = LuaLaTeX
% show hyphenation points code by Patrick Gundlach
% from http://wiki.luatex.org/index.php/Show_the_hyphenation_points
\documentclass[10pt]{article}
\usepackage[margin=.75in]{geometry}
\usepackage[british,UKenglish,USenglish,english,american]{babel}
\usepackage{fontspec}
\usepackage{array}
\newcolumntype{S}{p{.3\textwidth}}
\directlua{
show_hyph = function(head)
while head do
if head.id == 0 or head.id == 1 then % hlist, vlist
show_hyph(head.list) % should be head.head in a newer luatex than 0.64
elseif head.id == 7 then % disc
local n = node.new("whatsit","pdf_literal")
n.mode = 0
n.data = "q 0.3 w 0 2 m 0 7 l S Q"
n.next = head.next
n.prev = head
head.next = n
head = n
end
head = head.next
end
return true
end
luatexbase.add_to_callback("post_linebreak_filter",show_hyph,"show_hyph")
}
\newcommand{\displayinfo}{\languagename\par\today\par Hyphenation of analysis}
\begin{document}
\begin{tabular}{SSS}
\selectlanguage{american}
\displayinfo
&
\selectlanguage{USenglish}
\displayinfo
&
\selectlanguage{english}
\displayinfo
\end{tabular}
\begin{tabular}{SS}
\selectlanguage{british}
\displayinfo
&
\selectlanguage{UKenglish}
\displayinfo
\end{tabular}
\end{document}
答案2
不同英语版本之间的差异通常很小,并且涉及连字符模式。美国词典中有许多单词的连字符与英语词典中的单词不同。
日期的显示方式也有所不同。下面是一些简单的示例,用于说明不同选项中日期显示方式的差异。
\documentclass{article}
\usepackage[USenglish,british,american,australian,english]{babel}
\begin{document}
\dateenglish
\today
\dateUSenglish
\today
\dateamerican
\today
\dateaustralian
\today
\selectlanguage{english}
\parbox{0.1cm}{
test, however}
\selectlanguage{USenglish}
\parbox{0.1cm}{
test, however}
\selectlanguage{british}
\parbox{0.1cm}{
test, however}
\end{document}
在连字符方面,英语、美式英语和美式英语产生相同的结果(注意“however”)。在日期方面,英语将与英语风格的日期相同,因此要回答 OP 的问题,唯一的区别在于日期的显示。
答案3
如果使用的代码\usepackage[english]{babel}
在较旧的安装上运行,您可能会获得英国或美国的连字模式,具体取决于本地设置。这是因为较旧的版本鼓励您根据本地需求babel
进行自定义。language.dat
以下是我在网上找到的旧版本的摘录language.dat
:
% The hyphenation pattern files are in the dirctory:
% texmf/tex/generic/hyphen
% The US-english patterns should be loaded *always* and as *first* ones.
% Define USenglish as an alias for american.
american ushyph1.tex
=USenglish
% UK english, TWO LINES!
%british ukhyphen.tex
%=UKenglish
% english should always be defined. Either an alias for american or british.
=english
因此,例如,我将使用取消注释英式英语行的本地副本来english
为 创建一个别名UKenglish
。因此,发送给我的文件\usepackage[english]{babel}
将使用不是美国连字模式,而是英国连字模式。
最新版本babel
不再这样工作。事实上,同一个文件现在显示:
% We must keep english as the default (first) here, and let it refer to
% hyphen.tex (not anything else), and do not change the hyphen.tex file,
% or name some other file hyphen.tex. In other words, hyphen.tex must
% remain the original file from Knuth, and it must be \language0. This
% is one important aspect of ensuring that the original, frozen TeX
% always produces the same line and page breaks.
%
...
english hyphen.tex % do not change!
=usenglish
=USenglish
=american
经验表明,这babel
忽略了本地的自定义副本。但是,TeX 的部分目的是在任何地方产生相同的输出(至少在理论上如此)。由于许多人仍在使用相当老版本的 TeX,并且这可能包括许多出版商,因此如果您使用english
而不是指定适当的变体,则无法预测结果。
因此,尽管这三种选择在你的机器,它们在其他地方可能不等效。特别是,english
可能不等效于american
/ USenglish
。
尽管两者都american
可以,但无论您喜欢哪种特定变体,USenglish
都建议避免使用。english
答案4
有些词在美国和英国的拼写不同,例如,color | colour,center | centre 等。因此,WinEdt 附带了两套拼写词典。
唯一可以在 LaTeX 中构建美国和英国之间差异的地方是连字表,正如其他答案中已经提到的那样。但是,任何用户都可以使用任何连字表集重建 LaTeX 格式,而且可以为任何语言采用任何连字表,例如,俄语对应英语,反之亦然。至少,MiKTeX 提供了用于为任何语言选择连字表的界面。