解释

解释

这是我在这个论坛上的第一个问题,所以请随时纠正我。我想创建一个新的环境,我可以向其传递一个参数“color”。此环境调用一个名为 who 的新命令,该命令\sectionColored采用一个颜色和一个字符串。此命令将用特定颜色为第一个单词着色。你能帮助我吗?


编辑03

\ProvidesClass{cv-style}[2015/02/27 CV class]
\NeedsTeXFormat{LaTeX2e}

\ProcessOptions\relax
\LoadClass{article}


%-------------------------------------------------------------------------------------
% Colors
%-------------------------------------------------------------------------------------
\RequirePackage{xcolor}

\definecolor{white}{RGB}{255,255,255}

\definecolor{gray}{HTML}{4D4D4D}
\definecolor{lightgray}{HTML}{999999}
\definecolor{darkgray}{HTML}{333333}

\definecolor{blue}{HTML}{0395DE}
\definecolor{red}{HTML}{DC3912}
\definecolor{orange}{HTML}{FF9900}
\definecolor{green}{HTML}{109618}
\definecolor{purple}{HTML}{9358FE}
\definecolor{aquamarine}{HTML}{0C343D}

\definecolor{date}{HTML}{A4A4A4}

\colorlet{fillheader}{white}
\colorlet{header}{darkgray}
\colorlet{headerSub}{darkgray}
\colorlet{textcolor}{gray}
\colorlet{headercolor}{gray}
\colorlet{headerSub}{darkgray}


%-------------------------------------------------------------------------------------
% Fonts
%-------------------------------------------------------------------------------------
\RequirePackage[quiet]{fontspec}
\RequirePackage[math-style=TeX,vargreek-shape=unicode]{unicode-math}

\newfontfamily\bodyfont
[BoldFont=texgyreheros-bold.otf,
ItalicFont=texgyreheros-italic.otf,
BoldItalicFont=texgyreheros-bolditalic.otf]
{texgyreheros-regular.otf}
\newfontfamily\bodyfont{Roboto-Regular}[Path=fonts/]
\newfontfamily\bodyfontit{Roboto-LightItalic}[Path=fonts/]
\newfontfamily\thinfont{Roboto-Thin}[Path=fonts/]
\newfontfamily\headingfont{RobotoCondensed-Bold}[Path=fonts/]

\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Mapping=tex-text, Color=textcolor, Path = fonts/]{Roboto-Light}

