Files
scandocs/bewerbung/europecv/europecv.cls
2014-06-03 13:41:26 +02:00

585 lines
20 KiB
TeX

%!TEX encoding = UTF-8 Unicode
%
% European curriculum vitae class
% Author: Nicola Vitacolonna (vitacolo@dimi.uniud.it)
% This material is subject to the LaTeX Project Public License.
% See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
% for the details of that license
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{europecv}[2006/04/24 (beta) European curriculum vitae class]
% CV models and instructions:
% http://europass.cedefop.eu.int/htm/index.htm
% Recommendations:
% http://europa.eu.int/scadplus/leg/en/cha/c11057.htm
\newcommand\ecv@utf[1]{{\inputencoding{utf8x}#1}}
% Set language
\DeclareOption{english}{%
\AtEndOfPackage{%
\InputIfFileExists{ecven.def}{}{%
\ClassError{europecv}{English definition file 'ecven.def' not found}%
{The file should be inside the europecv folder.\MessageBreak
Try to re-install the europecv class.}}%
}%
}
\DeclareOption{italian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvit.def}{}{%
\ClassWarningNoLine{europecv}{Italian definition file 'ecvit.def' not found}}%
}%
}
\DeclareOption{spanish}{%
\AtEndOfPackage{%
\InputIfFileExists{ecves.def}{}{%
\ClassWarningNoLine{europecv}{Spanish definition file 'ecves.def' not found}}%
}%
}
\DeclareOption{french}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvfr.def}{}{%
\ClassWarningNoLine{europecv}{French definition file 'ecvfr.def' not found}}%
}%
}
\DeclareOption{danish}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvda.def}{}{%
\ClassWarningNoLine{europecv}{Danish definition file 'ecvda.def' not found}}%
}%
}
\DeclareOption{german}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvde.def}{}{%
\ClassWarningNoLine{europecv}{German definition file 'ecvde.def' not found}}%
}%
}
\DeclareOption{finnish}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvfi.def}{}{%
\ClassWarningNoLine{europecv}{Finnish definition file 'ecvfi.def' not found}}%
}%
}
\DeclareOption{portuges}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvpt.def}{}{%
\ClassWarningNoLine{europecv}{Portuguese definition file 'ecvpt.def' not found}}%
}%
}
\DeclareOption{portuguese}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvpt.def}{}{%
\ClassWarningNoLine{europecv}{Portuguese definition file 'ecvpt.def' not found}}%
}%
}
\DeclareOption{swedish}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvsv.def}{}{%
\ClassWarningNoLine{europecv}{Swedish definition file 'ecvsv.def' not found}}%
}%
}
\DeclareOption{norwegian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvno.def}{}{%
\ClassWarningNoLine{europecv}{Norwegian definition file 'ecvno.def' not found}}%
}%
}
\DeclareOption{dutch}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvnl.def}{}{%
\ClassWarningNoLine{europecv}{Dutch definition file 'ecvnl.def' not found}}%
}%
}
\DeclareOption{catalan}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvca.def}{}{%
\ClassWarningNoLine{europecv}{Catalan definition file 'ecvca.def' not found}}%
}%
}
\DeclareOption{polish}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvpl.def}{}{%
\ClassWarningNoLine{europecv}{Polish definition file 'ecvpl.def' not found}}%
}%
}
\DeclareOption{hungarian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvhu.def}{}{%
\ClassWarningNoLine{europecv}{Hungarian definition file 'ecvhu.def' not found}}%
\ecvpage{\thepage\ifx\@empty\ecv@totpages.\else\ecv@totpages\fi~\ecv@pagekey}
\def\ecv@lfoot{%
\footnotesize\textrm{\ecv@page~- \textrm{\ecv@footername} \ecv@cvofkey}}%
}%
}
\DeclareOption{estonian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvet.def}{}{%
\ClassWarningNoLine{europecv}{Estonian definition file 'ecvet.def' not found}}%
}%
}
\DeclareOption{icelandic}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvis.def}{}{%
\ClassWarningNoLine{europecv}{Icelandic definition file 'ecvis.def' not found}}%
}%
}
\DeclareOption{lithuanian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvlt.def}{}{%
\ClassWarningNoLine{europecv}{Lithuanian definition file 'ecvlt.def' not found}}%
}%
}
\DeclareOption{czech}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvcs.def}{}{%
\ClassWarningNoLine{europecv}{Czech definition file 'ecvcs.def' not found}}%
}%
}
\DeclareOption{slovak}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvsk.def}{}{%
\ClassWarningNoLine{europecv}{Slovak definition file 'ecvsk.def' not found}}%
}%
}
\DeclareOption{latvian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvlv.def}{}{%
\ClassWarningNoLine{europecv}{Latvian definition file 'ecvlv.def' not found}}%
}%
}
\DeclareOption{slovenian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvsl.def}{}{%
\ClassWarningNoLine{europecv}{Slovenian definition file 'ecvsl.def' not found}}%
}%
}
\DeclareOption{romanian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvro.def}{}{%
\ClassWarningNoLine{europecv}{Romanian definition file 'ecvro.def' not found}}%
}%
}
\DeclareOption{maltese}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvmt.def}{}{%
\ClassWarningNoLine{europecv}{Maltese definition file 'ecvmt.def' not found}}%
}%
}
\DeclareOption{bulgarian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvbg.def}{}{%
\ClassWarningNoLine{europecv}{Bulgarian definition file 'ecvbg.def' not found}}%
}%
}
\DeclareOption{greek}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvgr.def}{}{%
\ClassWarningNoLine{europecv}{Greek definition file 'ecvgr.def' not found}}%
}%
}
\DeclareOption{galician}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvgl.def}{}{%
\ClassWarningNoLine{europecv}{Galician definition file 'ecvgl.def' not found}}%
}%
}
\DeclareOption{serbian}{%
\AtEndOfPackage{%
\InputIfFileExists{ecvsr.def}{}{%
\ClassWarningNoLine{europecv}{Serbian definition file 'ecvsr.def' not found}}%
}%
}
% Input encodings
\DeclareOption{ascii}{\AtEndOfClass{\inputencoding{ascii}}}
\DeclareOption{latin1}{\AtEndOfClass{\inputencoding{latin1}}}
\DeclareOption{latin2}{\AtEndOfClass{\inputencoding{latin2}}}
\DeclareOption{latin3}{\AtEndOfClass{\inputencoding{latin3}}}
\DeclareOption{latin4}{\AtEndOfClass{\inputencoding{latin4}}}
\DeclareOption{latin5}{\AtEndOfClass{\inputencoding{latin5}}}
\DeclareOption{latin9}{\AtEndOfClass{\inputencoding{latin9}}}
\DeclareOption{latin10}{\AtEndOfClass{\inputencoding{latin10}}}
\DeclareOption{decmulti}{\AtEndOfClass{\inputencoding{decmulti}}}
\DeclareOption{cp850}{\AtEndOfClass{\inputencoding{cp850}}}
\DeclareOption{cp852}{\AtEndOfClass{\inputencoding{cp852}}}
\DeclareOption{cp858}{\AtEndOfClass{\inputencoding{cp858}}}
\DeclareOption{cp437}{\AtEndOfClass{\inputencoding{cp437}}}
\DeclareOption{cp437de}{\AtEndOfClass{\inputencoding{cp437de}}}
\DeclareOption{cp865}{\AtEndOfClass{\inputencoding{cp865}}}
\DeclareOption{applemac}{\AtEndOfClass{\inputencoding{applemac}}}
\DeclareOption{next}{\AtEndOfClass{\inputencoding{next}}}
\DeclareOption{cp1250}{\AtEndOfClass{\inputencoding{cp1250}}}
\DeclareOption{cp1252}{\AtEndOfClass{\inputencoding{cp1252}}}
\DeclareOption{cp1257}{\AtEndOfClass{\inputencoding{cp1257}}}
\DeclareOption{ansinew}{\AtEndOfClass{\inputencoding{ansinew}}}
\DeclareOption{utf8}{\AtEndOfClass{\inputencoding{utf8x}}}
\DeclareOption{utf8x}{\AtEndOfClass{\inputencoding{utf8x}}}
\DeclareOption{koi8-r}{\AtEndOfClass{\inputencoding{koi8-r}}}
\DeclareOption{koi8-ru}{\AtEndOfClass{\inputencoding{koi8-ru}}}
\DeclareOption{koi8-u}{\AtEndOfClass{\inputencoding{koi8-u}}}
\DeclareOption{cp1251}{\AtEndOfClass{\inputencoding{cp1251}}}
\DeclareOption{cp855}{\AtEndOfClass{\inputencoding{cp855}}}
\DeclareOption{cp866}{\AtEndOfClass{\inputencoding{cp866}}}
\DeclareOption{maccyr}{\AtEndOfClass{\inputencoding{maccyr}}}
\DeclareOption{macukr}{\AtEndOfClass{\inputencoding{macukr}}}
% Set font
\DeclareOption{helvetica}{%
\renewcommand{\rmdefault}{phv}
\renewcommand{\sfdefault}{phv}
}
\DeclareOption{arial}{%
\renewcommand{\rmdefault}{ma1} % (this font is NOT installed by default!)
\renewcommand{\sfdefault}{ma1}
}
\DeclareOption{narrow}{
\renewcommand{\seriesdefault}{mc} % Narrow
\renewcommand{\bfdefault}{bc} % Boldface narrow
}
% No title
% This must come *after* language definitions
\DeclareOption{notitle}{%
\AtEndOfPackage{\renewcommand*\ecvtitle{}}%
}
% Europass logo
\DeclareOption{logo}{%
\providecommand*\draweuropasslogo{%
\includegraphics[width=\ecv@logowidth]{europasslogo}}
}
\DeclareOption{nologo}{\renewcommand*\draweuropasslogo{}}
% Flag pictures of the EC can be found at
% http://europa.eu.int/abc/symbols/emblem/index_en.htm
\DeclareOption{noflag}{\providecommand*\draweuropeflag{}}
\DeclareOption{flagWB}{%
\renewcommand*\draweuropeflag{%
\includegraphics[width=\ecv@flagwidth]{EuropeFlagWB}}
}
\DeclareOption{flagBW}{%
\renewcommand*\draweuropeflag{%
\includegraphics[width=\ecv@flagwidth]{EuropeFlagBW}}
}
\DeclareOption{flagCMYK}{%
\renewcommand*\draweuropeflag{%
\includegraphics[width=\ecv@flagwidth]{EuropeFlagCMYK}}
}
\DeclareOption{flagBlueCMYK}{%
\renewcommand*\draweuropeflag{%
\includegraphics[width=\ecv@flagwidth]{EuropeFlagBlueCMYK}}
}
% Page numbering
\DeclareOption{totpages}{%
\AtEndOfPackage{\RequirePackage{totpages}%
\def\ecv@totpages{~/~\ref{TotPages}}
%\ecvpage{\ecv@pagekey~\thepage~/~\ref{TotPages}}%
}%
}
\DeclareOption{booktabs}{%
\AtEndOfPackage{\RequirePackage{booktabs}}
\def\ecv@booktabs{}
}
% Pass all other options (a4paper, 10pt, draft, openbib, etc...) to article
\DeclareOption*{%
\PassOptionsToClass{\CurrentOption}{article}%
}
\ExecuteOptions{english,noflag,logo,hrule} % Default options
\ProcessOptions\relax
\LoadClass{article}
\RequirePackage{ucs}
\RequirePackage[utf8x]{inputenc}
\RequirePackage{array}
\RequirePackage{longtable}
\RequirePackage{fancyhdr} % For page numbering
\def\ecv@totpages{}
\newcommand*{\ecvpage}[1]{\def\ecv@page{#1}}
\ecvpage{\ecv@pagekey~\thepage\ecv@totpages}
% Page number
\def\ecv@lfoot{%
\footnotesize\textrm{\ecv@page~-~\ecv@cvofkey}\\
\textrm{\ecv@footername}
}
% Right Footnote to be shown on every page
\newcommand\ecvfootnote[1]{\def\ecv@rfoot{#1}}
\ecvfootnote{}
\AtBeginDocument{%
% Ensure that \ecv@leftcolwidth and \ecv@rightcolwidth
% are correctly defined
\ecvLeftColumnWidth{\ecv@leftcolwidth}
% Set layout
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\fancyfoot[L]{\begin{minipage}{\ecv@leftcolwidth}
\begin{flushright}\footnotesize\ecv@lfoot\end{flushright}%
\end{minipage}
}
\fancyfoot[R]{\begin{minipage}{\ecv@rightcolwidth}
\footnotesize\ecv@rfoot
\end{minipage}}
\renewcommand{\headrulewidth}{0pt}%
} % End \AtBeginDocument
% Thanks to Roman Bertle for suggesting the following:
\renewcommand{\labelitemi}{\normalfont\bfseries \textendash}
\renewcommand{\labelitemii}{\textasteriskcentered}
\renewcommand{\labelitemiii}{\textperiodcentered}
\newcommand*{\ecvfirstname}[1]{\def\ecv@firstname{#1}} % Deprecated
\newcommand*{\ecvlastname}[1]{\def\ecv@lastname{#1}} % Deprecated
\newcommand*{\ecvname}[1]{\def\ecv@name{#1}} % Replaces the above
\newcommand*{\ecvfootername}[1]{\def\ecv@footername{#1}}
\newcommand*{\ecvaddress}[1]{\def\ecv@address{#1}}
\newcommand*{\ecvtelephone}[2][]{\def\ecv@telephone{#2}\def\ecv@mobile{#1}}
\newcommand*{\ecvfax}[1]{\def\ecv@fax{#1}}
\newcommand*{\ecvemail}[1]{\def\ecv@email{#1}}
\newcommand*{\ecvhomepage}[1]{\def\ecv@homepage{#1}}
\newcommand*{\ecvnationality}[1]{\def\ecv@nationality{#1}}
\newcommand*{\ecvdateofbirth}[1]{\def\ecv@birth{#1}}
\newcommand*{\ecvgender}[1]{\def\ecv@gender{#1}}
% Personal picture
\newcommand*{\ecvdrawpicture}{}
\newcommand*{\ecvbeforepicture}[1]{\def\ecv@beforepic{#1}}
\newcommand*{\ecvafterpicture}[1]{\def\ecv@afterpic{#1}}
\newcommand*\ecvpicture{%
\@ifnextchar[\ecv@picture{\ecv@picture[]}}
\def\ecv@picture[#1]#2{%
\def\ecvarg{#2}
\ifx\@empty\ecvarg\renewcommand*{\ecvdrawpicture}{}\else
\renewcommand*{\ecvdrawpicture}{\includegraphics[#1]{#2}}
\fi}
% The following must be used inside \ecvbeforepicture
% or \ecvafterpicture
\newcommand*{\ecvspace}[1]{\tabularnewline[#1] &}
\ecvbeforepicture{\raggedleft}
\ecvafterpicture{}
\ecvfirstname{}
\ecvlastname{}
\ecvname{\ecv@lastname\ \ecv@firstname}
\ecvfootername{\ecv@name}
\ecvaddress{}
\ecvtelephone{}
\ecvfax{}
\ecvemail{}
\ecvnationality{}
\ecvdateofbirth{}
\ecvgender{}
\ecvpicture{}
\providecommand{\ecvpersonalinfo}[1][0pt]{%
& \tabularnewline
\ifx\@empty\ecvdrawpicture\else
&\ecv@beforepic\ecvdrawpicture\ecv@afterpic\tabularnewline
\fi
{\large\par\textbf{\ecv@infosectionkey}} & \tabularnewline
& \tabularnewline
\ecv@namekey & \large\textbf{\ecv@name}\tabularnewline[5pt]
\ifx\@empty\ecv@address\else
\ecv@addresskey &\ecv@address \tabularnewline[5pt]
\fi
\ifx\@empty\ecv@telephone\else
\ecv@telkey &\ecv@telephone
\ifx\@empty\ecv@mobile\else\qquad\ecv@mobilekey: \ecv@mobile\fi
\tabularnewline[5pt]
\fi
\ifx\@empty\ecv@fax\else
\ecv@faxkey &\ecv@fax \tabularnewline[5pt]
\fi
\ifx\@empty\ecv@email\else
\ecv@emailkey &\ecv@email \tabularnewline[5pt]
\fi
\ifx\@empty\ecv@nationality\else
\ecv@nationalitykey & \ecv@nationality \tabularnewline[5pt]
\fi
\ifx\@empty\ecv@birth\else
\ecv@birthkey & \ecv@birth \tabularnewline[5pt]
\fi
\ifx\@empty\ecv@gender\else
\ecv@genderkey & \ecv@gender \tabularnewline[#1]
\fi
}
% Spoken language information
\newcommand*\ecvmothertongue[2][0pt]{%
{\large\ecv@mothertonguekey} & \large\textbf{#2}\tabularnewline[#1]
}
\newlength\ecv@langparwidth
\ifx\ecv@booktabs\undefined % Use table conforming to EU model
\newcommand*\ecvlanguageheader[1]{%
{\large\textit{\ecv@assesskey}}\\ \textit{\ecv@levelkey}${}^{\mbox{\scriptsize#1}}$&
\setlength\extrarowheight{2pt}
\begin{tabular}[t]{|m{\ecv@langparwidth}|m{\ecv@langparwidth}|m{\ecv@langparwidth}|m{\ecv@langparwidth}|m{\ecv@langparwidth}|}
\firsthline
\multicolumn{2}{|c|}{\textbf{\ecv@understandkey}}&\multicolumn{2}{c|}{\textbf{\ecv@speakkey}}&\centering\textbf{\ecv@writekey}\tabularnewline\cline{1-4}
\centering\small{\ecv@listenkey} & \centering \small{\ecv@readkey} &\centering \small{\ecv@interactkey} &\centering \small{\ecv@productkey} & \tabularnewline
%\lasthline
\hline
\end{tabular} \tabularnewline[-\arrayrulewidth]
}
\newcommand*\ecvlanguage[7][0pt]{
{\textbf{#2}} &
\setlength\extrarowheight{0pt}
\begin{tabular}{|m{\ecv@langparwidth}|m{\ecv@langparwidth}|m{\ecv@langparwidth}|m{\ecv@langparwidth}|m{\ecv@langparwidth}|}
\hline
#3 & #4 & #5 & #6 & #7 \tabularnewline
\hline
\end{tabular}\vspace{#1}
\tabularnewline[-\arrayrulewidth]
}
\newcommand*\ecvlastlanguage[7][0pt]{\ecvlanguage[#1]{#2}{#3}{#4}{#5}{#6}{#7}}
\else % Use booktabs
\newcommand*\ecvlanguageheader[1]{%
{\large\textit{\ecv@assesskey}}\\ \textit{\ecv@levelkey}${}^{\mbox{\scriptsize#1}}$&
\setlength\extrarowheight{0pt}
\begin{tabular}[t]{m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}}
\toprule
\multicolumn{2}{c}{\textbf{\ecv@understandkey}}&\multicolumn{2}{c}{\textbf{\ecv@speakkey}}&\centering\textbf{\ecv@writekey}\tabularnewline
\centering\small{\ecv@listenkey} & \centering \small{\ecv@readkey} &\centering \small{\ecv@interactkey} &\centering \small{\ecv@productkey} & \tabularnewline
\midrule
\end{tabular}\vspace{2\arrayrulewidth}\tabularnewline
}
\newcommand*\ecvlanguage[7][0pt]{
{\textbf{#2}} &
\setlength\extrarowheight{0pt}
\begin{tabular}{m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}}
#3 & #4 & #5 & #6 & #7\tabularnewline \midrule
\end{tabular}\vspace{#1}
\tabularnewline
}
\newcommand*\ecvlastlanguage[7][0pt]{
{\textbf{#2}} &
\setlength\extrarowheight{0pt}
\begin{tabular}{m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}m{\ecv@langparwidth}}
#3 & #4 & #5 & #6 & #7\tabularnewline \bottomrule
\end{tabular}\vspace{#1}
\tabularnewline
}
\fi
\newcommand*\ecvlanguagefooter[2][0pt]{\ecvitem[#1]{}{\quad\footnotesize{${}^{\mbox{\tiny#2}}$\textit{\ecv@langfooterkey}}}}
% See the Common European Framework of Reference for Languages:
% http://www.coe.int/T/E/Cultural_Co-operation/education/Languages/Language_Policy/Common_Framework_of_Reference/default.asp
\ifx\ecv@booktabs\undefined % Use table conforming to EU model
\newcommand*\ecvCEF[2]{%
%\setlength\tabcolsep{1mm}
\begin{tabular}{@{}>{\footnotesize}p{.2\ecv@langparwidth}@{\hspace{1mm}}>{\footnotesize\centering}p{.74\ecv@langparwidth}@{}}
#1 & #2\tabularnewline
\end{tabular}
}
\else
\newcommand*\ecvCEF[2]{%
%\setlength\tabcolsep{1mm}
\begin{tabular}{@{}>{\footnotesize}p{.2\ecv@langparwidth}@{\hspace{1mm}}>{\footnotesize\centering}p{.74\ecv@langparwidth}@{}}
#1 & #2\tabularnewline
\end{tabular}
}
\fi
\newcommand*\ecvAOne{\ecvCEF{A1}{\ecv@cefbasickey}}
\newcommand*\ecvATwo{\ecvCEF{A2}{\ecv@cefbasickey}}
\newcommand*\ecvBOne{\ecvCEF{B1}{\ecv@cefindepkey}}
\newcommand*\ecvBTwo{\ecvCEF{B2}{\ecv@cefindepkey}}
\newcommand*\ecvCOne{\ecvCEF{C1}{\ecv@cefprofkey}}
\newcommand*\ecvCTwo{\ecvCEF{C2}{\ecv@cefprofkey}}
\def\ecv@kern{\kern0.5pt}
%\def\ecv@kern{}
\newcommand*{\ecvTitleKern}[1]{\def\ecv@kern{\kern#1}}
\newlength\ecv@rulewidth
\newlength\ecv@colsep
\newlength\ecv@leftcolwidth
\newlength\ecv@rightcolwidth
\newlength\ecv@extrarowheight
\newcommand*{\ecvRuleWidth}[1]{\setlength\ecv@rulewidth{#1}}
\newcommand*{\ecvColSep}[1]{%
\addtolength{\ecv@leftcolwidth}{\ecv@colsep}
\addtolength{\ecv@rightcolwidth}{\ecv@colsep}
\setlength\ecv@colsep{#1}
\addtolength{\ecv@leftcolwidth}{-\ecv@colsep}
\addtolength{\ecv@rightcolwidth}{-\ecv@colsep}}
\newcommand*{\ecvLeftColumnWidth}[1]{\setlength\ecv@leftcolwidth{#1}%
\setlength{\ecv@rightcolwidth}{\textwidth}
\addtolength{\ecv@rightcolwidth}{-\ecv@leftcolwidth}
\addtolength{\ecv@rightcolwidth}{-2\ecv@colsep}
\addtolength{\ecv@rightcolwidth}{-\ecv@rulewidth}}
\newcommand*{\ecvExtraRowHeight}[1]{\setlength\ecv@extrarowheight{#1}}
\newcommand*{\ecvNoHorRule}{\def\ecv@hrule{}}
\newcommand*{\ecvWithHorRule}{\def\ecv@hrule{\cline{1-1}}}
% Initialization
\ecvRuleWidth{\arrayrulewidth}
\setlength\ecv@colsep{12pt}
\setlength\ecv@leftcolwidth{50mm} % Default left column width
\ecvExtraRowHeight{0pt}
\ecvWithHorRule
% Flag size
\newlength\ecv@flagwidth
\newcommand*{\ecvFlagWidth}[1]{\setlength\ecv@flagwidth{#1}}
\ecvFlagWidth{10mm}
% Logo size
\newlength\ecv@logowidth
\newlength\ecv@logooffset
\newcommand*{\ecvLogoWidth}[1]{\setlength\ecv@logowidth{#1}}
\newcommand*{\ecvLogoOffset}[1]{\setlength\ecv@logooffset{#1}}
\ecvLogoWidth{2.30cm}
\ecvLogoOffset{1cm}
%\typeout{logo width=\the\ecv@logowidth}
%\typeout{logo offset=\the\ecv@logooffset}
% Text bullet
\newcommand{\ecvbullet}{\raisebox{.35ex}[0cm][0cm]{\tiny\textbullet}}
\newenvironment{europecv}{%
\ecvLeftColumnWidth{\ecv@leftcolwidth}
\setlength\arrayrulewidth{\ecv@rulewidth}
\setlength\extrarowheight{\ecv@extrarowheight}
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
% Language table paragraph width
\setlength\ecv@langparwidth{.199\ecv@rightcolwidth}
\addtolength{\ecv@langparwidth}{-2\tabcolsep}
\addtolength{\ecv@langparwidth}{-2\arrayrulewidth}
% Begin
\begin{longtable}[l]{@{}>{\raggedleft}p{\ecv@leftcolwidth}@{\hspace{\ecv@colsep}}|@{\extracolsep{\ecv@colsep}}p{\ecv@rightcolwidth}@{}}
\ecv@hrule
\ifx\@empty\draweuropasslogo\else
% Any better way of achieving the same result?!?
\vskip-\ecv@logooffset\draweuropasslogo\hfill\phantom{.}& \tabularnewline
\fi
\ifx\@empty\ecvtitle\else
\ifx\@empty\draweuropasslogo
& \tabularnewline[-.5em]
\fi
\ecvtitle &\tabularnewline
\fi
\ifx\@empty\draweuropeflag\else
& \tabularnewline
\draweuropeflag& \tabularnewline
\fi
}
{\end{longtable}}
\newcommand{\ecvsection}[2][10pt]{%
{\large{\par\textbf{#2}}}\vspace{#1} & \tabularnewline\nopagebreak
}
\newif\if@ecvitemstar
\newcommand\ecvitem{\@ifstar{\@ecvitemstartrue \@ecvitem}%
{\@ecvitemstarfalse\@ecvitem}}
\newcommand\@ecvitem[3][2pt]{%
\if@ecvitemstar \ecvbullet\ \fi #2\vspace{#1} & #3
\vspace{#1}\tabularnewline}