我有一个enumerate
定义为的环境:
\begin{enumerate}[\hspace{0.5cm} a)]
\item blablabla
\end{enumerate}
并且按照预期,它使用字母进行枚举。但是,由于我的文档是西班牙语,因此n
它使用(语音上的“eɲe”或“énye”)进行枚举ñ
。我希望它使用标准字母表(ñ
在我们的文化中通常不用于枚举)。我真的不想使用它,\stepcounter{enumi}
因为它是机器生成的 tex 代码。
答案1
一种方法是抓取\let
原始\@alph
宏,然后babel
重新定义,\@alph
根据西班牙语的字母提供具体的补充。
在环境开始时,enumerate
可以将其改回原始版本(babel 之前)。但是,这也会改变任何的出现\@alph
。
\documentclass{article}
\makeatletter
\let\@alphorig\@alph
\makeatother
\usepackage{etoolbox}
\usepackage{enumerate}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\makeatletter
\AtBeginEnvironment{enumerate}{%
\let\@alph\@alphorig
}
\makeatother
\begin{document}
\begin{enumerate}[\hspace{0.5cm} a)]
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\end{enumerate}
\end{document}
答案2
一个粗略的解决方案是添加选项es-nolayout
,这也会改变其他印刷方面(参见texdoc spanish
)。
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish,es-nolayout]{babel}
\begin{document}
\begin{enumerate}
\item Outer
\begin{enumerate}
\item Inner
\item b
\setcounter{enumii}{12} % just to keep it short
\item m
\item n
\item o
\item p
\item q
\end{enumerate}
\item Outer
\end{enumerate}
\end{document}
更有针对性的方法是从字母编号中删除“ñ”和“Ñ”即可etoolbox
。
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@alph}{\~n\or}{}{}{}
\patchcmd{\@Alph}{\~N\or}{}{}{}
\makeatother
\begin{document}
\begin{enumerate}
\item Outer
\begin{enumerate}
\item Inner
\item b
\setcounter{enumii}{12} % just to keep it short
\item m
\item n
\item o
\item p
\item q
\end{enumerate}
\item Outer
\end{enumerate}
\end{document}
这也适用于enumitem
或enumerate
功能(我建议使用前一个包,它更加强大和灵活)。
向 的维护者 Javier Bezos 提出功能请求是一个好主意babel-spanish
。
答案3
在下面enumitem
您可以定义枚举标签。例如,使用\noNalph
如下定义:
\documentclass{article}
\usepackage[spanish]{babel}
\usepackage{enumitem}
\DeclareRobustCommand{\noNalph}[1]{\ifnum\value{#1}=15 \refstepcounter{#1}\fi \alph{#1}}
\begin{document}
\begin{enumerate}[label={\noNalph{enumi})}]
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\end{enumerate}
\end{document}
在更一般的设置中,您还可以手动定义枚举序列:
\documentclass{article}
\usepackage[spanish]{babel}
\usepackage{enumitem}
\makeatletter
\DeclareRobustCommand{\noNalph}[1]{\ifcase\value{#1}% 0
% 1 2 3 4 5 6 7 8 9 10 11 12 13
\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m%
% 14 15 16 17 18 19 20 21 22 23 24 25 26
\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z%
\else\@ctrerr\fi}
\makeatother
\begin{document}
\begin{enumerate}[label={\noNalph{enumi})}]
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\item blablabla
\end{enumerate}
\end{document}