Release 2.0.0
This commit is contained in:
134
moderncvfooti.sty
Normal file
134
moderncvfooti.sty
Normal file
@ -0,0 +1,134 @@
|
||||
%% start of file `moderncvfooti.sty'.
|
||||
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
|
||||
%
|
||||
% This work may be distributed and/or modified under the
|
||||
% conditions of the LaTeX Project Public License version 1.3c,
|
||||
% available at http://www.latex-project.org/lppl/.
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% identification
|
||||
%-------------------------------------------------------------------------------
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{moderncvfooti}[2015/07/28 v2.0.0 modern curriculum vitae and letter footer variant: 1]
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% required packages
|
||||
%-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% overall foot definition
|
||||
%-------------------------------------------------------------------------------
|
||||
% fonts
|
||||
\renewcommand*{\addressfont}{\normalsize\mdseries\slshape}
|
||||
|
||||
% symbols
|
||||
% footer symbol used to separate footer elements
|
||||
\newcommand*{\footsymbol}{%
|
||||
{~~~{\rmfamily\textbullet}~~~}}% the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
|
||||
|
||||
% lengths
|
||||
\@initializelength{\footwidth}%
|
||||
\renewcommand*{\recomputefootlengths}{%
|
||||
\setlength{\footwidth}{0.8\textwidth}}
|
||||
|
||||
% commands
|
||||
% internal command to add an element to the footer
|
||||
% it collects the elements in a temporary box, and checks when to flush the box
|
||||
\@initializebox{\footbox}%
|
||||
\@initializebox{\foottempbox}%
|
||||
\@initializelength{\footboxwidth}%
|
||||
\@initializeif{\if@firstfootelement}\@firstfootelementtrue%
|
||||
% adds an element to the footer, separated by footsymbol
|
||||
% usage: \addtofoot[footsymbol]{element}
|
||||
\newcommand*{\addtofoot}[2][\footsymbol]{%
|
||||
\if@firstfootelement%
|
||||
\savebox{\foottempbox}{\usebox{\footbox}#2}%
|
||||
\else%
|
||||
\savebox{\foottempbox}{\usebox{\footbox}#1#2}\fi%
|
||||
\settowidth{\footboxwidth}{\usebox{\foottempbox}}%
|
||||
\ifnum\footboxwidth<\footwidth%
|
||||
\savebox{\footbox}{\usebox{\foottempbox}}%
|
||||
\@firstfootelementfalse%
|
||||
\else%
|
||||
\flushfoot\\%
|
||||
\savebox{\footbox}{#2}%
|
||||
\savebox{\foottempbox}{#2}%
|
||||
\settowidth{\footboxwidth}{\usebox{\footbox}}%
|
||||
\@firstfootelementfalse\fi}
|
||||
% internal command to flush the foot
|
||||
\newcommand*{\flushfoot}{%
|
||||
\strut\usebox{\footbox}%
|
||||
\savebox{\footbox}{}%
|
||||
\savebox{\foottempbox}{}%
|
||||
\setlength{\footboxwidth}{0pt}}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% resume foot definition
|
||||
%-------------------------------------------------------------------------------
|
||||
% lenghts
|
||||
\renewcommand*{\recomputecvfootlengths}{\recomputefootlengths}
|
||||
|
||||
% commands
|
||||
\renewcommand*{\makecvfoot}{%
|
||||
\recomputecvfootlengths{}%
|
||||
\fancypagestyle{plain}{%
|
||||
\fancyfoot[c]{%
|
||||
\parbox[b]{\footwidth}{%
|
||||
\centering%
|
||||
\color{color2}\addressfont%
|
||||
\vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance)
|
||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtofoot[]{\addresssymbol\@addressstreet}%
|
||||
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
|
||||
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}%
|
||||
\flushfoot\@firstfootelementtrue\\}%
|
||||
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||
\addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
||||
\ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
|
||||
\ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httplink{\@homepage}}}%
|
||||
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||
\addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
|
||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
|
||||
\ifthenelse{\lengthtest{\footboxwidth=0pt}}{}{\flushfoot}% the lengthtest is required to avoid flushing an empty footer, which could cause a blank line due to the \\ after the address, if no other personal info is used
|
||||
}}}%
|
||||
\pagestyle{plain}}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% letter foot definition
|
||||
%-------------------------------------------------------------------------------
|
||||
% commands
|
||||
\renewcommand*{\recomputeletterfootlengths}{\recomputefootlengths}
|
||||
\renewcommand*{\makeletterfoot}{%
|
||||
\recomputeletterfootlengths{}%
|
||||
\fancypagestyle{plain}{%
|
||||
\fancyfoot[c]{%
|
||||
\parbox[b]{\footwidth}{%
|
||||
\centering%
|
||||
\addressfont\color{color2}%
|
||||
\vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance)
|
||||
\vspace{-\baselineskip}% to cancel out the extra vertical space taken by the name (below) and ensure perfect alignment of letter and cv footers
|
||||
\strut{\bfseries\upshape\@firstname~\@lastname}\\% the \strut is required to ensure the line is exactly \baselineskip tall
|
||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtofoot[]{\addresssymbol\@addressstreet}%
|
||||
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
|
||||
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}%
|
||||
\flushfoot\@firstfootelementtrue\\}%
|
||||
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||
\addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
||||
\ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
|
||||
\ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httplink{\@homepage}}}%
|
||||
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||
\addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
|
||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
|
||||
\ifthenelse{\lengthtest{\footboxwidth=0pt}}{}{\flushfoot}% the lengthtest is required to avoid flushing an empty footer, which could cause a blank line due to the \\ after the address, if no other personal info is used
|
||||
}}}%
|
||||
\pagestyle{plain}}
|
||||
|
||||
|
||||
\endinput
|
||||
|
||||
|
||||
%% end of file `moderncvfooti.sty'.
|
||||
Reference in New Issue
Block a user