当我运行以下代码时,它会按预期进行编译:
\documentclass[%
11pt
,a4paper
,sans
]{moderncv}
\moderncvstyle{classic}
\moderncvcolor{blue}
\usepackage[scale=0.75]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
%\usepackage[spanish, activeacute]{babel}
% Personal Data
\firstname{John}
\familyname{Doe}
\title{CV}
\address{city}{state}{country}
\phone[mobile]{+1~(234)~567~890}
\phone[fixed]{+2~(345)~678~901}
\phone[fax]{+3~(456)~789~012}
\email{[email protected]}
\homepage{www.johndoe.com}
\extrainfo{extrainfo}
\quote{somequote}
\begin{document}
\makecvtitle
\section{First section}
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
\cventry{Prueba}{Alimentación}{alimentaci'on}{}{}{}
\end{document}
取消注释\usepackage[spanish, activeacute]{babel}
会产生以下错误(此处仅粘贴第一部分):
! 缺少插入的 \endcsname。\protect l.22 \phone[mobile]{+1~(234)~567~890} 标记的控制序列不应出现在 \csname 和 \endcsname 之间。
如果我随后注释掉这些\phone
行(因此babel
仍未注释),它就可以正常运行。此外,将 babel 与另一种语言(例如 ngerman)和这些\phone
行一起使用,也可以正常运行。
有人能告诉我发生了什么吗?为什么我不能同时使用 babel spanish 和\phone
uncommented?
我在 Linux Mint Debian 版本上使用 moderncv 1.5.1、Texlive 2012.20120611-5 和 Texmaker 3.4。
谢谢。
答案1
babel
西班牙语模块重新定义为\roman
使用小型大写字母,并在许多地方moderncv
用于\roman
构建索引宏,基本上是通过这样做
\csname xyz\roman{counter}\endcsname
\roman
如果以这种方式重新定义,则将不起作用。
解决方案:es-lcroman
加载时添加选项babel
:
\usepackage[spanish,es-lcroman]{babel}
我不确定activeacute
UTF-8 输入是否真的有必要。我不会用它~
来输入电话号码:普通空格似乎就足够了。
如果需要的话,一种不同的策略es-scroman
是修补所有moderncv
使用以下命令\roman
:
\documentclass[
11pt,
a4paper,
sans,
]{moderncv}
\moderncvstyle{classic}
\moderncvcolor{blue}
\usepackage[scale=0.75]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish, activeacute]{babel}
\usepackage{regexpatch}
\makeatletter
\regexpatchcmd*{\endcvcolumns}
{\c{roman}\cB.tmpiteratorcounter\cE.}
{\c{romannumeral}\c{c@tmpiteratorcounter}}
{}{}
\regexpatchcmd*{\cvcolumn}
{\c{roman}\cB.cvcolumnscounter\cE.}
{\c{roman}\c{c@cvcolumnscounter}}
{}{}
\regexpatchcmd*{\collectionadd}
{\c{roman}\cB.(collection@\cP.2@count)\cE.}
{\c{romannumeral}\c{csname}c@\1\c{endcsname}}
{}{}
\makeatother
% Personal Data
\firstname{John}
\familyname{Doe}
\title{CV}
\address{city}{state}{country}
\phone[mobile]{+1 (234) 567~890}
\phone[fixed]{+2 (345) 678 901}
\phone[fax]{+3 (456) 789 012}
\email{[email protected]}
\homepage{www.johndoe.com}
\extrainfo{extrainfo}
\quote{somequote}
\begin{document}
\makecvtitle
\section{First section}
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
\cventry{Prueba}{Alimentación}{alimentaci'on}{}{}{}
\end{document}
应向 的维护者提交错误修复请求moderncv
。涉及的宏是
\endcvcolumns
其定义为\newenvironment{cvcolumns}
,其中\roman{tmpiteratorcounter}
应该成为
\romannumeral\c@tmpiteratorcounter
\cvcolumn
,其中\roman{cvcolumnscounter}
应该成为
\romannumeral\c@cvcolumnscounter
\collectionadd
(在 中moderncvcollection.sty
),其中\roman{collection@#2@count}
应该成为
\romannumeral\csname c@collection@#2@count\endcsname
类似的问题\moderncvstyle{banking}
可以通过添加来解决
\renewcommand*{\maketitlesymbol}{%
{\quad{\rmfamily\textbullet}\quad}}
该样式使用~~~
而不是\quad
,由于西班牙语模块 的babel
处理方式~
,在标题中使用 会破坏编译。我相信\quad
或\hspace{...}
无论如何都应该使用:将空格序列留给文字处理器,LaTeX 可以做得更好。;-)
答案2
建议的解决方案并不完整。您将在其他 cv 脚本中遇到同样的问题。加载 spanish-babel 为:
\usepackage[spanish,es-noquoting,es-noshorthands]{babel}
或者
\usepackage[spanish,es-noquoting,es-noshorthands,activeacute]{babel}
例如,您将 María 写为Mar'ia
。简写会干扰moderncv
。