在 \makecell 中使用 \textit 时出现编译错误

在 \makecell 中使用 \textit 时出现编译错误

我正在修改 moderncv 简历模板,在 \makecell 中使用 \textit 时遇到编译错误。

这是我对 cventry 的重新定义。错误发生在第 4 行,第一个 \makecell 内。

\renewcommand{\cventry}[9][a]{
\begin{tabularx}{\linewidth}{X r}
    {\bfseries #4} & {\itshape #2}\\
        \makecell[l]{\textit{#3}\ifthenelse{\equal{#6}{}}{}{, #6}} & \makecell[r]{\itshape #5}\\
    \ifstrequal{#9}{1}{\small#8}
    \ifstrequal{#9}{2}{}{\small#7}
\end{tabularx}
\ifstrequal{#1}{a}{\par\vspace{\gaplength}}{\par\vspace{-4pt}}
}

我将其调用如下:

 \cventry{Overall dates}{Position 1, Location 2\\ Position 2, Location 2}{Company}{Position 1 dates \\ Position 2 dates}{}{
    \begin{itemize}
    \item content
    \end{itemize}
}{}{}

我正在使用 \makecell 使位置 1/位置 2 及其日期位于不同的行中。我希望位置及其日期为斜体。我尝试了 {\itshape 位置 1 // 位置 2],但第二行(位置 2)上的文本没有使用 \itshape 变为斜体。

我收到的错误是“缺少 }”和“忘记 \endgroup”。任何帮助都将不胜感激。

编辑:下面是 cventry 的文档类定义。

\newcommand{\cventry}[9]{}

答案1

你的定义

\renewcommand{\cventry}[9][a]{
  \begin{tabularx}{\linewidth}{X r}
    {\bfseries #4} & {\itshape #2} \\
    \makecell[l]{\textit{#3}\ifthenelse{\equal{#6}{}}{}{, #6}} &
      \makecell[r]{\itshape #5} \\
    \ifstrequal{#9}{1}{\small#8}
    \ifstrequal{#9}{2}{}{\small#7}
  \end{tabularx}
  \ifstrequal{#1}{a}{\par\vspace{\gaplength}}{\par\vspace{-4pt}}
}

仅用于\makecell参数#3#5#6。但是,使用类似

\cventry
  % #1 is empty and defaults to 'a'
  {Overall dates} % #2
  {Position 1, Location 2 \\ Position 2, Location 2} % #3
  {Company} % #4
  {Position 1 dates \\ Position 2 dates} % #5
  {} % #6
  {% #7
    \begin{itemize}
    \item content
    \end{itemize}
  }
  {} % #8
  {} % #9

你的论点#3最终会变成(扩展为)

\makecell[l]{%
  \textit{Position 1, Location 2 \\ Position 2, Location 2}%
  \ifthenelse{\equal{#6}{}}{}{, #6}%
}

这是不允许的。您不能使用\textit{<stuff> \\ <more stuff>}。相反,请对 进行以下定义\cventry

\renewcommand{\cventry}[9][a]{%
  \begin{tabularx}{\linewidth}{X r}
    \bfseries #4 & \itshape #2 \\
    \itshape\makecell[l]{#3\ifthenelse{\equal{#6}{}}{}{, #6}} & 
      \itshape\makecell[r]{#5} \\
    \small\ifstrequal{#9}{1}{}{#8}%
          \ifstrequal{#9}{2}{}{#7}
  \end{tabularx}
  \ifstrequal{#1}{a}{\par\vspace{\gaplength}}{\par\vspace{-4pt}}
}

注意字体开关的放置方式外部\makecell定义,从而将其应用于每一行。

相关内容