\newcommand{\italica}[1]{%
    {\color{gray}\bodyfontit #1}%
}


%-------------------------------------------------------------------------------------
% Header
%-------------------------------------------------------------------------------------
\RequirePackage{tikz}
\usetikzlibrary{positioning}

\newcommand{\rolefont}{%
  \fontsize{14pt}{24pt}\selectfont%
  \thinfont%
  \color{white}%
}

\newcommand{\header}[3]{%
  \begin{tikzpicture}[remember picture,overlay]
    \node [rectangle, fill=fillheader, anchor=north, minimum width=\paperwidth, minimum height=3cm] (box) at (6.2, 1.8){};
    \node [anchor=center] (name) at (box) {%
      \fontsize{30pt}{62pt}\color{header}%
      {\thinfont #1}{\bodyfont  #2}
    };
    \node [below=of name.west, anchor=west] at (0, 0.5) {%
      \fontsize{14pt}{24pt}\color{headerSub}%
      \bodyfont #3%
    };
  \end{tikzpicture}
  \vspace{0.6cm}
  \vspace{\parskip}
}

\newcommand{\darkbar}{
  \\\fcolorbox{white}{gray}{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule}{%
  .....
  }}
}


%-------------------------------------------------------------------------------------
% Structure
%-------------------------------------------------------------------------------------
\RequirePackage{parskip}
\setlength{\parskip}{4pt}

\renewcommand{\section}[1]{
  \par\vspace{\parskip}
  {%
    \LARGE\headingfont\color{headercolor}%
    \@sectioncolor #1%
  }
  \par\vspace{\parskip}
}

\newcommand{\sectioncolored}[3]{%
  \section{\textcolor{#1}{#2} #3}%
}

\renewcommand{\subsection}[2]{
  \par\vspace{.5\parskip}%
  \Large\headingfont\color{headercolor} #2%
  \par\vspace{.25\parskip}%
}

\pagestyle{empty}


%-------------------------------------------------------------------------------------
% List environment
%-------------------------------------------------------------------------------------
\setlength{\tabcolsep}{0pt}

\makeatletter
\def\entrylistsplitfirst#1 #2\@nil{#1}
\def\entrylistsplitsecond#1 #2\@nil{#2}
\newenvironment{entrylist}[2]{%
  \edef\tempa{\expandafter\expandafter\expandafter\entrylistsplitfirst #2\@nil}%
  \edef\tempb{\expandafter\expandafter\expandafter\entrylistsplitsecond #2\@nil}%
  \sectioncolored{#1}{\tempa}{\tempb}%
  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll}

  \newcommand{\entry}[4]{
    ##1&\parbox[t]{12.5cm}{
      \textbf{##2}
      \hfill
      {\footnotesize\addfontfeature{Color=#1} ##3}\\
      ##4\vspace{\parsep}
    }\\\\
  }
}{
  \end{tabular*}
}
\makeatother


%-------------------------------------------------------------------------------------
% Side block
%-------------------------------------------------------------------------------------
\RequirePackage[absolute,overlay]{textpos}
\setlength{\TPHorizModule}{1cm}
\setlength{\TPVertModule}{1cm}

\newenvironment{aside}{%
  \let\oldsection\section
  \renewcommand{\section}[1]{
    \par\vspace{0.75\baselineskip}{\Large\headingfont\color{headercolor} ##1}
  }
  \begin{textblock}{4.0}(1, 0.15)
  \begin{flushright}
  \obeycr
}{%
  \restorecr
  \end{flushright}
  \end{textblock}
  \let\section\oldsection
}


%-------------------------------------------------------------------------------------
% Other tweaks
%-------------------------------------------------------------------------------------
\RequirePackage[left=5.6cm,top=1.15cm,right=1cm,bottom=0.90cm,nohead,nofoot]{geometry}
\RequirePackage{hyperref}

和,

\documentclass[]{cv-style}

\begin{document}
%-------------------------------------------------------------------------------------
% Header
%-------------------------------------------------------------------------------------
\header
{Hugo}
{Lapointe Di Giacomo}
{Commerce aux détails \& Service à la clientèle}
\darkbar

%-------------------------------------------------------------------------------------
% Side Block
%-------------------------------------------------------------------------------------
\begin{aside}
\section{Adresse}
28, rue de la Calèche
St-Basile-le-Grand, Qc
Canada
~
\section{Téléphone}
\href{tel:15146544846}{+1 514 654-4846}
~
\section{Adresses électroniques}
\href{mailto:[email protected]}{hugo.lapo\\@\textbf{gmail.com}}
\href{mailto:[email protected]}{hugo.lapointe.di.giacomo\\@\textbf{umontreal.ca}}
~
\section{Profils}
\href{https://ca.linkedin.com/in/hugolapointe}{\textbf{LinkedIn}/\\hugolapointe}
\href{http://www.facebook.com/hugolapointedigiacomo}{\textbf{Facebook}/\\HugoLapointeDiGiacomo}
~
\section{Compétences professionnelles}
\includegraphics[scale=0.62]{img/personal.png}
~
\section{Langages de programmation}
\includegraphics[scale=0.62]{img/programming.png}
~
\section{Intérêts professionnels}
Sciences, Informatique, Mathématiques, Sécurité, Médical, Cinéma, Social.
~
\section{Langues}
\textbf{Français}\includegraphics[scale=0.40]{img/5stars.png}
\textbf{Anglais}\includegraphics[scale=0.40]{img/3stars.png}
\end{aside}


%-------------------------------------------------------------------------------------
% Body
%-------------------------------------------------------------------------------------
\begin{entrylist}{blue}{Expériences de travail}
    \entry
    {2015}
    {Opérateur aux remontées mécaniques}
    {Ski St-Bruno, St-Bruno-de-Montarville}
    {
      Responsable de l’accueil et du contact avec les invités. 
      Opérer les remontées mécaniques. 
      Travailler dans un climat à température extrême. 
      Respect de protocoles de sécurité.
    }

    \entry
    {2014}
    {Stagiaire en génie logiciel}
    {Miramétrix Inc., Montréal}
    {
      Conception orientée objet et respect des patrons de conception. 
      Création d'outils de développement. 
      Production de procédures écrites et de documentations. 
      Respect des normes de programmation strictes et d'échéanciers serrés.
    }

    \entry
    {2013}
    {Programmeur analyste}
    {Groupe Dutailier, St-Pie}
    {
      Conception de sites Web et programmes répondant à des besoins particuliers. 
      Analyse des besoins et production de documentations fonctionnelles. 
      Création et intégration de bases de données. 
      Collaboration avec experts et unification des compétences.
    }

    \entry
    {2010 $-$ 2013}
    {Associé aux ventes}
    {La Source, Beloeil}
    {
      Service de vente destiné à la clientèle. 
      Services techniques en informatique, électrique et mécanique offert à la clientèle. 
      Tâches de gestion telles que l'ouverture et la fermeture du magasin. 
      Surpassement de quotas et d'objectifs de ventes hebdomadaires.
    }

    \entry
    {2008 $-$ 2010}
    {Soldat d'infanterie}
    {Forces Canadiennes, R22eR}
    {
      Travail d'équipe fortement structuré et fonctionnel. 
      Doit effectuer un travail rigoureux et efficace. 
      Accomplissement de tâches physiques et mentales dans des conditions difficiles. 
      Innovation et dépassement de soi.
    }  
\end{entrylist}


\begin{entrylist}{red}{Parcours scolaire}
    \entry
    {Depuis 2015}
    {Baccalauréat en mathématiques et informatique}
    {Université de Montréal}
    {Spécialisation en \italica{génie logiciel} et en \italica{optimisation}.}

    \entry
    {2013 $-$ 2014}
    {Études en génie logiciel}
    {École de technologie supérieure (ÉTS)}
    {Plus de 50 crédits cumulés et un stage complété.}

    \entry
    {2013}
    {DEC en technique informatique}
    {Cégep de St-Hyacinthe}
    {Informatique de gestion}   
\end{entrylist}


\begin{entrylist}{orange}{Formations professionnelles}
    \entry
    {2014}
    {Pompier niveau 1}
    {École Nationale des Pompiers du Québec}
    {
      Sauvetage de victimes, évacuation de bâtiments, recherche de victimes, protection de bâtiments, éradication du feu et circonscription du feu. 
      Interventions en matières dangereuses.
    }

    \entry
    {2014}
    {Secouriste avancé RCR C+}
    {Formation Vitale}
    {
      Interventions de secours et gestion sécuritaire de la situation. 
      Dispenser les premiers secours selon les blessures. 
      Communiquer l'évaluation relative à la situation aux services préhospitaliers d'urgence.
    }  
\end{entrylist}
\end{document}

答案1

像这样?

蓝色和黑色

\documentclass{article}
\usepackage{xcolor}
\newcommand{\sectioncolored}[3]{%
  \section{\textcolor{#1}{#2} #3}%
}
\makeatletter
\def\entrylistsplitfirst#1 #2\@nil{#1}
\def\entrylistsplitsecond#1 #2\@nil{#2}
\newenvironment{entrylist}[2]{%
  \edef\tempa{\expandafter\expandafter\expandafter\entrylistsplitfirst #2\@nil}%
  \edef\tempb{\expandafter\expandafter\expandafter\entrylistsplitsecond #2\@nil}%
  \sectioncolored{#1}{\tempa}{\tempb}%
}{}
\makeatother
\begin{document}
\begin{entrylist}{blue}{Blue Black}
  abc
\end{entrylist}
\end{document}

解释

我们需要传递\sectioncolored3 个参数,而不是 2 个:颜色;第一个单词;其余单词。然后我们\textcolor{#1}{#2}只对第一个单词着色。

\newcommand{\sectioncolored}[3]{%
  \section{\textcolor{#1}{#2} #3}%
}

我们将使用@命令,因此我们需要使用 来更改 catcode \makeatletter

\makeatletter

我们定义\entrylistsplitfirst#1 #2\@nil获取标题的第一个单词。

\def\entrylistsplitfirst#1 #2\@nil{#1}

我们定义\entrylistsplitsecond#1 #2\@nil获取标题的其余部分。

\def\entrylistsplitsecond#1 #2\@nil{#2}

我们需要,\def因为我们的参数规范包含一个空格。 用于\@nil标记参数的结尾。请注意,这些定义假设标题至少包含 2 个单词。如果您的标题可能只有一个单词,则需要调整代码以适应这种可能性。

然后我们定义环境。

\newenvironment{entrylist}[2]{%

首先,我们将标题的第一个单词保存到宏中\tempa

  \edef\tempa{\expandafter\expandafter\expandafter\entrylistsplitfirst #2\@nil}%

其次,我们将标题的其余部分保存到宏中\tempb

  \edef\tempb{\expandafter\expandafter\expandafter\entrylistsplitsecond #2\@nil}%

最后,我们将颜色 ( #1) 和标题的两个部分传递给\sectioncolored。请注意,我在这里做了一些修改,因为原始代码定义了一个宏,而使用了另一个宏,这显然不起作用。 (\sectioncolored与 不是同一个宏\sectionColored。)

  \sectioncolored{#1}{\tempa}{\tempb}%
}{}

最后,我们将@其恢复到序言中的正常状态。

\makeatother

相关内容