我在 Mac 上使用 MacTex 2016(El Captain 10.11.2)。我的文本编辑器是 TexStudio 2.11.0,我的所有软件包都已更新(TeX live Utility 1.24)。
自从我将 MacTex 从 2015 版更新到 2016 版后,我在编译时不断收到同样的错误:在包含参考文献的文件中,当我第一次使用 XeLateX 进行编译时,我在使用 \textcite 或 \autocite 命令的地方收到有关超出容量的错误(以下几行只是警告):
TeX 容量超出,抱歉 [参数堆栈大小=10000]。本书 \autocite{adams} 'firstinits' 选项已弃用,请改用 'giveninits'。基于 utf8 的引擎忽略 inputenc 包。修补脚注失败。冲突的选项。将 \usepackage{fontspec} 添加到文档的 (frenchb.ldf) 序言中,
在我更新 MacTex 之前,这个 file.tex 可以正常工作,我会先用 XeLateX 编译,然后用 bibtex,然后 XeLatex 编译两次。但在尝试卸载 2016 并返回 2015 之前(如果我能将它下载到某个地方……),我想了解我做错了什么,显然我做错了什么。
\documentclass{book}
\title{Chapitre2}
\makeindex
\date{}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{times}
\usepackage{tipa}
\usepackage{chngcntr}
\usepackage[backend=bibtex, citestyle=authoryear-comp, maxcitenames=2, firstinits=true]{biblatex}
\addbibresource{/Users/MyName/Documents/Latex/biblio.bib}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{longtable}
\usepackage{tabulary}
\usepackage{multirow}
\usepackage{lscape}
\usepackage{colortbl}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{enumerate}
\usepackage{arydshln}
\usepackage{todonotes}
\usepackage{fancyhdr}
\usepackage{titlesec}
\usepackage{caption}
\usepackage{phonrule}
\usepackage{tikz-qtree-compat}
\usetikzlibrary{decorations.markings, calc, shapes.misc, decorations.pathreplacing}
\usepackage{xr}
\usepackage{float}
\usepackage{gb4e}
\usepackage{hyperref}
\begin{document}
bla bla
This book \autocite{adams} is awesome.
Another awesome book : \textcite{arnason}.
\printbibliography
\end{document}
我知道有很多软件包,但由于其中一些不兼容,也许这就是问题所在。以下是我从 bib 文件中引用的两个参考资料:
@Book{adams,
title = {Faroese: a language course for beginners},
publisher = {Stiðin},
year = {2014},
author = {Adams, Jonathan and Petersen, Hjalmar P.},
address = {T\'{o}rshavn},
type = {Book}
}
@Book{arnason,
title = {The phonology of Icelandic and Faroese},
publisher = {Oxford University Press},
year = {2011},
author = {\'{A}rnason, Kristj\'{a}n},
address = {Oxford; New York},
type = {Book}
}
如果我忘记了一些重要的事情,请询问。
先感谢您!
答案1
问题在于\automath
,gb4e
并且使用名称中biblatex
带有下划线的内部键。_
这会使 TeX 进入一个循环,最后出现可怕的“TeX 容量超出”消息。
如果要一起使用gb4e
和biblatex
,则需要发出\noautomath
。
你的序言中的其他问题包括
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{times}
这些应该被删除,
\usepackage{fontspec}
应该发出。如果你想要一个像 Times 这样的字体,请声明
\setmainfont{TeX Gyre Termes}
这是您的序言的更新版本,它修复了该问题。
\begin{filecontents*}{\jobname.bib}
@Book{adams,
title = {Faroese: a language course for beginners},
publisher = {Stiðin},
year = {2014},
author = {Adams, Jonathan and Petersen, Hjalmar P.},
address = {T\'{o}rshavn},
type = {Book}
}
@Book{arnason,
title = {The phonology of Icelandic and Faroese},
publisher = {Oxford University Press},
year = {2011},
author = {\'{A}rnason, Kristj\'{a}n},
address = {Oxford; New York},
type = {Book}
}
\end{filecontents*}
\documentclass{book}
\usepackage[french]{babel}
\usepackage{tipa}
\usepackage{fontspec}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{chngcntr}
\usepackage[
backend=bibtex,
citestyle=authoryear-comp,
maxcitenames=2,
% firstinits=true
]{biblatex}
\usepackage{csquotes}
\usepackage{array}
\usepackage{longtable}
\usepackage{tabulary}
\usepackage{multirow}
\usepackage{lscape}
\usepackage{colortbl}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{enumerate}
\usepackage{arydshln}
\usepackage{todonotes}
\usepackage{fancyhdr}
\usepackage{titlesec}
\usepackage{caption}
\usepackage{phonrule}
\usepackage{tikz-qtree-compat}
\usetikzlibrary{decorations.markings, calc, shapes.misc, decorations.pathreplacing}
\usepackage{xr}
\usepackage{float}
\usepackage{gb4e}
\usepackage{hyperref}
\setmainfont{TeX Gyre Termes}
\addbibresource{\jobname.bib}
\noautomath
\begin{document}
\title{Chapitre2}
\date{}
bla bla
This book \autocite{adams} is awesome.
Another awesome book : \textcite{arnason}.
\printbibliography
\end{document}
该filecontents*
环境只是为了使文档自成一体。使用您自己的.bib
数据库。您应该考虑使用 Biber 而不是 BibTeX。
如果 TeX Gyre Termes 未作为系统字体安装,请按以下方式声明:
\setmainfont{texgyretermes}[
Extension=.otf,
UprightFont=*-regular,
ItalicFont=*-italic,
BoldFont=*-bold,
BoldItalicFont=*-bolditalic,
]
答案2
egreg 提出的解决方案要求您关闭该\automath
功能(允许在文本模式下使用_
和^
)。由于这对语言学家来说确实是一个非常有用的功能,这里有一个解决方案(由 David Carlisle 提供),它可以解决问题并允许您继续使用\automath
。这很可能将包含在的下一个版本中,gb4e
但在撰写本文时尚未发生。
正如 cfr 在她对 egreg 的评论中提到的那样,如果您使用 XeLaTeX,使用 TIPA 通常不是一个好主意。相反,请使用带有音标的字体并将它们直接输入到您的源中。请参阅:
\begin{filecontents*}{\jobname.bib}
@Book{adams,
title = {Faroese: a language course for beginners},
publisher = {Stiðin},
year = {2014},
author = {Adams, Jonathan and Petersen, Hjalmar P.},
address = {T\'{o}rshavn},
type = {Book}
}
@Book{arnason,
title = {The phonology of Icelandic and Faroese},
publisher = {Oxford University Press},
year = {2011},
author = {\'{A}rnason, Kristj\'{a}n},
address = {Oxford; New York},
type = {Book}
}
\end{filecontents*}
\documentclass{book}
\usepackage[french]{babel}
\usepackage{fontspec}
\usepackage[
backend=bibtex,
citestyle=authoryear-comp,
maxcitenames=2,
% firstinits=true
]{biblatex}
\usepackage{csquotes}
\usepackage{gb4e}
\let\gbtmp_
\protected\def_{\ifincsname\string_\else\expandafter\gbtmp\fi}
\usepackage{hyperref}
\setmainfont{TeX Gyre Termes}
\addbibresource{\jobname.bib}
%\noautomath
\begin{document}
\title{Chapitre2}
\date{}
bla bla
This book \autocite{adams} is awesome.
Another awesome book : \textcite{arnason}.
And you can use subscripts_{a} in text mode!
\printbibliography
\end{document}