垂直蓝线创建无效

垂直蓝线创建无效

我想画一条线color1用蓝色表示。在我的代码片段中,我使用由以下变量给出的变量moderncv 本身

\documentclass[11pt,a4paper,sans]{moderncv}        

\usepackage{fontenc} 
\usepackage{graphicx} 
\usepackage{xcolor}

\moderncvstyle{casual}                        
\moderncvcolor{blue}                                
\usepackage[scale=0.75]{geometry} 
\name{John}{Doe}

\renewcommand*{\rule}[2]{\def\@rule{\color{color1}{#1}{#2}}}


\begin{document} 
\makecvtitle 
\hbox{
        \hspace*{0.2\textwidth}
        \rule{5pt}{\textwidth}
        \hspace*{0.05\textwidth} 
} 

\end{document}

为什么这里不行?当我用它编译时,latexmk -xelatex $file我只得到一个纯白色的网站,上面只有 John Doe 这个名字。

答案1

你在评论中提到的答案确实有

\renewcommand*{\opening}[1]{\def\@opening{{\color{color1}#1}}}

但情况完全不同。by 的\opening定义moderncv

\newcommand*{\opening}[1]{\def\@opening{#1}}

这意味着参数\opening被保存\@opening以供以后使用。重新定义会将参数与所需的颜色设置一起保存。

的定义\rule完全不同:

% latex.ltx, line 4984:
\DeclareRobustCommand\rule{\@ifnextchar[\@rule{\@rule[\z@]}}%

想象\DeclareRobustCommand一下\newcommand。定义的目的是检查是否[遵循并将控制权传递给内部命令\@rule。这两种情况之间有一个根本区别:\@opening只是一个容器,\@rule是一个带有参数的宏,负责生成规则。

相反,您试图重新定义\@rule,但不幸的是,这是错误的。

你应该做的是定义一个新命令,因为\rule它可能会在其他情况下使用(可能是在你不知情的情况下在内部使用)。

\newcommand{\colorrule}[3][0pt]{\textcolor{color1}{\rule[#1]{#2}{#3}}}

\colorrule并在需要彩色规则的地方使用。

答案2

我认为这是有效的。

\documentclass[11pt,a4paper,sans]{moderncv}        
\usepackage{fontenc} 
\usepackage{graphicx} 
\usepackage{xcolor}
\moderncvstyle{casual}                        
\moderncvcolor{blue}                                
\usepackage[scale=0.75]{geometry} 
\name{John}{Doe}

\begin{document} 

\parbox[b]{0.75\textwidth}{%
\hbox{\hspace*{0.2\textwidth}
\color{blue}
\rule{1pt}{\textheight} 
\hspace*{0.05\textwidth}}}  
\vskip-9in  
\vtop{\makecvtitle \hspace{2in}Hello World}

\end{document}

相关内容