![babel package call 应该放在序言的末尾吗?](https://linux22.com/image/281241/babel%20package%20call%20%E5%BA%94%E8%AF%A5%E6%94%BE%E5%9C%A8%E5%BA%8F%E8%A8%80%E7%9A%84%E6%9C%AB%E5%B0%BE%E5%90%97%EF%BC%9F.png)
我记得几年前读过1babel
,第2行应该放在序言的末尾,以避免与其他软件包发生问题。(hyperref
出于同样的原因,我相信软件包也应该放在序言的末尾。)
然而,我发现,在 MWE 中,该babel
行通常紧接着\documentclass
。
有什么区别吗?这里的好做法是什么?
附录
这是我的 LaTeX 模板。您是否看到过其他放错位置的包调用?
\documentclass[12pt,twoside,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{setspace}
\usepackage{todonotes}
\usepackage{graphicx}
\usepackage{lmodern}
\usepackage{xspace}
\usepackage[style=authoryear-comp,hyperref,backend=biber,isbn=false,doi=false,url=false,date=year]{biblatex}
\AtEveryBibitem{\clearlist{language}}
\renewcommand*{\newunitpunct}{\addcomma\space}
\bibliography{biblio}
\title{}
\author{}
\usepackage[francais,english]{babel}
\usepackage{csquotes}
\usepackage[colorlinks]{hyperref}
\begin{document}
\maketitle
\tableofcontents
\onehalfspacing
\printbibliography
\end{document}
1. 我不记得在哪里了...抱歉。
2.\usepackage[dutch,english]{babel}
答案1
某些软件包的行为会有所不同,或者会根据是否已加载而babel
进行 某种调整:例如biblatex
,csquotes
...datetime
fmtcount
glossaries
listings
microtype
natbib
tikz
babel
我倾向于按类别对包调用进行分组。首先是直接涉及我的文档主要选择的那些:
\usepackage[T1]{fontenc} % alphabets to prepare
\usepackage[utf8]{inputenc} % input encoding
\usepackage[italian]{babel} % language(s)
\usepackage{kpfonts} % or another font package
\usepackage{geometry} % if needed for page shape
\geometry[<options>]
\usepackage{fancyhdr} % if needed (it should go after geometry)
<fancyhdr settings>
然后我按照可能有意义的顺序加载其他实用程序包:
\usepackage{amsmath,amssymb,amsthm}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{microtype}
\usepackage{csquotes} % for biblatex, mainly
\usepackage[<options>]{biblatex} % or natbib
等等。当然,hyperref
应该放在最后,但cleveref
如果加载了,应该放在最后。
注意:kpfonts
仅作为示例。我通常不依赖于特定的字体。
如果etex
有必要,它应该第一的. 其他需要尽早加载的软件包当然是ifpdf
、ifxetex
和ifluatex
(在需要时)。
所有包加载后,命令定义和其他设置才会生效。