![使用 babel package spanish 编写附录第十五章(西班牙语字母表中的字母 ñ)时出错](https://linux22.com/image/303406/%E4%BD%BF%E7%94%A8%20babel%20package%20spanish%20%E7%BC%96%E5%86%99%E9%99%84%E5%BD%95%E7%AC%AC%E5%8D%81%E4%BA%94%E7%AB%A0%EF%BC%88%E8%A5%BF%E7%8F%AD%E7%89%99%E8%AF%AD%E5%AD%97%E6%AF%8D%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%AD%97%E6%AF%8D%20%C3%B1%EF%BC%89%E6%97%B6%E5%87%BA%E9%94%99.png)
我目前正在用 LaTeX 编写一个很长的文档(我的论文),文档的结构中我编写了附录 15 的数字,但众所周知,西班牙语中 15 的数字字母是 ñ,因此在编译时出现错误,我尝试使用最小文档,但突然出现文档错误,我遇到了同样的错误。我使用的是 TeX Live 2014
错误是:
Extra \ or. ... {\ 'E} index 15} {33} {Appendix.alph1.Alph15}
Something's wrong - Perhaps a missing \ item. ... {\ 'E} index 15} {33} {Appendix.alph1.Alph15}
Missing} inserted. ... {\ 'E} index 15} {33} {Appendix.alph1.Alph15}
Extra \ else. ... {\ 'E} index 15} {33} {Appendix.alph1.Alph15}
Something's wrong - Perhaps a missing \ item. ... {\ 'E} index 15} {33} {Appendix.alph1.Alph15}
Missing} inserted. ... {\ 'E} index 15} {33} {Appendix.alph1.Alph15}
更详细的内容是.toc
\ contentsline {chapter} {Ap \ '{e} index \ numberline {\ ~ N} ap \ IeC {\' e} index 15} {33} {Appendix.alph1.Alph15}
我该如何消除这个错误,因为我需要做这个附录,我附件中的最小文档也给了我错误:
\documentclass[10pt,letterpaper,spanish]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{babel}
\usepackage[title, titletoc,page]{appendix}
\usepackage{graphicx}
\usepackage{hyperref}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{capitulo 1}
\appendix
\chapter{apéndice 1}
\chapter{apéndice 2}
\chapter{apéndice 3}
\chapter{apéndice 4}
\chapter{apéndice 5}
\chapter{apéndice 6}
\chapter{apéndice 7}
\chapter{apéndice 8}
\chapter{apéndice 9}
\chapter{apéndice 10}
\chapter{apéndice 11}
\chapter{apéndice 12}
\chapter{apéndice 13}
\chapter{apéndice 14}
\chapter{apéndice 15}
\end{document}
答案1
问题出\numberline
在spanish.ldf
(2014/04/24 v5.0n)的重新定义中:
\def\numberline#1{%
\hb@xt@\@tempdima{%
#1%
\if&\else.\fi
\hfil
}%
}
#1
包含数字(或不包含)。测试\if&
会扩展数字。如果为空或扩展为无,则抑制以下点。但是,这种扩展是以困难的方式进行的,不尊重 LaTeX 的保护机制。因此,数字的#1
稳健(在 LaTeX 意义上)宏在硬扩展中中断。\~
\~N
以下重写测试扩展了 内的数字\protected@edef
,这是一种符合 LaTeX 保护机制的扩展。然后将定义的宏\@temp@num
与空宏进行比较,\@empty
而无需进一步扩展。
\makeatletter
\renewcommand*{\numberline}[1]{%
\hb@xt@\@tempdima{%
#1%
\protected@edef\@temp@num{#1}%
\ifx\@temp@num\@empty\else .\fi
\hfil
}%
}
\makeatother
完整示例:
\documentclass[10pt,letterpaper,spanish]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{babel}
\usepackage[title, titletoc,page]{appendix}
\usepackage{graphicx}
\usepackage{hyperref}
\makeatletter
\renewcommand*{\numberline}[1]{%
\hb@xt@\@tempdima{%
#1%
\protected@edef\@temp@num{#1}%
\ifx\@temp@num\@empty\else .\fi
\hfil
}%
}
\makeatother
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{capitulo 1}
\appendix
\chapter{apéndice 1}
\chapter{apéndice 2}
\chapter{apéndice 3}
\chapter{apéndice 4}
\chapter{apéndice 5}
\chapter{apéndice 6}
\chapter{apéndice 7}
\chapter{apéndice 8}
\chapter{apéndice 9}
\chapter{apéndice 10}
\chapter{apéndice 11}
\chapter{apéndice 12}
\chapter{apéndice 13}
\chapter{apéndice 14}
\chapter{apéndice 15}
\end{document}
还有改进的空间:
T1
编码,参见 David 的回答。- 字体系列 Latin Modern,Computer Modern 的后继者。
- 包
bookmark
。那么书签更新更快,功能更多。 - 最后的例子也使用了编号书签。
完整示例:
\documentclass[10pt,letterpaper,spanish]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage[title, titletoc,page]{appendix}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{bookmark}
\bookmarksetup{numbered, open}
\makeatletter
\renewcommand*{\numberline}[1]{%
\hb@xt@\@tempdima{%
#1%
\protected@edef\@temp@num{#1}%
\ifx\@temp@num\@empty\else .\fi
\hfil
}%
}
\makeatother
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{capitulo 1}
\appendix
\chapter{apéndice 1}
\chapter{apéndice 2}
\chapter{apéndice 3}
\chapter{apéndice 4}
\chapter{apéndice 5}
\chapter{apéndice 6}
\chapter{apéndice 7}
\chapter{apéndice 8}
\chapter{apéndice 9}
\chapter{apéndice 10}
\chapter{apéndice 11}
\chapter{apéndice 12}
\chapter{apéndice 13}
\chapter{apéndice 14}
\chapter{apéndice 15}
\end{document}
答案2
你可能应该向 Babel 维护者报告这个问题,但如果你添加
\usepackage[T1]{fontenc}
无论如何这都是一个好主意,因为如果您使用默认的 OT1 编码,您将无法正确连接带重音字母的单词。