![更新:](https://linux22.com/image/393380/%E6%9B%B4%E6%96%B0%EF%BC%9A.png)
我正在使用moderncv
具有classic
样式的文档类型并尝试创建类似于\cventry
所述新命令这里。我试图消除末尾出现的句点,只保留年份、标题和说明。我知道我可以将不需要的字段留空,但我认为弄清楚这一点可能是一个很好的教训。我重命名了所有有的内容cventry
,但我可以重复使用任何内容吗?我试图在序言中定义如下:
\newcommand*{\cvthing}[4][.25em]{%
\savebox{\cvthingyearbox}{%
\hspace*{2\separatorcolumnwidth}%
\hintstyle{#2}}%
\setlength{\cvthingtitleboxwidth}{\widthof{\usebox{\cvthingyearbox}}}%
\setlength{\cvthingtitleboxwidth}{\maincolumnwidth-\cvthingtitleboxwidth}%
\begin{minipage}{\maincolumnwidth}%
\parbox[t]{\cvthingtitleboxwidth}{%
\strut%
{\bfseries#3}%
{\strut}%
\usebox{\cvthingyearbox}%
\end{minipage}%
\ifx&%
\else{%
\newline{}%
\begin{minipage}[t]{\maincolumnwidth}%
\small%
#4%
\end{minipage}}\fi%
\par\addvspace{#1}}
但我收到这些错误:
File ended while scanning use of \@xargdef.
You have requested package `moderncvheadi', but the package provides `moderncvheadi'.
You have requested package `moderncvbodyi', but the package provides `moderncvbodyi'.
我已经使用 LaTeX 几年了,但还没有尝试做出太大的改变。有人能解释一下我做错了什么吗?
答案1
在您给出的代码片段中存在几个问题,有些我可以纠正,有些则不能,因为您没有告诉我们您想要存档的内容。我将其用于\cvtest
以下备注和下面的 mwe...
- 要使用新盒子你需要初始化它:
\@initializebox{\cvtestyearbox}
- 要使用新的长度,您必须定义它:
\newlength{\cvtesttitleboxwidth}
- 因为我们必须使用,所以
\@initializebox
我们需要使用\makeatletter
\makeatother
- 您的某些括号位置不正确。例如:您不能打开一个括号
\parbox
并在其内部关闭一个括号,在...minipage
之前打开...\parbox
更新:
因为你现在提供了更多信息,所以我删除了之前猜测的代码。请参阅下面的 MWE 和正确的工作代码。
这里的主要问题是误解,因为您使用的代码不是为 构建的\moderncvstyle{classic}
,而是为 构建的\moderncvstyle{casual}
。
因此,代码为\cvtest
(请查看新名称!):
\makeatletter
\@initializebox{\cvtestyearbox} % <====================================
\newlength{\cvtesttitleboxwidth} % <===================================
\newcommand*{\cvtest}[4][.25em]{%
\savebox{\cvtestyearbox}{%
\hspace*{2\separatorcolumnwidth}%
\hintstyle{#2}}%
\setlength{\cvtesttitleboxwidth}{\widthof{\usebox{\cvtestyearbox}}}%
\setlength{\cvtesttitleboxwidth}{\maincolumnwidth-\cvtesttitleboxwidth}%
\begin{minipage}{\maincolumnwidth}%
\parbox[t]{\cvtesttitleboxwidth}{%
\strut%
{\bfseries#3}%
\strut}%
\usebox{\cvtestyearbox}%
\end{minipage}%
\ifx&%
\else{%
\newline{}%
\begin{minipage}[t]{\maincolumnwidth}%
\small%
#4%
\end{minipage}}\fi%
\par\addvspace{#1}}
\makeatother
现在可以编译,但结果错误:
为了使\cvthing
命令以如下样式可用,您需要从以下样式classic
的定义开始:cventry
\renewcommand*{\cventry}[7][.25em]{%
\cvitem[#1]{#2}{%
{\bfseries#3}%
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
\ifthenelse{\equal{#5}{}}{}{, #5}%
\ifthenelse{\equal{#6}{}}{}{, #6}%
.\strut%
\ifx&%
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
现在我们可以将其改为:
%\cvthing{year--year}{title}{description} % <===========================
\newcommand*{\cvthing}[4][.25em]{%
\cvitem[#1]{#2}{%
{\bfseries#3}%
\strut%
\ifx&%
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#4\end{minipage}}\fi}}
最后我们得到以下完整代码
\documentclass[11pt,a4paper,sans]{moderncv}
% moderncv themes
\moderncvstyle{classic} % casual, classic, banking, oldstyle and fancy
\moderncvcolor{blue}
\usepackage[utf8]{inputenc}
\usepackage[scale=0.75]{geometry}
%\cvthing{year--year}{title}{description} % <===========================
\newcommand*{\cvthing}[4][.25em]{%
\cvitem[#1]{#2}{%
{\bfseries#3}%
\strut%
\ifx&%
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#4\end{minipage}}\fi}}
\makeatletter
\@initializebox{\cvtestyearbox} % <====================================
\newlength{\cvtesttitleboxwidth} % <===================================
%\cvtest{year--year}{title}{description} % <===========================
\newcommand*{\cvtest}[4][.25em]{%
\savebox{\cvtestyearbox}{%
\hspace*{2\separatorcolumnwidth}%
\hintstyle{#2}}%
\setlength{\cvtesttitleboxwidth}{\widthof{\usebox{\cvtestyearbox}}}%
\setlength{\cvtesttitleboxwidth}{\maincolumnwidth-\cvtesttitleboxwidth}%
\begin{minipage}{\maincolumnwidth}%
\parbox[t]{\cvtesttitleboxwidth}{%
\strut%
{\bfseries#3}%
\strut}%
\usebox{\cvtestyearbox}%
\end{minipage}%
\ifx&%
\else{%
\newline{}%
\begin{minipage}[t]{\maincolumnwidth}%
\small%
#4%
\end{minipage}}\fi%
\par\addvspace{#1}}
\makeatother
% personal data
\name{John}{Doe}
\title{Resumé title}
\address{street and number}{postcode city}{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}
\social[linkedin]{john.doe}
\social[twitter]{jdoe}
\social[github]{jdoe}
\extrainfo{additional information}
\photo[64pt][0.4pt]{example-image-a}
\quote{Some quote}
\setlength{\footskip}{66pt}
\begin{document}
\makecvtitle
\section{Education}
\cventry{year--year}{Degree}{Institution--3}{City--4}{\textit{Grade}--5}{Description--6} % arguments 3 to 6 can be left empty
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
\cvthing{year--year}{Degree}{Institution}% <============================
\cvtest{year--year}{Degree}{Institution}% <=============================
\section{Master thesis}
\cvitem{title}{\emph{Title}}
\cvitem{supervisors}{Supervisors}
\cvitem{description}{Short thesis abstract}
\end{document}
结果如下(请注意,\cvtest
样式不正确classic
!):