Compare commits
6 Commits
article
...
a97f86fe0f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a97f86fe0f | ||
|
|
80392b6966 | ||
|
|
652e27503c | ||
|
|
8994e53562 | ||
|
|
e7d2fc1190 | ||
|
|
f60f5964d9 |
14
.gitignore
vendored
14
.gitignore
vendored
@@ -1,13 +1,9 @@
|
|||||||
# Ignore all files
|
.DS_Store
|
||||||
|
|
||||||
|
# Ignore all auto-generated files, except for PDF
|
||||||
|
|
||||||
*.*
|
*.*
|
||||||
|
|
||||||
# Whitelist
|
|
||||||
|
|
||||||
!.gitignore
|
!.gitignore
|
||||||
|
!*.cls
|
||||||
!*.tex
|
!*.tex
|
||||||
!*.pdf
|
!*.pdf
|
||||||
!*.jpg
|
|
||||||
!*.md
|
|
||||||
!.vscode
|
|
||||||
!.vscode/**
|
|
||||||
!build/*.*
|
|
||||||
|
|||||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -16,6 +16,5 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"latex-workshop.latex.recipe.default": "Smart LaTeX Build",
|
"latex-workshop.latex.recipe.default": "Smart LaTeX Build",
|
||||||
"latex-workshop.formatting.latex": "latexindent",
|
"latex-workshop.formatting.latex": "latexindent"
|
||||||
"latex-workshop.latex.autoBuild.run": "onSave"
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,75 +1,24 @@
|
|||||||
|
\documentclass{custom-cv}
|
||||||
|
|
||||||
\documentclass[11pt,a4paper]{article}
|
\usepackage{fontawesome6} % for icons
|
||||||
\usepackage[margin=1in]{geometry}
|
|
||||||
\usepackage{titlesec}
|
|
||||||
\usepackage{enumitem}
|
|
||||||
\usepackage{parskip}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
\usepackage{fontspec}
|
|
||||||
\usepackage{graphicx}
|
|
||||||
|
|
||||||
\setmainfont{Helvetica Neue}
|
% \cvdebugtrue
|
||||||
|
|
||||||
\titleformat{\section}{\large\bfseries}{}{0em}{}[\titlerule]
|
\setcvtitle{Pedro Miguel \textbf{Pessoa Cabral}}
|
||||||
\titleformat{\subsection}{\normalsize\bfseries}{}{0em}{}
|
\setcvauthor{\faMobile\quad +49-(0)-176-57909188 \quad \faEnvelope\quad \href{mailto:pmpcabral@gmail.com}{pmpcabral@posteo.de}}
|
||||||
|
\setcvphoto{me_m_8x8_4x.jpg} % Try commenting this out to see layout adapt
|
||||||
\pagestyle{empty}
|
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
|
||||||
\begin{center}
|
\section{Languages}
|
||||||
\begin{minipage}{0.75\textwidth}
|
\cvitem{Portuguese}{First Language}{}
|
||||||
{\LARGE \textbf{Pedro Miguel Pessoa Cabral}}\\
|
\cvitem{German}{Fluent}{}
|
||||||
\vspace{0.5em}
|
\cvitem{English}{Fluent}{}
|
||||||
+49-(0)-17657-909188\\
|
\cvitem{Spanish}{Good}{}
|
||||||
\href{mailto:pmpcabral@gmail.com}{pmpcabral@gmail.com}\\
|
\cvitem{French}{Basic}{}
|
||||||
Rittmeisterkoppel 14-C, 22359 Hamburg
|
|
||||||
\end{minipage}%
|
|
||||||
\begin{minipage}{0.23\textwidth}
|
|
||||||
\includegraphics[width=\linewidth]{me_m_8x8_4x.jpg}
|
|
||||||
\end{minipage}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
|
\section{Experience}
|
||||||
\vspace{1em}
|
\cventry{2017 -- Present}{Software Developer}{HR4YOU AG}{PHP, JavaScript, SQL}
|
||||||
|
|
||||||
\section*{Profile}
|
|
||||||
\begin{tabular}{rl}
|
|
||||||
Date and Place of Birth: & January 17\textsuperscript{th}, 1988, Setúbal, Portugal \\
|
|
||||||
Nationality: & Portuguese \\
|
|
||||||
Languages: & Portuguese (First language), German (Fluent), English (Fluent),\\
|
|
||||||
& Spanish (Good), French (Basic)
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\vspace{1em}
|
|
||||||
|
|
||||||
\section*{Experience}
|
|
||||||
\noindent
|
|
||||||
\textbf{Software Developer, HR4YOU AG} \hfill Großefehn, Germany \\
|
|
||||||
\textit{Feb 2017 – Present} \\
|
|
||||||
Technologies: PHP, JavaScript, SQL
|
|
||||||
|
|
||||||
\vspace{0.5em}
|
|
||||||
\noindent
|
|
||||||
\textbf{Support \& Operations, SAFIRA/KPMG} \hfill Carnaxide, Portugal \\
|
|
||||||
\textit{Sep 2014 – Apr 2016} \\
|
|
||||||
Worked with IBM Business Process Management and Forefront Identity Manager (FIM)
|
|
||||||
|
|
||||||
\vspace{0.5em}
|
|
||||||
\noindent
|
|
||||||
\textbf{Software Developer, SAFIRA} \hfill Carnaxide, Portugal \\
|
|
||||||
\textit{Apr 2013 – Sep 2014} \\
|
|
||||||
Worked with IBM Business Process Management, IBM WebSphere Message Broker, SQL
|
|
||||||
|
|
||||||
\vspace{1em}
|
|
||||||
|
|
||||||
\section*{Education}
|
|
||||||
\textbf{Faculdade de Ciências e Tecnologia, Universidade Nova de Lisboa} \hfill Caparica, Portugal \\
|
|
||||||
Bachelor of Science \hfill 2013
|
|
||||||
|
|
||||||
\vspace{1em}
|
|
||||||
|
|
||||||
\section*{Skills}
|
|
||||||
PHP, OOP, JavaScript, jQuery, CSS, SQL, SOAP, REST, PL/SQL, XML
|
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|||||||
10
README.md
10
README.md
@@ -1,7 +1,7 @@
|
|||||||
# Curriculum-Vitae
|
# Curriculum-Vitae
|
||||||
|
|
||||||
This project contains my *curriculum vitae* writen in `TeX` using the base
|
This project contains my *curriculum vitae* writen in `TeX` and the class
|
||||||
class `article`.
|
`custom-cv.cls` has been completley designed by me.
|
||||||
|
|
||||||
## Install TeX
|
## Install TeX
|
||||||
|
|
||||||
@@ -13,11 +13,5 @@ Go to https://tug.org/texlive/ and install the correct TeX for your operating sy
|
|||||||
|
|
||||||
If you are using VS Code, I highly recommend to install [LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop).
|
If you are using VS Code, I highly recommend to install [LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop).
|
||||||
|
|
||||||
## Other CV variants
|
|
||||||
|
|
||||||
- [Awesome-CV](../awesome-cv/)
|
|
||||||
- [ModernCV](../moderncv) (**main CV**)
|
|
||||||
- [Pedro-CV](../pedro-cv/)
|
|
||||||
|
|
||||||
##
|
##
|
||||||
Developed with ♥ by Pedro Pessoa Cabral
|
Developed with ♥ by Pedro Pessoa Cabral
|
||||||
|
|||||||
@@ -19,9 +19,6 @@ FILE="$1"
|
|||||||
# append .tex file extension, iff not already passed
|
# append .tex file extension, iff not already passed
|
||||||
[[ "$FILE" != *.tex ]] && FILE="${FILE}.tex"
|
[[ "$FILE" != *.tex ]] && FILE="${FILE}.tex"
|
||||||
|
|
||||||
# remove the .tex extension from the file name to get the base name
|
|
||||||
BASE="${FILE%.tex}"
|
|
||||||
|
|
||||||
# Check that the file exists
|
# Check that the file exists
|
||||||
if [[ ! -f "$FILE" ]]; then
|
if [[ ! -f "$FILE" ]]; then
|
||||||
echo -e "${BOLD}${RED}Error${RESET}${RED}: File '$FILE' not found.${RESET}"
|
echo -e "${BOLD}${RED}Error${RESET}${RED}: File '$FILE' not found.${RESET}"
|
||||||
@@ -31,24 +28,8 @@ fi
|
|||||||
# Detect active \usepackage{fontspec} (ignore commented lines)
|
# Detect active \usepackage{fontspec} (ignore commented lines)
|
||||||
if grep -Eq '^[^%]*\\usepackage\{fontspec\}' "$FILE"; then
|
if grep -Eq '^[^%]*\\usepackage\{fontspec\}' "$FILE"; then
|
||||||
echo -e "${BLUE}Detected fontspec → Using XeLaTeX${RESET}"
|
echo -e "${BLUE}Detected fontspec → Using XeLaTeX${RESET}"
|
||||||
LATEX_CMD=(xelatex -synctex=1 -interaction=nonstopmode -file-line-error "$FILE")
|
xelatex -synctex=1 -interaction=nonstopmode -file-line-error "$FILE"
|
||||||
else
|
else
|
||||||
echo -e "${BLUE}No active fontspec → Using pdfLaTeX${RESET}"
|
echo -e "${BLUE}No active fontspec → Using pdfLaTeX${RESET}"
|
||||||
LATEX_CMD=(pdflatex -synctex=1 -interaction=nonstopmode -file-line-error "$FILE")
|
pdflatex -synctex=1 -interaction=nonstopmode -file-line-error "$FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
"${LATEX_CMD[@]}"
|
|
||||||
|
|
||||||
rm -f \
|
|
||||||
"${BASE}.aux" \
|
|
||||||
"${BASE}.bbl" \
|
|
||||||
"${BASE}.bcf" \
|
|
||||||
"${BASE}.blg" \
|
|
||||||
"${BASE}.fdb_latexmk" \
|
|
||||||
"${BASE}.fls" \
|
|
||||||
"${BASE}.log" \
|
|
||||||
"${BASE}.out" \
|
|
||||||
"${BASE}.run.xml" \
|
|
||||||
"${BASE}.synctex.gz" \
|
|
||||||
"${BASE}.toc" \
|
|
||||||
"${BASE}.xdv"
|
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Color definitions
|
|
||||||
BOLD='\033[1m'
|
|
||||||
RED='\033[31m'
|
|
||||||
BLUE='\033[34m'
|
|
||||||
GREEN='\033[32m'
|
|
||||||
YELLOW='\033[33m'
|
|
||||||
RESET='\033[0m'
|
|
||||||
|
|
||||||
if [[ $# -ne 1 ]]; then
|
|
||||||
echo -e "${BOLD}${RED}Error${RESET}${RED}: No commit hash provided.${RESET}"
|
|
||||||
echo "Usage: $0 <commit-hash>"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
COMMIT="$1"
|
|
||||||
START_BRANCH="$(git branch --show-current)"
|
|
||||||
|
|
||||||
if [[ -z "$START_BRANCH" ]]; then
|
|
||||||
echo -e "${BOLD}${RED}Error${RESET}${RED}: Detached HEAD is not supported.${RESET}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git rev-parse --verify --quiet "${COMMIT}^{commit}" >/dev/null; then
|
|
||||||
echo -e "${BOLD}${RED}Error${RESET}${RED}: Commit '$COMMIT' not found.${RESET}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
COMMIT="$(git rev-parse --short "$COMMIT")"
|
|
||||||
COMMIT_MSG="$(git log -1 --pretty=format:%s "$COMMIT")"
|
|
||||||
PARENT_COUNT="$(git rev-list --parents -n 1 "$COMMIT" | wc -w | tr -d ' ')"
|
|
||||||
|
|
||||||
if [[ "$PARENT_COUNT" -gt 2 ]]; then
|
|
||||||
echo -e "${BOLD}${RED}Error${RESET}${RED}: Merge commits are not supported.${RESET}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "$(git status --porcelain)" ]]; then
|
|
||||||
echo -e "${BOLD}${RED}Error${RESET}${RED}: Working tree is not clean.${RESET}"
|
|
||||||
echo "Commit, stash, or discard local changes before replicating a commit."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
restore_branch() {
|
|
||||||
git switch --quiet "$START_BRANCH"
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_error() {
|
|
||||||
echo -e "${BOLD}${RED}Error${RESET}${RED}: Replication failed on branch '$(git branch --show-current)'.${RESET}"
|
|
||||||
|
|
||||||
if [[ -f "$(git rev-parse --git-path CHERRY_PICK_HEAD 2>/dev/null || true)" ]]; then
|
|
||||||
git cherry-pick --abort >/dev/null 2>&1 || true
|
|
||||||
fi
|
|
||||||
|
|
||||||
restore_branch
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
trap handle_error ERR
|
|
||||||
|
|
||||||
echo -e "${BLUE}Propagating commit ${BOLD}'${COMMIT}: ${COMMIT_MSG}'${RESET}${BLUE} from '${START_BRANCH}' to local branches.${RESET}"
|
|
||||||
|
|
||||||
while IFS= read -r BRANCH; do
|
|
||||||
if [[ "$BRANCH" == "$START_BRANCH" ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
git switch --quiet "$BRANCH"
|
|
||||||
|
|
||||||
if git merge-base --is-ancestor "$COMMIT" HEAD; then
|
|
||||||
echo -e "${YELLOW}Skipping ${BRANCH}: commit is already present.${RESET}"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "${BLUE}Cherry-picking ${COMMIT} onto ${BRANCH}.${RESET}"
|
|
||||||
if ! git cherry-pick "$COMMIT"; then
|
|
||||||
if git diff --quiet && git diff --cached --quiet; then
|
|
||||||
echo -e "${YELLOW}Skipping ${BRANCH}: commit is already applied as an equivalent patch.${RESET}"
|
|
||||||
git cherry-pick --skip
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "${GREEN}Commit successfully cherry-picked to ${BRANCH}.${RESET}"
|
|
||||||
git push
|
|
||||||
echo -e "${GREEN}Branch ${BRANCH} successfully pushed.${RESET}"
|
|
||||||
|
|
||||||
done < <(git for-each-ref --format='%(refname:short)' refs/heads)
|
|
||||||
|
|
||||||
restore_branch
|
|
||||||
|
|
||||||
echo -e "${GREEN}Done. Returned to '${START_BRANCH}'.${RESET}"
|
|
||||||
189
custom-cv.cls
Normal file
189
custom-cv.cls
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
% =========================
|
||||||
|
% custom-cv.cls (2025-08-13)
|
||||||
|
% =========================
|
||||||
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
|
\ProvidesClass{custom-cv}[2025/08/13 Custom CV class]
|
||||||
|
|
||||||
|
% Base class
|
||||||
|
\LoadClass[11pt,a4paper]{article}
|
||||||
|
|
||||||
|
% Packages
|
||||||
|
\RequirePackage[a4paper,margin=1in]{geometry}
|
||||||
|
\RequirePackage{xcolor}
|
||||||
|
\RequirePackage{graphicx}
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\RequirePackage{titlesec}
|
||||||
|
\RequirePackage{enumitem}
|
||||||
|
\RequirePackage{hyperref}
|
||||||
|
\RequirePackage{draftwatermark}
|
||||||
|
\RequirePackage{fontspec}
|
||||||
|
\RequirePackage{pgf} % for watermark autoscale
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% Fonts (with fallback)
|
||||||
|
% ---------------------------
|
||||||
|
\IfFontExistsTF{Helvetica Neue}{
|
||||||
|
\setmainfont{Helvetica Neue}
|
||||||
|
}{
|
||||||
|
\IfFontExistsTF{TeX Gyre Heros}{\setmainfont{TeX Gyre Heros}}{\setmainfont{Latin Modern Roman}}
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% Colors
|
||||||
|
% ---------------------------
|
||||||
|
\definecolor{cvblue}{HTML}{1A4E8A}
|
||||||
|
|
||||||
|
% Debug colors & borders
|
||||||
|
\definecolor{debugtext}{HTML}{E0F7FA}
|
||||||
|
\definecolor{debugtextborder}{HTML}{0D47A1}
|
||||||
|
\definecolor{debugphoto}{HTML}{FFEBEE}
|
||||||
|
\definecolor{debugphotoborder}{HTML}{B71C1C}
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% Debug flag & helpers
|
||||||
|
% ---------------------------
|
||||||
|
\newif\ifcvdebug
|
||||||
|
\cvdebugfalse
|
||||||
|
|
||||||
|
\newcommand{\debugboxtext}[1]{%
|
||||||
|
\ifcvdebug
|
||||||
|
\fcolorbox{debugtextborder}{debugtext}{\parbox{\dimexpr\linewidth-2\fboxsep-2\fboxrule}{#1}}%
|
||||||
|
\else
|
||||||
|
#1%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\debugboxphoto}[1]{%
|
||||||
|
\ifcvdebug
|
||||||
|
\fcolorbox{debugphotoborder}{debugphoto}{\parbox{\dimexpr\linewidth-2\fboxsep-2\fboxrule}{#1}}%
|
||||||
|
\else
|
||||||
|
#1%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% CV storage + setters
|
||||||
|
% ---------------------------
|
||||||
|
\newcommand{\cvtitle}{} % main title (name)
|
||||||
|
\newcommand{\cvauthor}{} % contact line
|
||||||
|
\newcommand{\cvphoto}{} % photo path
|
||||||
|
|
||||||
|
\newcommand{\setcvtitle}[1]{\renewcommand{\cvtitle}{#1}}
|
||||||
|
\newcommand{\setcvauthor}[1]{\renewcommand{\cvauthor}{#1}}
|
||||||
|
\newcommand{\setcvphoto}[1]{\renewcommand{\cvphoto}{#1}}
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% Robust "is empty?" test (trim spaces)
|
||||||
|
% ---------------------------
|
||||||
|
\makeatletter
|
||||||
|
\newcommand{\IfNotEmpty}[3]{%
|
||||||
|
\edef\cv@tmp{\zap@space\detokenize{#1} \@empty}%
|
||||||
|
\ifx\cv@tmp\@empty
|
||||||
|
#3%
|
||||||
|
\else
|
||||||
|
#2%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% Hyperlinks & lists
|
||||||
|
% ---------------------------
|
||||||
|
\hypersetup{
|
||||||
|
colorlinks=true,
|
||||||
|
urlcolor=cvblue,
|
||||||
|
linkcolor=cvblue
|
||||||
|
}
|
||||||
|
\setlength{\parskip}{0.4em}
|
||||||
|
\setlist[itemize]{noitemsep,topsep=0pt}
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% Section formatting
|
||||||
|
% ---------------------------
|
||||||
|
\titleformat{\section}
|
||||||
|
{\large\bfseries\color{cvblue}}
|
||||||
|
{}{0em}
|
||||||
|
{\debugboxtext}
|
||||||
|
[\titlerule]
|
||||||
|
|
||||||
|
\titleformat{\subsection}
|
||||||
|
{\normalsize\bfseries\color{cvblue}}
|
||||||
|
{}{0em}
|
||||||
|
{}
|
||||||
|
|
||||||
|
\setcounter{secnumdepth}{0}
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% CV content commands
|
||||||
|
% ---------------------------
|
||||||
|
\newcommand{\cvitem}[2]{%
|
||||||
|
\debugboxtext{%
|
||||||
|
\noindent\textbf{#1:} #2
|
||||||
|
}\par
|
||||||
|
}
|
||||||
|
|
||||||
|
% \cventry{Title}{Date/Place}{Subtitle/Role}{Details}
|
||||||
|
\newcommand{\cventry}[4]{%
|
||||||
|
\debugboxtext{%
|
||||||
|
\noindent\textbf{#2} \hfill {\small #1}\\
|
||||||
|
\IfNotEmpty{#3}{\textit{#3}\par}{}%
|
||||||
|
#4%
|
||||||
|
}\par\vspace{0.8em}
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% maketitle with adaptive layout
|
||||||
|
% ---------------------------
|
||||||
|
\renewcommand{\maketitle}{%
|
||||||
|
\IfNotEmpty{\cvtitle}{%
|
||||||
|
\begin{center}
|
||||||
|
\IfNotEmpty{\cvphoto}{%
|
||||||
|
% Text + Photo
|
||||||
|
\begin{minipage}[c]{0.75\textwidth}
|
||||||
|
\debugboxtext{%
|
||||||
|
{\LARGE \textbf{\cvtitle}}%
|
||||||
|
\IfNotEmpty{\cvauthor}{\\[0.5em]\cvauthor}{}%
|
||||||
|
}
|
||||||
|
\end{minipage}%
|
||||||
|
\hfill
|
||||||
|
\begin{minipage}[c]{0.23\textwidth}
|
||||||
|
\debugboxphoto{%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\clip (0,0) circle (1.75cm);
|
||||||
|
\node at (0,0) {\includegraphics[height=3.5cm]{\cvphoto}};
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\end{minipage}
|
||||||
|
}{%
|
||||||
|
% No photo: full-width text
|
||||||
|
\begin{minipage}[c]{\textwidth}
|
||||||
|
\debugboxtext{%
|
||||||
|
{\LARGE \textbf{\cvtitle}}%
|
||||||
|
\IfNotEmpty{\cvauthor}{\\[0.5em]\cvauthor}{}%
|
||||||
|
}
|
||||||
|
\end{minipage}
|
||||||
|
}%
|
||||||
|
\end{center}
|
||||||
|
\vspace{1em}
|
||||||
|
}{}%
|
||||||
|
}
|
||||||
|
|
||||||
|
% ---------------------------
|
||||||
|
% Watermark (auto-scale)
|
||||||
|
% ---------------------------
|
||||||
|
\newlength{\cvWatermarkWidth}
|
||||||
|
\newcommand{\cvsetwatermark}{%
|
||||||
|
\ifcvdebug
|
||||||
|
\SetWatermarkText{DEBUG MODE}%
|
||||||
|
{%
|
||||||
|
\fontsize{5cm}{5cm}\selectfont
|
||||||
|
\settowidth{\cvWatermarkWidth}{DEBUG MODE}%
|
||||||
|
}%
|
||||||
|
\pgfmathsetmacro{\cvScale}{min(\paperwidth,\paperheight)/\cvWatermarkWidth*0.9}%
|
||||||
|
\SetWatermarkScale{\cvScale}%
|
||||||
|
\SetWatermarkColor[gray]{0.85}%
|
||||||
|
\else
|
||||||
|
\SetWatermarkText{}%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\AtBeginDocument{\cvsetwatermark}
|
||||||
Reference in New Issue
Block a user