mirror of
https://github.com/moderncv/moderncv.git
synced 2026-02-06 10:05:19 +01:00
Compare commits
228 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c7d7427f97 |
||
|
|
35e3de2b71 |
||
|
|
247d3fd585 |
||
|
|
93a77ab387 |
||
|
|
8856b33714 |
||
|
|
18430d4884 |
||
|
|
d3b648b93e | ||
|
|
8076b77366 |
||
|
|
5d817593fb | ||
|
|
ee076d39f6 |
||
|
|
686f1a9a08 |
||
|
|
172f632d5f |
||
|
|
d100f20646 |
||
|
|
02640f41c4 |
||
|
|
0c18c4286b |
||
|
|
800b295405 | ||
|
|
9bb975402b |
||
|
|
51a3e9c3d7 |
||
|
|
baa0c5920d |
||
|
|
56d1b65d9e |
||
|
|
d7e0e4966e |
||
|
|
14deb59ddb |
||
|
|
f05efdb2de |
||
|
|
cdf027a9da |
||
|
|
06932535d8 |
||
|
|
1472e001c5 |
||
|
|
d6d3ef7f13 |
||
|
|
34e7b15a6b |
||
|
|
2981711e6f |
||
|
|
65f328f8d1 |
||
|
|
e8a2096184 |
||
|
|
95a3a7de73 |
||
|
|
63945865c2 |
||
|
|
b1292ae494 |
||
|
|
72603c495e |
||
|
|
1f82bb91d7 |
||
|
|
9687f709b7 |
||
|
|
beb45fb23a |
||
|
|
b15f06573e |
||
|
|
5353471fce | ||
|
|
02a928723b | ||
|
|
d0a5ff550e | ||
|
|
b5d6a6e79f | ||
|
|
1ac6c08efa | ||
|
|
fd3bf93f9a | ||
|
|
c41143a10d | ||
|
|
66e2655b7c | ||
|
|
8b74bf12f2 | ||
|
|
d85c39d150 | ||
|
|
d13f919b8d | ||
|
|
08371bb3e2 |
||
|
|
493742be62 |
||
|
|
74e61f8ddf |
||
|
|
f1fa580842 |
||
|
|
f3dd14ff62 |
||
|
|
edc3e409cf |
||
|
|
6e315221ce | ||
|
|
876d7884f2 |
||
|
|
d5ffdb5a80 | ||
|
|
79cf3191f6 | ||
|
|
1d31d8b8dd | ||
|
|
afc08b8a6c | ||
|
|
63ec92f670 | ||
|
|
fa3ebb6b48 | ||
|
|
853e216435 | ||
|
|
ab6f21433c | ||
|
|
dbb2f13a3e | ||
|
|
1e320e465f | ||
|
|
1ef08da210 | ||
|
|
d8bc48733c | ||
|
|
133c0dff92 | ||
|
|
57d6bcf32c | ||
|
|
3b9bdd10b8 | ||
|
|
13078caa5a | ||
|
|
eed6253277 | ||
|
|
249ef48e83 | ||
|
|
c88397528c | ||
|
|
c895ef1f90 | ||
|
|
f90b2e3b8a | ||
|
|
1877ee7618 | ||
|
|
f7971f8c94 | ||
|
|
7dc8e51b28 | ||
|
|
886aad7641 | ||
|
|
9ddf15a722 |
||
|
|
7cd4f31784 | ||
|
|
59aaae8264 |
||
|
|
ab7c92fe21 |
||
|
|
cf1e7d03d0 |
||
|
|
20c016afd9 |
||
|
|
0beface906 |
||
|
|
a89a2a7455 | ||
|
|
9bfd54065c | ||
|
|
d74bc36a5f |
||
|
|
a2183b78e8 | ||
|
|
c293bcd5dd |
||
|
|
a6427c5a48 |
||
|
|
6db46bf0f4 |
||
|
|
157241f7ce |
||
|
|
1428397a82 |
||
|
|
d3511495b8 |
||
|
|
8cf759f104 |
||
|
|
d042bf05f7 |
||
|
|
d105da5b28 |
||
|
|
8ceeb27580 |
||
|
|
737b05c8d9 |
||
|
|
83640e1229 |
||
|
|
67945734b2 |
||
|
|
8c06866dbd |
||
|
|
f9c1836eb6 |
||
|
|
0095e75df4 |
||
|
|
f9d5775f5e |
||
|
|
167c9e4395 |
||
|
|
249e5ed899 | ||
|
|
39360f317d | ||
|
|
b8dfa6bcbc |
||
|
|
e543cd7976 |
||
|
|
2630a79fec |
||
|
|
09d62474db |
||
|
|
8408c353de |
||
|
|
2de5e9f825 |
||
|
|
a4a2062ac9 |
||
|
|
51e77f8564 |
||
|
|
74d672dec0 |
||
|
|
35138209d3 |
||
|
|
caa0cb8dbf |
||
|
|
4387015f7b |
||
|
|
b2c6a02efa |
||
|
|
3960c39bc3 |
||
|
|
a2917f3533 |
||
|
|
dd8045909c |
||
|
|
037a79720d |
||
|
|
453d6947ca | ||
|
|
908154ed65 | ||
|
|
d9ae8b0eef | ||
|
|
fab44205d6 | ||
|
|
8d55276704 |
||
|
|
23177fcf19 |
||
|
|
dc1229f4bc |
||
|
|
86533a0304 | ||
|
|
86fa5dd43b |
||
|
|
410241dc75 |
||
|
|
011913a5c8 |
||
|
|
bf318e5680 | ||
|
|
5e41855b35 | ||
|
|
8e8e184194 | ||
|
|
7db2dd2315 |
||
|
|
1463083706 |
||
|
|
8a66c4f990 |
||
|
|
37e504cf35 |
||
|
|
88b486c5b9 |
||
|
|
50bd09806c |
||
|
|
7d2e698443 |
||
|
|
8d55439e95 |
||
|
|
e175692984 | ||
|
|
2033517d3f | ||
|
|
0d674cf4c1 | ||
|
|
a15973f242 | ||
|
|
ff9f58b350 | ||
|
|
5b173abf55 | ||
|
|
4b77a9b33d | ||
|
|
5a6a8f59cf | ||
|
|
c91b6ca77c | ||
|
|
e16b36a964 | ||
|
|
8e7e36ceab | ||
|
|
f50d1cff32 | ||
|
|
1729d384b6 | ||
|
|
c499239b29 | ||
|
|
0889a274f0 | ||
|
|
e5a190efd9 | ||
|
|
9eec87b85d | ||
|
|
a72660424a | ||
|
|
48e1f83f63 | ||
|
|
046d184c59 | ||
|
|
861f0b0b69 | ||
|
|
60172e0284 | ||
|
|
52b14e784a | ||
|
|
6d5bc29478 | ||
|
|
fc04d21ed3 | ||
|
|
f90926a443 | ||
|
|
0914185d63 | ||
|
|
ac83eb3720 | ||
|
|
c93b42b716 | ||
|
|
92eecc6c3f | ||
|
|
f5163b8fa2 | ||
|
|
77055475f6 | ||
|
|
a2335f76be | ||
|
|
5f92b3460a | ||
|
|
b7ef28ae28 | ||
|
|
110afbd9ac | ||
|
|
de2ccd0e27 | ||
|
|
09ae552f47 | ||
|
|
e9a817c74d | ||
|
|
4134aa176d | ||
|
|
70bfb01ef8 | ||
|
|
9d41197afc | ||
|
|
d208ee0327 | ||
|
|
f04ca19016 | ||
|
|
3dd1fd22ea | ||
|
|
6bfc2a032b | ||
|
|
5e01c8cec9 | ||
|
|
c426e1c0f4 | ||
|
|
29ffed06c7 | ||
|
|
d1ccdd74e9 | ||
|
|
c3760cc064 | ||
|
|
c08522abcc | ||
|
|
5c64e4e961 | ||
|
|
5984cbea28 | ||
|
|
bef59daccd | ||
|
|
e30df3973f | ||
|
|
9f0b4165d1 | ||
|
|
d2dd530f83 | ||
|
|
9f6efda241 | ||
|
|
fd54b3d27e | ||
|
|
36788d3cb8 | ||
|
|
7ba9c40a4c | ||
|
|
a4b4fe9b8e | ||
|
|
e00709f654 | ||
|
|
1c59c8feb6 | ||
|
|
b497d7dbfe | ||
|
|
4035a423de | ||
|
|
20952303e4 | ||
|
|
7efd0efb90 | ||
|
|
927ec319f6 | ||
|
|
a578055e30 | ||
|
|
a91cf19978 | ||
|
|
fa515769ec | ||
|
|
a64872927b | ||
|
|
d62200b817 |
80 changed files with 9401 additions and 3247 deletions
|
|
@ -1,6 +0,0 @@
|
||||||
*xdanaux*
|
|
||||||
*.sh
|
|
||||||
examples/*.sh
|
|
||||||
examples/template_casual_orange.tex
|
|
||||||
examples/template_classic_green.tex
|
|
||||||
examples/template_multibib.tex
|
|
||||||
7
.codespellrc
Normal file
7
.codespellrc
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
[codespell]
|
||||||
|
# Ref: https://github.com/codespell-project/codespell#using-a-config-file
|
||||||
|
skip = .git*,*.pdf,.codespellrc
|
||||||
|
check-hidden = true
|
||||||
|
# names, case sensitive
|
||||||
|
ignore-regex = \bWille\b|\\@\S+
|
||||||
|
# ignore-words-list =
|
||||||
27
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
27
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**Expected Behavior**
|
||||||
|
|
||||||
|
|
||||||
|
**Actual Behavior**
|
||||||
|
|
||||||
|
|
||||||
|
**Minimum Working Example to Reproduce the Problem**
|
||||||
|
|
||||||
|
**Specifications**
|
||||||
|
- moderncv version and source:
|
||||||
|
- LaTeX compiler (pdfLaTeX, XeLaTeX, etc.) and version:
|
||||||
|
- Platform (operating system, LaTeX editor, etc.):
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
48
.github/workflows/build-pdf.yml
vendored
Normal file
48
.github/workflows/build-pdf.yml
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
name: Build template
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
registry_package:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-template:
|
||||||
|
name: Build template
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: texlive/texlive:latest-full
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build pdf
|
||||||
|
run: |
|
||||||
|
prev_style=contemporary
|
||||||
|
for style in casual classic banking oldstyle fancy contemporary
|
||||||
|
do
|
||||||
|
echo -e "\033[1;35mCompiling style $style...\033[0m"
|
||||||
|
# first cleanup, but keep .log files for later artifact upload
|
||||||
|
latexmk -c -e 'sub cleanup_generated { my $ext = $_[0]; return 0 if $ext eq "log"; return 1; }'
|
||||||
|
sed -i "s/moderncvstyle\[\]{${prev_style}}/moderncvstyle\[\]{${style}}/g" template.tex
|
||||||
|
latexmk -pdflua ./template.tex
|
||||||
|
mv template.pdf template_${style}.pdf
|
||||||
|
mv template.log template_${style}.log
|
||||||
|
# remember previous style
|
||||||
|
prev_style=$style
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Upload pdf
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: template.pdf
|
||||||
|
path: ./template_*.pdf
|
||||||
|
|
||||||
|
- name: Upload log
|
||||||
|
if: ${{ always() }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: template.log
|
||||||
|
path: ./template_*.log
|
||||||
55
.github/workflows/build-userguide-pdf.yml
vendored
Normal file
55
.github/workflows/build-userguide-pdf.yml
vendored
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
name: Build user guide
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- 'manual/moderncv_userguide.tex'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'manual/moderncv_userguide.tex'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-userguide:
|
||||||
|
name: Build user guide
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
UG_AUTHOR: Auto Userguide Creator
|
||||||
|
UG_COMMIT_MESSAGE: <automated> build of user guide
|
||||||
|
container:
|
||||||
|
image: texlive/texlive:latest-full
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout source code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 2
|
||||||
|
|
||||||
|
- name: Build user guide pdf
|
||||||
|
run: latexmk -pdflua -cd ./manual/moderncv_userguide.tex
|
||||||
|
|
||||||
|
- name: Upload user guide pdf
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: moderncv_userguide.pdf
|
||||||
|
path: ./manual/moderncv_userguide.pdf
|
||||||
|
|
||||||
|
- name: Upload user guide log
|
||||||
|
if: ${{ always() }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: moderncv_userguide.log
|
||||||
|
path: ./manual/moderncv_userguide.log
|
||||||
|
|
||||||
|
- name: Push new user guide to master
|
||||||
|
if: ${{ github.ref_name == 'master' }}
|
||||||
|
run: |
|
||||||
|
# maybe switch to an image with git already included, for now install it here
|
||||||
|
apt update && apt install git -y
|
||||||
|
git config --global user.name '${{ env.UG_AUTHOR }}'
|
||||||
|
git config --global user.email '${{ github.actor }}@users.noreply.github.com'
|
||||||
|
ls -l
|
||||||
|
git add manual/moderncv_userguide.pdf
|
||||||
|
git commit -m "${{ env.UG_COMMIT_MESSAGE }}"
|
||||||
|
git push
|
||||||
25
.github/workflows/codespell.yml
vendored
Normal file
25
.github/workflows/codespell.yml
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Codespell configuration is within .codespellrc
|
||||||
|
---
|
||||||
|
name: Codespell
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
pull_request:
|
||||||
|
branches: [master]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
codespell:
|
||||||
|
name: Check for spelling errors
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Annotate locations with typos
|
||||||
|
uses: codespell-project/codespell-problem-matcher@v1
|
||||||
|
- name: Codespell
|
||||||
|
uses: codespell-project/actions-codespell@v2
|
||||||
18
.gitignore
vendored
Normal file
18
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# general latex build output files
|
||||||
|
*.aux
|
||||||
|
*.bbl
|
||||||
|
*.blg
|
||||||
|
*.fdb_latexmk
|
||||||
|
*.fls
|
||||||
|
*.log
|
||||||
|
*.out
|
||||||
|
*.synctex.gz
|
||||||
|
*.xdv
|
||||||
|
*.toc
|
||||||
|
|
||||||
|
# template.tex output
|
||||||
|
# move to *.pdf once manual is done
|
||||||
|
template.pdf
|
||||||
|
|
||||||
|
# release tarballs
|
||||||
|
moderncv-*.tar.gz
|
||||||
703
CHANGELOG
703
CHANGELOG
|
|
@ -1,246 +1,457 @@
|
||||||
version 1.1.0 (29 Jul 2012)
|
version next
|
||||||
- fixed the switching from letter to resume, correcting spacing errors when a
|
- Upgrade to Fontawesome 6 (#183)
|
||||||
letter is typeset before the resume, as noticed by U. Gabor.
|
- Document how to set custom strings for social command (#239)
|
||||||
- fixed the vertical alignment of the footers, as reported by T. Homa.
|
- Correct documentation to reflect new order \moderncvcolor before \moderncvstyle (#256)
|
||||||
Footers are now aligned to the bottom and the letter and cv footers are
|
|
||||||
perfectly aligned in the "casual" style.
|
version 2.5.1 (31 Jan 2026)
|
||||||
- prepared moderncv for fontspec font loading (still commented in code).
|
- Fix french babel breaking contemporary style (#219)
|
||||||
- changed the handling of the "sans" and "roman" class options, to be reflected
|
- Fix birthdate not showing up in contemporary style (#244)
|
||||||
at the beginning of the document and override style font choices.
|
- Fix Inspire HEP social link (#241)
|
||||||
- turned unicode support in hyperref on by default.
|
- Change moderncvcolors.tex to a .sty file for MikTeX compatibility (#199)
|
||||||
- tweaked the usage of \textbullet to avoid the fall-back to Computer Modern
|
- Fix error when omitting the photo in contemporary style (#201)
|
||||||
fonts and prepared the usage of symbols from the MarVoSym font for fontspec
|
- Fix spacing between first and last name (#204)
|
||||||
(LauLaTeX or XeLaTeX).
|
- Include social icons in cover letter for styles classic, fancy and banking (#170)
|
||||||
- tweaked the \subsectionfill of the "banking" style to distribute extra space
|
- Update Oldstyle to use symbols instead of marvosym (#209)
|
||||||
evenly between leaders.
|
- Added SimpleX and Threema social (#217)
|
||||||
- added two options to change the "Enclosure" string used for the letter
|
- Fix spacing between first and last name again (#220)
|
||||||
enclosure: either specify another string as optional argument to \enclosure,
|
- Make header details flush against sides for casual, classic, and contemporary
|
||||||
or redefine \enclname, as suggested by D. Wille.
|
styles (#229)
|
||||||
|
- Fix tikz icon color in contemporary style (#224)
|
||||||
version 1.0.0 (26 Mar 2012)
|
- Add contemporary CV header style to cover letter, which also makes icons
|
||||||
- added commands to generate letters for every resume style: \recipient, \date,
|
visible (#186)
|
||||||
\opening, \closing, \enclosure, \makelettertitle and \makeletterclosing. The
|
- Fix minor horizontal spacing issue in 'contemporary' style header
|
||||||
old \maketitle and \makefooter commands are now deprecated and replaced by
|
|
||||||
\makecvtitle and \makecvfooter.
|
|
||||||
- changed the alignment algorithm for the personal data display in the oldstyle
|
version 2.4.2 (01 Feb 2025)
|
||||||
style, as to align on the baseline of the first line with the surrounding text.
|
- Added support for additional social icons like medium. (#264)
|
||||||
|
|
||||||
version 0.19.0 (06 Feb 2012)
|
version 2.4.1 (18 Jul 2024)
|
||||||
- reintroduced the ability to force the width reserved to display the name
|
- Fix commons/colors.tex not found in package (#194)
|
||||||
in the resume header for the classic style (\maketitlenamewidth).
|
|
||||||
- improved the pdf metadata, as reported by S. Wunsch (launchpad bug #922476).
|
version 2.4.0 (08 Jul 2024)
|
||||||
- fixed a footersymbol bug in the casual style when no mobile number was given,
|
- Rewrote user guide, thanks to David Seus (#58, #106, #169).
|
||||||
as reported by S. Wunsch (launchpad bug #922470).
|
- Fixed "Underfull \hbox (badness 10000)" warning in \makecvtitle (#162).
|
||||||
- fixed a display bug when an address was given without postcode/city, as
|
- Fixed unnecessary academicons warning when academicons aren't used (#161).
|
||||||
reported by O.Shaneh (launchpad bug #670263).
|
- Fixed page counts unnecessarily linking to the last page of the PDF (#159).
|
||||||
|
- Added support for an optional signature in the cover letter (#157).
|
||||||
version 0.18.0 (05 Feb 2012)
|
- Added support for non-ASCII characters in links (#155).
|
||||||
- corrected the handling of pdf bookmarks, as suggested on stackexchange by
|
- Added option to force a homepage link to use HTTP rather than HTTPS (#154).
|
||||||
U. Fischer.
|
- Passed unicode option directly to hyperref to avoid conflicts with the
|
||||||
- improved the spacing between sections and subsections by using \addvspace
|
inclusion of hyperref by other packages (#148).
|
||||||
instead of \vspace.
|
- Fixed the sender block on the cover letter in banking style (#146).
|
||||||
- corrected the spacing between entries with nested itemize environments
|
- Added option to classic style to align header elements at the top (#144).
|
||||||
(temporary solution working only for single line items).
|
- Added Twitch, YouTube, TikTok, Instagram, SoundCloud, Steam, Xbox, PlayStation
|
||||||
- added a check in the oldstyle style for an empty 4th argument in the
|
and Battle.net social icons (#131).
|
||||||
\cvdoubleitem definition, to avoid printing a colon without preceding label.
|
- Removed extra dash in PDF metadata when CV title is empty (#116).
|
||||||
- added a new style on top of classic, casual and oldstyle: banking.
|
- Added support for an optional subject line in the cover letter (#114).
|
||||||
|
- Added Discord social icon (#112).
|
||||||
version 0.17.0 (25 Jan 2012)
|
- Replace instances of ~~~ in codebase with \hspace to be more compatible with
|
||||||
- changed the footer algorithm of style casual to avoid starting lines with
|
babel for Spanish (#109).
|
||||||
the footer symbol.
|
- Added Codeberg and Mastodon social icons (#107).
|
||||||
- aligned the space before and after the title across styles.
|
- New \social options: arXiv, INSPIRE (#185)
|
||||||
- added an optional title to the casual style.
|
- Systematize colors and make them user adjustable. See documentation for details.
|
||||||
- changed the definition of the font styles to avoid undesired extra spacing.
|
This requires the \moderncvcolor to be issued BEFORE \moderncvstyle (#151).
|
||||||
- added a Spanish template, kindly provided by I. Buitrón.
|
- all styles: make the head options 'details' and 'nodetails' available to the user. (previously they were hidden). Oldstyle does not respond too well to nodetails (#150).
|
||||||
- corrected the vertical misalignment between the page number and the center
|
- casual style: make the head options 'alternate', 'details' and 'nodetails' available to the user. (previously they were hidden) (#150).
|
||||||
footer in the casual style.
|
- Setting \listitemsymbolspace allows custom spacing between list symbol and text item (for \cvlistitem and \cvlistdoubleitem) (#74).
|
||||||
|
- Introducing \cvtripleitem command for items in three columns. Closing feature request #174.
|
||||||
version 0.16.0 (15 Jan 2012)
|
- Fixed wrong cvlistitem vspace caused by multiline section titles in fancy style (#69).
|
||||||
- added starred versions of \section and \subsection (that are identical to
|
|
||||||
their non-starred version, to e.g. enable biblatex support as requested by
|
version 2.3.1 (21 Feb 2022)
|
||||||
S. Verberkt (launchpad bug #913102).
|
- Fix duplicate GitLab icon (#105).
|
||||||
- corrected a misalignment of the colored rule in front of the section titles
|
- Revert using detokenize in social links (#97).
|
||||||
in the classic and casual styles, as reported by P. Neidhardt (launchpad bug
|
- Fix broken compilation in classic style (#96).
|
||||||
#915910).
|
|
||||||
|
version 2.3.0 (16 Dec 2021)
|
||||||
version 0.15.1 (23 December 2011)
|
- Remove font loading from class (#87).
|
||||||
- corrected a bug in the classic style causing the address font and color not
|
- Add Matrix and Signal icon (#84).
|
||||||
being carried over newlines, as reported by J. Smith.
|
- Improved symbol loading (#84).
|
||||||
|
|
||||||
version 0.15.0 (19 December 2011)
|
version: 2.2.0 (28 Jul 2021)
|
||||||
- corrected list spacing.
|
- Remove dot in \cventry when using moderncvbodyi.
|
||||||
- corrected inconsistent use of sans serif fonts in roman layout option.
|
|
||||||
- the lmodern fonts are now automatically loaded only if installed on the
|
- Remove http baseurl in hyperref.
|
||||||
system. The "nolmodern" option is now therefore obsolete.
|
- Change font encoding to use fontspec with Latin Modern for LuaTeX and XeTeX,
|
||||||
- complete code refactoring separating themes in separate styles and colors.
|
else inputenc / fontenc / lmodern (https://tex.stackexchange.com/a/496643).
|
||||||
- renamed \cvline to \cvitem, \cvlanguage to \cvitemwithcomment and \cvcomputer
|
- Add birthdate field command.
|
||||||
to \cvdoubleitem (the old command name still work and redirect to the new ones,
|
- Add Social entries for WhatsApp, Signal and Matrix.
|
||||||
but are deprecated).
|
- Fix Researcher ID not showing (#29).
|
||||||
- removed the arbitrary minipage widths of skill proficiency vs comment in
|
- Make options "symbols" and "nosymbols" available to all styles to toggle
|
||||||
\cvitemwithcomments. The skill proficiency is now typeset exactly as given
|
whether symbols should be used or not. Include symbols in oldstyle by default.
|
||||||
(i.e. one one line if no linebreaks are implicitly given) and the comment uses
|
- Migrate older newcommand syntax in moderncvcollection.sty to xparse syntax.
|
||||||
the remaining horizontal space.
|
- Fix resumé typo in template. Is now résumé.
|
||||||
- changed the optional argument of \cvlistitem and \cvlistdoubleitem to specify
|
- Various other minor fixes.
|
||||||
the vertical skip after the item (as for \cvitem, cvitemwithcomments, etc).
|
|
||||||
The way to change the list symbol is to redefine \listitemsymbol.
|
version 2.1.0 (21 Jan 2021)
|
||||||
- added a new style on top of classic and casual: oldstyle.
|
- Maintainer change: now team maintained (https://github.com/moderncv), since
|
||||||
- loaded the microtype package to improve typography.
|
original repository has been basically dead since 2016.
|
||||||
|
- New \social options: Xing, Skype, GitLab, Bitbucket, stack overflow, ORCID,
|
||||||
version 0.14.0 (04 December 2011)
|
ResearcherID, ResearchGate, Telegram and Google Scholar.
|
||||||
- added support for CJK, thanks to the help of P. D'Apice.
|
- Hyperlinks in phone numbers.
|
||||||
- the use of \recomputelengths after modifying any length in the preamble is
|
- Switch from l3regex to expl3.
|
||||||
now unnecessary; \recomputelength is automatically called at the start of the
|
- New skill matrix feature.
|
||||||
document.
|
- Move to fontawesome5 package.
|
||||||
|
- Default to https.
|
||||||
version 0.13.1 (11 November 2011)
|
|
||||||
- corrected a bug introduced by v0.13 in the classic style when no \photo is
|
version 2.0.0 (28 Jul 2015)
|
||||||
used, as reported by S. Gislais (launchpad bug #888702).
|
- Refactored the code into heads, body, foot and icon substyles. All styles
|
||||||
|
(classic, casual, banking and oldstyle) are just a combination of these and
|
||||||
version 0.13.0 (06 November 2011)
|
some font selection. Mixing substyles (e.g., the banking header with the
|
||||||
- added a "black" color option to render the resume in black & white, as
|
classic body) is now trivial by using the \moderncvhead, \moderncvbody,
|
||||||
suggested by F. Bicarri.
|
\moderncvfoot and \moderncvicons commands. Each of these take a substyle
|
||||||
- removed the pdflatex option when loading hyperref to enable other engines
|
number as argument. \moderncvcolor takes a color name as argument.
|
||||||
(e.g., dvips, xetex), leftover from the v 0.11 cleanup, as reported by
|
- Added a new style: fancy.
|
||||||
K. Amaterasu and P. Mavrogiorgos (launchpad bugs #754693 and #859834).
|
- Added an optional argument to \moderncvstyle to specify style options, i.e.
|
||||||
- added a "purple" color option, as proposed by B. Ravel.
|
\moderncvstyle[options]{style}. Below is a list of the available options per
|
||||||
- added a 3rd optional argument to the \photo command to control the thickness
|
style:
|
||||||
of the framebox. Setting it to 0pt will disable the frame around the photo, as
|
* classic
|
||||||
requested by T. Krennwallner (launchpad bug #664568).
|
> to specify where at the top one's name should appear: "left" (default) or
|
||||||
|
"right;
|
||||||
version 0.12.0 (03 August 2010)
|
* casual
|
||||||
- prevented pagebreaks after sections and subsections (launchpad bug #409902),
|
> to specify where at the top one's name should appear: "left" (default) or
|
||||||
as originally reported by C. Gaspoz and fixed by launchpad user tentotwo).
|
"right;
|
||||||
|
* banking
|
||||||
version 0.11.0 (20 July 2010)
|
> to specify how the section and subsection rules should be set:
|
||||||
- removed the \ifpdf check when loading the graphicx package, as graphicx does
|
"fullrules", "shortrules", "mixedrules" (default; full rules for sections,
|
||||||
does check internally and this was preventing proper functionning with xelatex
|
short rules for subsections), "centered" (fullrules with centered title)
|
||||||
and luatex, as reported by A. Trautmann. The same check was also removed
|
and "norules" (norules, small caps font);
|
||||||
everywhere else in the document (i.e. when loading the color and hyperref
|
> to specify how the body should be aligned: left" (default), "center" or
|
||||||
packages).
|
"right";
|
||||||
|
* oldstyle & fancy
|
||||||
version 0.10.0 (13 June 2010)
|
> n/a
|
||||||
- fixed a compatibility issue with the natbib package (natbib uses \section*
|
- Added a new color variant: "burgundy".
|
||||||
to format the bibliography title, while only \section was defined by
|
- Corrected \addressstyle color to match the one effectively used (color2).
|
||||||
moderncv), as reported on launchpad (launchpad bug #393920).
|
- Adjusted the bibliography spacing to handle entries with or without labels.
|
||||||
- fixed a compatibility issues with (any package relying on) the etoolbox
|
- Added a check on the emptiness of \title when setting the hyperref document
|
||||||
package, due to the double definition of \AtEndPreamble, as reported by
|
properties.
|
||||||
D. Becker.
|
|
||||||
|
version 1.5.1 (29 Apr 2013)
|
||||||
version 0.9.0 (31 May 2010)
|
- Made sure that XeTeX or LuaTeX is in use before loading the awesome icon set
|
||||||
- added support for the itemize, enumerate and description environments.
|
and if not, revert to the marvosym icon set.
|
||||||
|
|
||||||
version 0.8.0 (24 May 2010)
|
version 1.5.0 (23 Apr 2013)
|
||||||
- added support for multibib. Also modified the template to illustrate how to
|
- Added a command to showcase social accounts in one's personal information:
|
||||||
show labels in the bibliography, as requested by Tom D. R. and Stefan K.
|
\social. The command currently handles LinkedIn, Twitter and Github accounts
|
||||||
- added a command to indicate your personal homepage (\homepage{url}), as
|
automatically, and other links can be provided explicitly.
|
||||||
requested by J. de Jong and A. Pairet.
|
- Added a new icon set: "awesome" (using the icons from the Font Awesome font).
|
||||||
- corrected an alignment bug for text following a \quote with no immediate
|
- Set the "awesome" icon set as the default for the casual and banking styles
|
||||||
\section, as kindly reported by J. Vermeulen and L. Saliou.
|
(can be changed back with \moderncvicons{marvosym}).
|
||||||
- corrected a spacing bug when no blank line (or \par) is left after
|
- Forced all the icons of the "letters" icon set to be of the same width, for
|
||||||
\maketitle. Thanks to A. Menzel for reporting the strange behaviour.
|
alignment purposes.
|
||||||
- corrected the alignment of the extrainfo title part when no picture was
|
- Added a letter icon ("W") for the homepage of the "letters" icon set.
|
||||||
used, as reported by M. Bana.
|
- Forced some whitespace between the main text and the footer of the casual
|
||||||
- corrected the missplacement of pdf bookmarks as noticed by L. Fortunato.
|
style.
|
||||||
- corrected several bugs linked to the code for checking for empty arguments
|
- Removed the rule below the headings of the cvcolumns environment.
|
||||||
in \cventry, as reported by B. Ekran (launchpad bug #268768), L. Păncescu and
|
|
||||||
E. Gregorio.
|
version 1.4.0 (28 Mar 2013)
|
||||||
|
- Deprecated \phone, \mobile and \fax in favour of \phone[<type>], where <type>
|
||||||
version 0.7.0 (17 June 2008)
|
can be "fixed" (default), "mobile" or "fax". As part of the change, one can
|
||||||
- corrected an outstanding spacing bug (space between cvlines longer
|
now use each of these multiple times, e.g. to display multiple mobile phone
|
||||||
than 1 line).
|
numbers.
|
||||||
- removed the need to use \closesection and \emptysection as internal
|
- Deprecated \firstname and \familyname in favour of \name{<first>}{<last>}.
|
||||||
tabulars are now always closed. This allows she use of bibliography packages
|
- Added a new mechanism to select among different possible icon sets:
|
||||||
such as bibunits. Thanks to S. Busch for pointing out the incompatibility and
|
\moderncvicons{<iconsetname>}, where <iconsetname> can be "marvosym" (used by
|
||||||
helping testing out the bug correction.
|
default in the banking, casual and classic styles) or "letters" (used by
|
||||||
- changed the definition of \photo: the first (optional) argument should
|
default in the oldstyle style). \moderncvicons should always be called after
|
||||||
give the desired width of the picture, instead of its height
|
\moderncvstyle in order to override the styles' defaults.
|
||||||
- corrected an alignment bug for \cvlistitems longer than 1 line, as
|
- Added a command to control the font of the page numbering: \pagenumberfont, as
|
||||||
reported by S. Nikolopoulos.
|
requested by fr1a1nky (launchpad question #224496).
|
||||||
- deprecated the commands \sethintscolumnlength and \sethintscolumntowidth.
|
- Removed the use of the suffix package.
|
||||||
Instead, just set \hintscolumnwidth to the desired length by using the regular
|
|
||||||
\setlength or \settowidth commands, and call \recomputelengths.
|
version 1.3.0 (09 Feb 2013)
|
||||||
- added the ability to control the width of the name placeholder in the
|
- Added a new environment to create multiple columns: cvcolumns. Each column is
|
||||||
classic theme, by setting the length \maketitlenamewidth. Again, don't forget
|
then created by \cvcolumn[width]{header}{content}, where the optional width is
|
||||||
to call \recomputelengths afterward.
|
given as a fraction of the total width (between 0 and 1). The header and
|
||||||
|
content are robust and can contain any paragraph command (e.g., a nested
|
||||||
version 0.6.0 (28 May 2007)
|
itemize environment).
|
||||||
- corrected some spacing bugs and cleaned up the code.
|
- Added a macro (\pdfpagemode) to control what is visible upon opening compiled
|
||||||
- corrected a bug in the bibliography file of the examples spotted by
|
PDFs (assuming PDF reader support), as suggested by U. Stöhr.
|
||||||
U. Stöhr.
|
Possible values include: "UseNone" (only the document), "UseThumbs" (show
|
||||||
- added color variants to the classic and casual style, as suggested by
|
thumbnails), "UseOutlines" (show bookmarks) and "FullScreen" (open in
|
||||||
U. Stöhr.
|
fullscreen mode).
|
||||||
- added a page counter for resumes running longer than 1 page, as requested by
|
- Added a 3rd, fully optional (can be omitted or left blank) argument to
|
||||||
A. Martin. It can be disabled by the command \nopagenumbers{}.
|
\address to specify a country, as requested on launchpad (launchpad bug
|
||||||
- added commands to include a mobile phone and fax number.
|
#1063995).
|
||||||
- made the symbols used for the phone number, the email, ... customizable.
|
- Compacted list environments further.
|
||||||
To modify those symbols, just redefine \phonesymbol, emailsymbol, ...
|
- Replaced the use of the xargs package by the xparse one.
|
||||||
- corrected the pdf information given to hyperref as pointed out by
|
|
||||||
C. Knuepfer.
|
version 1.2.1 (04 Dec 2012)
|
||||||
- rewrote the examples.
|
- Fixed a regression bug introduced in v1.2.0 in the header of the banking style
|
||||||
|
when no title is used, as reported on tex.stackexchange (question #85427).
|
||||||
version 0.5.0 (9 September 2006)
|
|
||||||
- added a \photo command to display a picture. That command takes the name of
|
version 1.2.0 (31 Oct 2012)
|
||||||
the file with the picture as argument, and the desired height as optional
|
- Updated the banking style header to include the option to show a title.
|
||||||
argument.
|
- Set the values of \arrayrulewidth and \doublerulesep to their standard values
|
||||||
- implemented the needed commands to make moderncv compatible with BibTeX, as
|
(0.4pt and 2pt, respectively) to enable the drawing of rules in tabulars and
|
||||||
suggested by J. Lie. This makes it possible to display one's publications,
|
arrays by default.
|
||||||
stored in the BibTeX file 'publications.bib'
|
- Modified the code of \makecvtitle and \makelettertitle of the casual style to
|
||||||
by using:
|
avoid it causing horizontal alignment issues before and after itself.
|
||||||
\nocite{*}
|
- Corrected a bug in \makelettertitle of most styles that displayed the current
|
||||||
\bibliographystyle{plain}
|
date (\today) instead of the date given through the \date command, as reported
|
||||||
\bibliography{publications}
|
by B. Schlimmchen and S. Fnord.
|
||||||
As usual, the name of the section title can be changed by redefining the
|
- Removed the need to set pdfpagelabels=false when loading hyperref by putting
|
||||||
command \refname.
|
\pagenumbering{arabic} (to define \thepage) before loading hyperref, as
|
||||||
- added the \today command, useful for example if one need to add the date the
|
figured out by J. Wolf.
|
||||||
resumé was produced with
|
- Corrected the line wrapping of \cvlistitem of the banking style.
|
||||||
\closesection{}
|
- Corrected a bug in \makecvtitle and \makelettertitle of the banking style.
|
||||||
\vfill{\hfill{\scriptsize Produced \today.}}
|
- Removed an unwanted space in the footer of the casual style.
|
||||||
at the end of your CV, as suggested by F. Hammann.
|
- Moved the font style definitions to moderncv.cls for better readability
|
||||||
|
(moderncv.cls is meant to be a sort of header file, implementing only some
|
||||||
version 0.4.0 (2 May 2006)
|
macros shared by all styles and defining the macros that the style files need
|
||||||
- removed the dependency on the geometry package, so that users can now invoke
|
to implement).
|
||||||
it themselve, and easily change the geometry of the page.
|
|
||||||
|
version 1.1.3 (10 Aug 2012)
|
||||||
version 0.3.0 (10 April 2006)
|
- Corrected a long-standing issue causing hyperref to issue two warnings about
|
||||||
- moderncv now uses the 'longtable' class, allowing cv sections to split
|
its "pdfpagelabels" option, as pointed out and solved by P. Leifeld (launchpad
|
||||||
across multiple pages.
|
bug #1035466).
|
||||||
- the different lengths used by moderncv are now customizable! In particular,
|
|
||||||
the first column (the one containing the date in the examples), can now be set
|
version 1.1.2 (09 Aug 2012)
|
||||||
to any width, for people needing a smaller or larger one. To do that, either
|
- Fixed a regression bug introduced in v1.0.0 in the footer of the casual style,
|
||||||
use
|
as discovered on tex.stackexchange (question #66316).
|
||||||
\sethintscolumnlength{<length>},
|
|
||||||
where <length> is the desired length in a unit LaTeX understands, or
|
version 1.1.1 (30 Jul 2012)
|
||||||
\sethintscolumntowidth{<string>},
|
- Fixed a compatibility issue introduced in v1.0.0 when \maketitlenamewidth was
|
||||||
where <string> is a string of the desired length (usually, the longest string
|
renamed to \makecvtitlenamewidth, as reported by Peppe on launchpad (launchpad
|
||||||
that has to appear in the column). Thanks to A. Pöge for pointing out the need
|
bug #1030802). The template now correctly uses \makecvtitlenamewidth, and
|
||||||
of such a feature.
|
\maketitlenamewidth was created as an alias forbackward compatibility.
|
||||||
- added the command \emptysection{}, which makes it possible to start a
|
|
||||||
section without name. In combination with \closesection{}, this makes it
|
version 1.1.0 (29 Jul 2012)
|
||||||
possible to drop out of the layout of moderncv, and come back to it later.
|
- Fixed the switching from letter to resume, correcting spacing errors when a
|
||||||
This should make the inclusion of arbitrary elements not covered by moderncv
|
letter is typeset before the resume, as noticed by U. Gabor.
|
||||||
code possible.
|
- Fixed the vertical alignment of the footers, as reported by T. Homa. Footers
|
||||||
- corrected a spacing problem in the cventry command, as pointed out and
|
are now aligned to the bottom and the letter and CV footers are perfectly
|
||||||
solved by B. Eßmann.
|
aligned in the casual style.
|
||||||
|
- Prepared moderncv for fontspec font loading (still commented out in code).
|
||||||
version 0.2.0 (6 March 2006)
|
- Changed the handling of the "sans" and "roman" class options, to be reflected
|
||||||
- rewrite of the code to have the styles (fonts, colours, headers and footers)
|
at the beginning of the document and override style font choices.
|
||||||
be defined in different files than the class. The styles are now defined in a
|
- Turned unicode support in hyperref on by default.
|
||||||
separate file per style, named moderncvstyle<style_name>. It should now be
|
- Tweaked the use of \textbullet to avoid a fallback to Computer Modern fonts
|
||||||
easy to write your own style, starting from moderncvstyleempty.sty. If you
|
and prepared the use of symbols from the MarVoSym font for fontspec (LuaTeX or
|
||||||
feel you have created a nice style, just email it to me and I'll include it in
|
XeTeX).
|
||||||
the next version.
|
- Tweaked the \subsectionfill of the banking style to distribute extra space
|
||||||
- due to the previous point, styles are now loaded by the command
|
evenly between leaders.
|
||||||
\moderncvstyle{style_name}. I couldn't figure out a way to preserve the old
|
- Added two options to change the "Enclosure" string used for the letter
|
||||||
"casual" and "classic" class options, so these are now broken! Use
|
enclosure: either specify another string as an optional argument to \enclosure
|
||||||
\moderncvstyle{casual} or \moderncvstyle{classic} at the beginning of your
|
or redefine \enclname, as suggested by D. Wille.
|
||||||
document. This should be the only incompatibility with version 0.1.
|
|
||||||
- added class option "nolmodern" for people without the latin modern fonts.
|
version 1.0.0 (26 Mar 2012)
|
||||||
- corrected some English mistakes in the examples. Thanks to M. H. Prager for
|
- Added commands to generate letters for every resume style: \recipient, \date,
|
||||||
pointing them out.
|
\opening, \closing, \enclosure, \makelettertitle and \makeletterclosing. The
|
||||||
- added a \cvlistitem to produce items with a bullet (or whatever is defined
|
old \maketitle and \makefooter commands are now deprecated and replaced by
|
||||||
in \listitemsymbol), and renamed \cvresume to \cvlistdoubleitem for
|
\makecvtitle and \makecvfooter.
|
||||||
consistency purpose. For compatibility reasons, the command \cvresume still
|
- Changed the alignment algorithm for the personal data display in the oldstyle
|
||||||
works, but should be avoided.
|
style, to align on the baseline of the first line with the surrounding text.
|
||||||
|
|
||||||
version 0.1.0 (1 March 2006)
|
version 0.19.0 (06 Feb 2012)
|
||||||
- first release.
|
- Reintroduced the ability to force the width reserved to display the name in
|
||||||
|
the resume header for the classic style (\maketitlenamewidth).
|
||||||
|
- Improved the PDF metadata, as reported by S. Wunsch (launchpad bug #922476).
|
||||||
|
- Fixed a \footersymbol bug in the casual style when no mobile number was given,
|
||||||
|
as reported by S. Wunsch (launchpad bug #922470).
|
||||||
|
- Fixed a display bug when an address was given without postcode/city, as
|
||||||
|
reported by O. Shaneh (launchpad bug #670263).
|
||||||
|
|
||||||
|
version 0.18.0 (05 Feb 2012)
|
||||||
|
- Corrected the handling of PDF bookmarks, as suggested on stackexchange by
|
||||||
|
U. Fischer.
|
||||||
|
- Improved the spacing between sections and subsections by using \addvspace
|
||||||
|
instead of \vspace.
|
||||||
|
- Corrected the spacing between entries with nested itemize environments
|
||||||
|
(temporary solution working only for single line items).
|
||||||
|
- Added a check in the oldstyle style for an empty 4th argument in the
|
||||||
|
\cvdoubleitem definition to avoid printing a colon without a preceding label.
|
||||||
|
- Added a new style on top of classic, casual and oldstyle: banking.
|
||||||
|
|
||||||
|
version 0.17.0 (25 Jan 2012)
|
||||||
|
- Changed the footer algorithm of the casual style to avoid starting lines with
|
||||||
|
the footer symbol.
|
||||||
|
- Aligned the space before and after the title across styles.
|
||||||
|
- Added an optional title to the casual style.
|
||||||
|
- Changed the definition of the font styles to avoid undesired extra spacing.
|
||||||
|
- Added a Spanish template, kindly provided by I. Buitrón.
|
||||||
|
- Corrected the vertical misalignment between the page number and the center
|
||||||
|
footer in the casual style.
|
||||||
|
|
||||||
|
version 0.16.0 (15 Jan 2012)
|
||||||
|
- Added starred versions of \section and \subsection that are identical to their
|
||||||
|
non-starred versions (e.g. to enable BibLaTeX support) as requested by
|
||||||
|
S. Verberkt (launchpad bug #913102).
|
||||||
|
- Corrected a misalignment of the colored rule in front of the section titles in
|
||||||
|
the classic and casual styles, as reported by P. Neidhardt (launchpad bug
|
||||||
|
#915910).
|
||||||
|
|
||||||
|
version 0.15.1 (23 December 2011)
|
||||||
|
- Corrected a bug in the classic style causing the address font and color to not
|
||||||
|
be carried over newlines, as reported by J. Smith.
|
||||||
|
|
||||||
|
version 0.15.0 (19 December 2011)
|
||||||
|
- Corrected list spacing.
|
||||||
|
- Corrected inconsistent use of sans serif fonts in roman layout option.
|
||||||
|
- The lmodern fonts are now automatically loaded only if they're installed on
|
||||||
|
the system. The "nolmodern" option is now therefore obsolete.
|
||||||
|
- Completed code refactoring separating themes in separate styles and colors.
|
||||||
|
- Renamed \cvline to \cvitem, \cvlanguage to \cvitemwithcomment and \cvcomputer
|
||||||
|
to \cvdoubleitem (the old command names still work and redirect to the new
|
||||||
|
ones, but are deprecated).
|
||||||
|
- Removed the arbitrary minipage widths of skill proficiency vs comment in
|
||||||
|
\cvitemwithcomments. The skill proficiency is now typeset exactly as given
|
||||||
|
(i.e. one one line if no linebreaks are implicitly given) and the comment uses
|
||||||
|
the remaining horizontal space.
|
||||||
|
- Changed the optional argument of \cvlistitem and \cvlistdoubleitem to specify
|
||||||
|
the vertical skip after the item (as for \cvitem, \cvitemwithcomments, etc).
|
||||||
|
The way to change the list symbol is to redefine \listitemsymbol.
|
||||||
|
- Added a new style on top of classic and casual: oldstyle.
|
||||||
|
- Loaded the microtype package to improve typography.
|
||||||
|
|
||||||
|
version 0.14.0 (04 December 2011)
|
||||||
|
- Added support for CJK, thanks to the help of P. D'Apice.
|
||||||
|
- The use of \recomputelengths after modifying any length in the preamble is now
|
||||||
|
unnecessary; \recomputelength is automatically called at the start of the
|
||||||
|
document.
|
||||||
|
|
||||||
|
version 0.13.1 (11 November 2011)
|
||||||
|
- Corrected a bug introduced by v0.13 in the classic style when no \photo is
|
||||||
|
used, as reported by S. Gislais (launchpad bug #888702).
|
||||||
|
|
||||||
|
version 0.13.0 (06 November 2011)
|
||||||
|
- Added a "black" color option to render the resume in black & white, as
|
||||||
|
suggested by F. Bicarri.
|
||||||
|
- Removed the pdflatex option when loading hyperref to enable other engines
|
||||||
|
(e.g., dvips, XeTeX), leftover from the v0.11 cleanup, as reported by
|
||||||
|
K. Amaterasu and P. Mavrogiorgos (launchpad bugs #754693 and #859834).
|
||||||
|
- Added a "purple" color option, as proposed by B. Ravel.
|
||||||
|
- Added a 3rd optional argument to the \photo command to control the thickness
|
||||||
|
of the framebox. Setting it to 0pt will disable the frame around the photo, as
|
||||||
|
requested by T. Krennwallner (launchpad bug #664568).
|
||||||
|
|
||||||
|
version 0.12.0 (03 August 2010)
|
||||||
|
- Prevented pagebreaks after sections and subsections (launchpad bug #409902),
|
||||||
|
as originally reported by C. Gaspoz and fixed by launchpad user tentotwo.
|
||||||
|
|
||||||
|
version 0.11.0 (20 July 2010)
|
||||||
|
- Removed the \ifpdf check when loading the graphicx package, as graphicx
|
||||||
|
already does this check internally. This was preventing proper functioning
|
||||||
|
with XeTeX and LuaTeX, as reported by A. Trautmann. The same check was also
|
||||||
|
removed everywhere else in the document (i.e. when loading the color and
|
||||||
|
hyperref packages).
|
||||||
|
|
||||||
|
version 0.10.0 (13 June 2010)
|
||||||
|
- Fixed a compatibility issue with the natbib package (natbib uses \section* to
|
||||||
|
format the bibliography title, while only \section was defined by moderncv),
|
||||||
|
as reported on launchpad (launchpad bug #393920).
|
||||||
|
- Fixed compatibility issues with (any package relying on) the etoolbox package,
|
||||||
|
due to the double definition of \AtEndPreamble, as reported by D. Becker.
|
||||||
|
|
||||||
|
version 0.9.0 (31 May 2010)
|
||||||
|
- Added support for the itemize, enumerate and description environments.
|
||||||
|
|
||||||
|
version 0.8.0 (24 May 2010)
|
||||||
|
- Added support for multibib. Also modified the template to illustrate how to
|
||||||
|
show labels in the bibliography, as requested by Tom D. R. and Stefan K.
|
||||||
|
- Added a command to indicate your personal homepage (\homepage{url}), as
|
||||||
|
requested by J. de Jong and A. Pairet.
|
||||||
|
- Corrected an alignment bug for text following a \quote with no immediate
|
||||||
|
\section, as kindly reported by J. Vermeulen and L. Saliou.
|
||||||
|
- Corrected a spacing bug when no blank line (or \par) is left after \maketitle.
|
||||||
|
Thanks to A. Menzel for reporting the strange behaviour.
|
||||||
|
- Corrected the alignment of the \extrainfo title part when no picture was used,
|
||||||
|
as reported by M. Bana.
|
||||||
|
- Corrected the misplacement of PDF bookmarks as noticed by L. Fortunato.
|
||||||
|
- Corrected several bugs linked to the code for checking for empty arguments in
|
||||||
|
\cventry, as reported by B. Ekran (launchpad bug #268768), L. Păncescu and
|
||||||
|
E. Gregorio.
|
||||||
|
|
||||||
|
version 0.7.0 (17 June 2008)
|
||||||
|
- Corrected an outstanding spacing bug where the space between cvlines was
|
||||||
|
longer than 1 line.
|
||||||
|
- Removed the need to use \closesection and \emptysection as internal tabulars
|
||||||
|
are now always closed. This allows the use of bibliography packages such as
|
||||||
|
bibunits. Thanks to S. Busch for pointing out the incompatibility and helping
|
||||||
|
test out the bug correction.
|
||||||
|
- Changed the definition of \photo: the first (optional) argument should give
|
||||||
|
the desired width of the picture, instead of its height
|
||||||
|
- Corrected an alignment bug for \cvlistitems longer than 1 line, as reported by
|
||||||
|
S. Nikolopoulos.
|
||||||
|
- Deprecated the commands \sethintscolumnlength and \sethintscolumntowidth.
|
||||||
|
Instead, just set \hintscolumnwidth to the desired length by using the regular
|
||||||
|
\setlength or \settowidth commands, and call \recomputelengths.
|
||||||
|
- Added the ability to control the width of the name placeholder in the classic
|
||||||
|
theme, by setting the length \maketitlenamewidth. Again, don't forget to call
|
||||||
|
\recomputelengths afterward.
|
||||||
|
|
||||||
|
version 0.6.0 (28 May 2007)
|
||||||
|
- Corrected some spacing bugs and cleaned up the code.
|
||||||
|
- Corrected a bug in the bibliography file of the examples spotted by U. Stöhr.
|
||||||
|
- Added color variants to the classic and casual styles, as suggested by
|
||||||
|
U. Stöhr.
|
||||||
|
- Added a page counter for resumes running longer than 1 page, as requested by
|
||||||
|
A. Martin. It can be disabled by the command \nopagenumbers{}.
|
||||||
|
- Added commands to include a mobile phone and fax number.
|
||||||
|
- Made the symbols used for the phone number, the email etc. customizable. To
|
||||||
|
modify those symbols, just redefine \phonesymbol, \emailsymbol etc.
|
||||||
|
- Corrected the PDF information given to hyperref as pointed out by C. Knuepfer.
|
||||||
|
- Rewrote the examples.
|
||||||
|
|
||||||
|
version 0.5.0 (9 September 2006)
|
||||||
|
- Added a \photo command to display a picture. This command takes the name of
|
||||||
|
the file with the picture as a required argument and the desired height as an
|
||||||
|
optional argument.
|
||||||
|
- Implemented the needed commands to make moderncv compatible with BibTeX, as
|
||||||
|
suggested by J. Lie. This makes it possible to display one's publications,
|
||||||
|
stored in the BibTeX file "publications.bib" by using:
|
||||||
|
\nocite{*}
|
||||||
|
\bibliographystyle{plain}
|
||||||
|
\bibliography{publications}
|
||||||
|
As usual, the name of the section title can be changed by redefining \refname.
|
||||||
|
- Added the \today command, useful for example if one needs to add the date the
|
||||||
|
resume was produced with:
|
||||||
|
\closesection{}
|
||||||
|
\vfill{\hfill{\scriptsize Produced \today.}}
|
||||||
|
at the end of your CV, as suggested by F. Hammann.
|
||||||
|
|
||||||
|
version 0.4.0 (2 May 2006)
|
||||||
|
- Removed the dependency on the geometry package so that users can now invoke it
|
||||||
|
themselves and easily change the geometry of the page.
|
||||||
|
|
||||||
|
version 0.3.0 (10 April 2006)
|
||||||
|
- Moderncv now uses the longtable class, allowing CV sections to split across
|
||||||
|
multiple pages.
|
||||||
|
- The different lengths used by moderncv are now customizable! In particular,
|
||||||
|
the first column (the one containing the date in the examples) can now be set
|
||||||
|
to any width, for people needing a smaller or larger one. To do that, either
|
||||||
|
use
|
||||||
|
\sethintscolumnlength{<length>},
|
||||||
|
where <length> is the desired length in a unit LaTeX understands, or
|
||||||
|
\sethintscolumntowidth{<string>},
|
||||||
|
where <string> is a string of the desired length (usually, the longest string
|
||||||
|
that has to appear in the column). Thanks to A. Pöge for pointing out the need
|
||||||
|
of such a feature.
|
||||||
|
- Added the command \emptysection{}, which makes it possible to start an unnamed
|
||||||
|
section. In combination with \closesection{}, this makes it possible to drop
|
||||||
|
out of the layout of moderncv, and come back to it later. This should make the
|
||||||
|
inclusion of arbitrary elements not covered by moderncv code possible.
|
||||||
|
- Corrected a spacing problem in the \cventry command, as pointed out and solved
|
||||||
|
by B. Eßmann.
|
||||||
|
|
||||||
|
version 0.2.0 (6 March 2006)
|
||||||
|
- Rewrite of the code to have the styles (fonts, colours, headers and footers)
|
||||||
|
be defined in different files than the class. The styles are now defined in a
|
||||||
|
separate file per style, named moderncvstyle<style_name>. It should now be
|
||||||
|
easy to write your own style, starting from moderncvstyleempty.sty. If you
|
||||||
|
feel you have created a nice style, just email it to me and I'll include it in
|
||||||
|
the next version.
|
||||||
|
- Due to the previous point, styles are now loaded by the command
|
||||||
|
\moderncvstyle{style_name}. I couldn't figure out a way to preserve the old
|
||||||
|
"casual" and "classic" class options, so these are now broken! Use
|
||||||
|
\moderncvstyle{casual} or \moderncvstyle{classic} at the beginning of your
|
||||||
|
document. This should be the only incompatibility with v0.1.
|
||||||
|
- Added class option "nolmodern" for people without the Latin Modern fonts.
|
||||||
|
- Corrected some English mistakes in the examples. Thanks to M. H. Prager for
|
||||||
|
pointing them out.
|
||||||
|
- Added a \cvlistitem to produce items with a bullet (or whatever is defined in
|
||||||
|
\listitemsymbol), and renamed \cvresume to \cvlistdoubleitem for consistency
|
||||||
|
purposes. For compatibility reasons, the command \cvresume still works, but
|
||||||
|
should be avoided.
|
||||||
|
|
||||||
|
version 0.1.0 (1 March 2006)
|
||||||
|
- First release.
|
||||||
|
|
|
||||||
22
KNOWN_BUGS
22
KNOWN_BUGS
|
|
@ -1,10 +1,12 @@
|
||||||
- When using CJK, the last \clearpage required for fancyhdr to work properly kills
|
- moderncv is incompatible with biber.
|
||||||
the "lastpage" counter, hence also the page numbering.
|
- moderncv is incompatible with BibLaTeX.
|
||||||
- Moderncv produces an error ("lonely \item--perhaps a missing list environment")
|
- moderncv is incompatible with babel in Spanish.
|
||||||
when used with bibentry, through the output is actually correct. Amongst other,
|
|
||||||
this causes compilation by LyX to stop.
|
- Skill matrices don't break automatically in fancy style.
|
||||||
- The space after a cventry gets eaten up when the last argument contains a nested
|
- Long names break the oldstyle style and possibly other styles (needs testing).
|
||||||
itemize environment. An ugly hack and uncomplete solution was implemented by
|
- Long URLs in classic style can make the name break line. Fixed width for the address part must be implemented.
|
||||||
including a \strut in every item label, but this doesn't solve the problem for
|
- When using the fancy style, undesired space is added between the bibliography head and the first entry, as well as after the last entry.
|
||||||
multi-line items. Ideally, the strut should end the item, but there seem to be
|
- Footnotes generate errors, but the output seems correct when running with "-interaction=nonstopmode"
|
||||||
no way to do this.
|
- When using CJK, the last \clearpage required for the fancyhdr package to work properly kills the "lastpage" counter, and therefore also the page numbering.
|
||||||
|
- moderncv produces an error "lonely \item--perhaps a missing list environment" when used with the bibentry package, though the output is actually correct. Among other things, this causes compilation by LyX to stop.
|
||||||
|
- The space after a \cventry gets eaten up when the last argument contains a nested itemize environment. An ugly hack and incomplete solution was implemented by including a \strut in every item label, but this doesn't solve the problem for multi-line items. Ideally, the \strut should end the item, but there seems to be no way to do this.
|
||||||
|
|
|
||||||
415
LICENSE.txt
Normal file
415
LICENSE.txt
Normal file
|
|
@ -0,0 +1,415 @@
|
||||||
|
The LaTeX Project Public License
|
||||||
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||||
|
|
||||||
|
LPPL Version 1.3c 2008-05-04
|
||||||
|
|
||||||
|
Copyright 1999 2002-2008 LaTeX3 Project
|
||||||
|
Everyone is allowed to distribute verbatim copies of this
|
||||||
|
license document, but modification of it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
========
|
||||||
|
|
||||||
|
The LaTeX Project Public License (LPPL) is the primary license under
|
||||||
|
which the LaTeX kernel and the base LaTeX packages are distributed.
|
||||||
|
|
||||||
|
You may use this license for any work of which you hold the copyright
|
||||||
|
and which you wish to distribute. This license may be particularly
|
||||||
|
suitable if your work is TeX-related (such as a LaTeX package), but
|
||||||
|
it is written in such a way that you can use it even if your work is
|
||||||
|
unrelated to TeX.
|
||||||
|
|
||||||
|
The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
|
||||||
|
below, gives instructions, examples, and recommendations for authors
|
||||||
|
who are considering distributing their works under this license.
|
||||||
|
|
||||||
|
This license gives conditions under which a work may be distributed
|
||||||
|
and modified, as well as conditions under which modified versions of
|
||||||
|
that work may be distributed.
|
||||||
|
|
||||||
|
We, the LaTeX3 Project, believe that the conditions below give you
|
||||||
|
the freedom to make and distribute modified versions of your work
|
||||||
|
that conform with whatever technical specifications you wish while
|
||||||
|
maintaining the availability, integrity, and reliability of
|
||||||
|
that work. If you do not see how to achieve your goal while
|
||||||
|
meeting these conditions, then read the document `cfgguide.tex'
|
||||||
|
and `modguide.tex' in the base LaTeX distribution for suggestions.
|
||||||
|
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
===========
|
||||||
|
|
||||||
|
In this license document the following terms are used:
|
||||||
|
|
||||||
|
`Work'
|
||||||
|
Any work being distributed under this License.
|
||||||
|
|
||||||
|
`Derived Work'
|
||||||
|
Any work that under any applicable law is derived from the Work.
|
||||||
|
|
||||||
|
`Modification'
|
||||||
|
Any procedure that produces a Derived Work under any applicable
|
||||||
|
law -- for example, the production of a file containing an
|
||||||
|
original file associated with the Work or a significant portion of
|
||||||
|
such a file, either verbatim or with modifications and/or
|
||||||
|
translated into another language.
|
||||||
|
|
||||||
|
`Modify'
|
||||||
|
To apply any procedure that produces a Derived Work under any
|
||||||
|
applicable law.
|
||||||
|
|
||||||
|
`Distribution'
|
||||||
|
Making copies of the Work available from one person to another, in
|
||||||
|
whole or in part. Distribution includes (but is not limited to)
|
||||||
|
making any electronic components of the Work accessible by
|
||||||
|
file transfer protocols such as FTP or HTTP or by shared file
|
||||||
|
systems such as Sun's Network File System (NFS).
|
||||||
|
|
||||||
|
`Compiled Work'
|
||||||
|
A version of the Work that has been processed into a form where it
|
||||||
|
is directly usable on a computer system. This processing may
|
||||||
|
include using installation facilities provided by the Work,
|
||||||
|
transformations of the Work, copying of components of the Work, or
|
||||||
|
other activities. Note that modification of any installation
|
||||||
|
facilities provided by the Work constitutes modification of the Work.
|
||||||
|
|
||||||
|
`Current Maintainer'
|
||||||
|
A person or persons nominated as such within the Work. If there is
|
||||||
|
no such explicit nomination then it is the `Copyright Holder' under
|
||||||
|
any applicable law.
|
||||||
|
|
||||||
|
`Base Interpreter'
|
||||||
|
A program or process that is normally needed for running or
|
||||||
|
interpreting a part or the whole of the Work.
|
||||||
|
|
||||||
|
A Base Interpreter may depend on external components but these
|
||||||
|
are not considered part of the Base Interpreter provided that each
|
||||||
|
external component clearly identifies itself whenever it is used
|
||||||
|
interactively. Unless explicitly specified when applying the
|
||||||
|
license to the Work, the only applicable Base Interpreter is a
|
||||||
|
`LaTeX-Format' or in the case of files belonging to the
|
||||||
|
`LaTeX-format' a program implementing the `TeX language'.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CONDITIONS ON DISTRIBUTION AND MODIFICATION
|
||||||
|
===========================================
|
||||||
|
|
||||||
|
1. Activities other than distribution and/or modification of the Work
|
||||||
|
are not covered by this license; they are outside its scope. In
|
||||||
|
particular, the act of running the Work is not restricted and no
|
||||||
|
requirements are made concerning any offers of support for the Work.
|
||||||
|
|
||||||
|
2. You may distribute a complete, unmodified copy of the Work as you
|
||||||
|
received it. Distribution of only part of the Work is considered
|
||||||
|
modification of the Work, and no right to distribute such a Derived
|
||||||
|
Work may be assumed under the terms of this clause.
|
||||||
|
|
||||||
|
3. You may distribute a Compiled Work that has been generated from a
|
||||||
|
complete, unmodified copy of the Work as distributed under Clause 2
|
||||||
|
above, as long as that Compiled Work is distributed in such a way that
|
||||||
|
the recipients may install the Compiled Work on their system exactly
|
||||||
|
as it would have been installed if they generated a Compiled Work
|
||||||
|
directly from the Work.
|
||||||
|
|
||||||
|
4. If you are the Current Maintainer of the Work, you may, without
|
||||||
|
restriction, modify the Work, thus creating a Derived Work. You may
|
||||||
|
also distribute the Derived Work without restriction, including
|
||||||
|
Compiled Works generated from the Derived Work. Derived Works
|
||||||
|
distributed in this manner by the Current Maintainer are considered to
|
||||||
|
be updated versions of the Work.
|
||||||
|
|
||||||
|
5. If you are not the Current Maintainer of the Work, you may modify
|
||||||
|
your copy of the Work, thus creating a Derived Work based on the Work,
|
||||||
|
and compile this Derived Work, thus creating a Compiled Work based on
|
||||||
|
the Derived Work.
|
||||||
|
|
||||||
|
6. If you are not the Current Maintainer of the Work, you may
|
||||||
|
distribute a Derived Work provided the following conditions are met
|
||||||
|
for every component of the Work unless that component clearly states
|
||||||
|
in the copyright notice that it is exempt from that condition. Only
|
||||||
|
the Current Maintainer is allowed to add such statements of exemption
|
||||||
|
to a component of the Work.
|
||||||
|
|
||||||
|
a. If a component of this Derived Work can be a direct replacement
|
||||||
|
for a component of the Work when that component is used with the
|
||||||
|
Base Interpreter, then, wherever this component of the Work
|
||||||
|
identifies itself to the user when used interactively with that
|
||||||
|
Base Interpreter, the replacement component of this Derived Work
|
||||||
|
clearly and unambiguously identifies itself as a modified version
|
||||||
|
of this component to the user when used interactively with that
|
||||||
|
Base Interpreter.
|
||||||
|
|
||||||
|
b. Every component of the Derived Work contains prominent notices
|
||||||
|
detailing the nature of the changes to that component, or a
|
||||||
|
prominent reference to another file that is distributed as part
|
||||||
|
of the Derived Work and that contains a complete and accurate log
|
||||||
|
of the changes.
|
||||||
|
|
||||||
|
c. No information in the Derived Work implies that any persons,
|
||||||
|
including (but not limited to) the authors of the original version
|
||||||
|
of the Work, provide any support, including (but not limited to)
|
||||||
|
the reporting and handling of errors, to recipients of the
|
||||||
|
Derived Work unless those persons have stated explicitly that
|
||||||
|
they do provide such support for the Derived Work.
|
||||||
|
|
||||||
|
d. You distribute at least one of the following with the Derived Work:
|
||||||
|
|
||||||
|
1. A complete, unmodified copy of the Work;
|
||||||
|
if your distribution of a modified component is made by
|
||||||
|
offering access to copy the modified component from a
|
||||||
|
designated place, then offering equivalent access to copy
|
||||||
|
the Work from the same or some similar place meets this
|
||||||
|
condition, even though third parties are not compelled to
|
||||||
|
copy the Work along with the modified component;
|
||||||
|
|
||||||
|
2. Information that is sufficient to obtain a complete,
|
||||||
|
unmodified copy of the Work.
|
||||||
|
|
||||||
|
7. If you are not the Current Maintainer of the Work, you may
|
||||||
|
distribute a Compiled Work generated from a Derived Work, as long as
|
||||||
|
the Derived Work is distributed to all recipients of the Compiled
|
||||||
|
Work, and as long as the conditions of Clause 6, above, are met with
|
||||||
|
regard to the Derived Work.
|
||||||
|
|
||||||
|
8. The conditions above are not intended to prohibit, and hence do not
|
||||||
|
apply to, the modification, by any method, of any component so that it
|
||||||
|
becomes identical to an updated version of that component of the Work as
|
||||||
|
it is distributed by the Current Maintainer under Clause 4, above.
|
||||||
|
|
||||||
|
9. Distribution of the Work or any Derived Work in an alternative
|
||||||
|
format, where the Work or that Derived Work (in whole or in part) is
|
||||||
|
then produced by applying some process to that format, does not relax or
|
||||||
|
nullify any sections of this license as they pertain to the results of
|
||||||
|
applying that process.
|
||||||
|
|
||||||
|
10. a. A Derived Work may be distributed under a different license
|
||||||
|
provided that license itself honors the conditions listed in
|
||||||
|
Clause 6 above, in regard to the Work, though it does not have
|
||||||
|
to honor the rest of the conditions in this license.
|
||||||
|
|
||||||
|
b. If a Derived Work is distributed under a different license, that
|
||||||
|
Derived Work must provide sufficient documentation as part of
|
||||||
|
itself to allow each recipient of that Derived Work to honor the
|
||||||
|
restrictions in Clause 6 above, concerning changes from the Work.
|
||||||
|
|
||||||
|
11. This license places no restrictions on works that are unrelated to
|
||||||
|
the Work, nor does this license place any restrictions on aggregating
|
||||||
|
such works with the Work by any means.
|
||||||
|
|
||||||
|
12. Nothing in this license is intended to, or may be used to, prevent
|
||||||
|
complete compliance by all parties with all applicable laws.
|
||||||
|
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
===========
|
||||||
|
|
||||||
|
There is no warranty for the Work. Except when otherwise stated in
|
||||||
|
writing, the Copyright Holder provides the Work `as is', without
|
||||||
|
warranty of any kind, either expressed or implied, including, but not
|
||||||
|
limited to, the implied warranties of merchantability and fitness for a
|
||||||
|
particular purpose. The entire risk as to the quality and performance
|
||||||
|
of the Work is with you. Should the Work prove defective, you assume
|
||||||
|
the cost of all necessary servicing, repair, or correction.
|
||||||
|
|
||||||
|
In no event unless required by applicable law or agreed to in writing
|
||||||
|
will The Copyright Holder, or any author named in the components of the
|
||||||
|
Work, or any other party who may distribute and/or modify the Work as
|
||||||
|
permitted above, be liable to you for damages, including any general,
|
||||||
|
special, incidental or consequential damages arising out of any use of
|
||||||
|
the Work or out of inability to use the Work (including, but not limited
|
||||||
|
to, loss of data, data being rendered inaccurate, or losses sustained by
|
||||||
|
anyone as a result of any failure of the Work to operate with any other
|
||||||
|
programs), even if the Copyright Holder or said author or said other
|
||||||
|
party has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
|
||||||
|
MAINTENANCE OF THE WORK
|
||||||
|
=======================
|
||||||
|
|
||||||
|
The Work has the status `author-maintained' if the Copyright Holder
|
||||||
|
explicitly and prominently states near the primary copyright notice in
|
||||||
|
the Work that the Work can only be maintained by the Copyright Holder
|
||||||
|
or simply that it is `author-maintained'.
|
||||||
|
|
||||||
|
The Work has the status `maintained' if there is a Current Maintainer
|
||||||
|
who has indicated in the Work that they are willing to receive error
|
||||||
|
reports for the Work (for example, by supplying a valid e-mail
|
||||||
|
address). It is not required for the Current Maintainer to acknowledge
|
||||||
|
or act upon these error reports.
|
||||||
|
|
||||||
|
The Work changes from status `maintained' to `unmaintained' if there
|
||||||
|
is no Current Maintainer, or the person stated to be Current
|
||||||
|
Maintainer of the work cannot be reached through the indicated means
|
||||||
|
of communication for a period of six months, and there are no other
|
||||||
|
significant signs of active maintenance.
|
||||||
|
|
||||||
|
You can become the Current Maintainer of the Work by agreement with
|
||||||
|
any existing Current Maintainer to take over this role.
|
||||||
|
|
||||||
|
If the Work is unmaintained, you can become the Current Maintainer of
|
||||||
|
the Work through the following steps:
|
||||||
|
|
||||||
|
1. Make a reasonable attempt to trace the Current Maintainer (and
|
||||||
|
the Copyright Holder, if the two differ) through the means of
|
||||||
|
an Internet or similar search.
|
||||||
|
|
||||||
|
2. If this search is successful, then enquire whether the Work
|
||||||
|
is still maintained.
|
||||||
|
|
||||||
|
a. If it is being maintained, then ask the Current Maintainer
|
||||||
|
to update their communication data within one month.
|
||||||
|
|
||||||
|
b. If the search is unsuccessful or no action to resume active
|
||||||
|
maintenance is taken by the Current Maintainer, then announce
|
||||||
|
within the pertinent community your intention to take over
|
||||||
|
maintenance. (If the Work is a LaTeX work, this could be
|
||||||
|
done, for example, by posting to comp.text.tex.)
|
||||||
|
|
||||||
|
3a. If the Current Maintainer is reachable and agrees to pass
|
||||||
|
maintenance of the Work to you, then this takes effect
|
||||||
|
immediately upon announcement.
|
||||||
|
|
||||||
|
b. If the Current Maintainer is not reachable and the Copyright
|
||||||
|
Holder agrees that maintenance of the Work be passed to you,
|
||||||
|
then this takes effect immediately upon announcement.
|
||||||
|
|
||||||
|
4. If you make an `intention announcement' as described in 2b. above
|
||||||
|
and after three months your intention is challenged neither by
|
||||||
|
the Current Maintainer nor by the Copyright Holder nor by other
|
||||||
|
people, then you may arrange for the Work to be changed so as
|
||||||
|
to name you as the (new) Current Maintainer.
|
||||||
|
|
||||||
|
5. If the previously unreachable Current Maintainer becomes
|
||||||
|
reachable once more within three months of a change completed
|
||||||
|
under the terms of 3b) or 4), then that Current Maintainer must
|
||||||
|
become or remain the Current Maintainer upon request provided
|
||||||
|
they then update their communication data within one month.
|
||||||
|
|
||||||
|
A change in the Current Maintainer does not, of itself, alter the fact
|
||||||
|
that the Work is distributed under the LPPL license.
|
||||||
|
|
||||||
|
If you become the Current Maintainer of the Work, you should
|
||||||
|
immediately provide, within the Work, a prominent and unambiguous
|
||||||
|
statement of your status as Current Maintainer. You should also
|
||||||
|
announce your new status to the same pertinent community as
|
||||||
|
in 2b) above.
|
||||||
|
|
||||||
|
|
||||||
|
WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
|
||||||
|
======================================================
|
||||||
|
|
||||||
|
This section contains important instructions, examples, and
|
||||||
|
recommendations for authors who are considering distributing their
|
||||||
|
works under this license. These authors are addressed as `you' in
|
||||||
|
this section.
|
||||||
|
|
||||||
|
Choosing This License or Another License
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
If for any part of your work you want or need to use *distribution*
|
||||||
|
conditions that differ significantly from those in this license, then
|
||||||
|
do not refer to this license anywhere in your work but, instead,
|
||||||
|
distribute your work under a different license. You may use the text
|
||||||
|
of this license as a model for your own license, but your license
|
||||||
|
should not refer to the LPPL or otherwise give the impression that
|
||||||
|
your work is distributed under the LPPL.
|
||||||
|
|
||||||
|
The document `modguide.tex' in the base LaTeX distribution explains
|
||||||
|
the motivation behind the conditions of this license. It explains,
|
||||||
|
for example, why distributing LaTeX under the GNU General Public
|
||||||
|
License (GPL) was considered inappropriate. Even if your work is
|
||||||
|
unrelated to LaTeX, the discussion in `modguide.tex' may still be
|
||||||
|
relevant, and authors intending to distribute their works under any
|
||||||
|
license are encouraged to read it.
|
||||||
|
|
||||||
|
A Recommendation on Modification Without Distribution
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
It is wise never to modify a component of the Work, even for your own
|
||||||
|
personal use, without also meeting the above conditions for
|
||||||
|
distributing the modified component. While you might intend that such
|
||||||
|
modifications will never be distributed, often this will happen by
|
||||||
|
accident -- you may forget that you have modified that component; or
|
||||||
|
it may not occur to you when allowing others to access the modified
|
||||||
|
version that you are thus distributing it and violating the conditions
|
||||||
|
of this license in ways that could have legal implications and, worse,
|
||||||
|
cause problems for the community. It is therefore usually in your
|
||||||
|
best interest to keep your copy of the Work identical with the public
|
||||||
|
one. Many works provide ways to control the behavior of that work
|
||||||
|
without altering any of its licensed components.
|
||||||
|
|
||||||
|
How to Use This License
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
To use this license, place in each of the components of your work both
|
||||||
|
an explicit copyright notice including your name and the year the work
|
||||||
|
was authored and/or last substantially modified. Include also a
|
||||||
|
statement that the distribution and/or modification of that
|
||||||
|
component is constrained by the conditions in this license.
|
||||||
|
|
||||||
|
Here is an example of such a notice and statement:
|
||||||
|
|
||||||
|
%% pig.dtx
|
||||||
|
%% Copyright 2005 M. Y. Name
|
||||||
|
%
|
||||||
|
% This work may be distributed and/or modified under the
|
||||||
|
% conditions of the LaTeX Project Public License, either version 1.3
|
||||||
|
% of this license or (at your option) any later version.
|
||||||
|
% The latest version of this license is in
|
||||||
|
% http://www.latex-project.org/lppl.txt
|
||||||
|
% and version 1.3 or later is part of all distributions of LaTeX
|
||||||
|
% version 2005/12/01 or later.
|
||||||
|
%
|
||||||
|
% This work has the LPPL maintenance status `maintained'.
|
||||||
|
%
|
||||||
|
% The Current Maintainer of this work is M. Y. Name.
|
||||||
|
%
|
||||||
|
% This work consists of the files pig.dtx and pig.ins
|
||||||
|
% and the derived file pig.sty.
|
||||||
|
|
||||||
|
Given such a notice and statement in a file, the conditions
|
||||||
|
given in this license document would apply, with the `Work' referring
|
||||||
|
to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
|
||||||
|
generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
|
||||||
|
referring to any `LaTeX-Format', and both `Copyright Holder' and
|
||||||
|
`Current Maintainer' referring to the person `M. Y. Name'.
|
||||||
|
|
||||||
|
If you do not want the Maintenance section of LPPL to apply to your
|
||||||
|
Work, change `maintained' above into `author-maintained'.
|
||||||
|
However, we recommend that you use `maintained', as the Maintenance
|
||||||
|
section was added in order to ensure that your Work remains useful to
|
||||||
|
the community even when you can no longer maintain and support it
|
||||||
|
yourself.
|
||||||
|
|
||||||
|
Derived Works That Are Not Replacements
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
Several clauses of the LPPL specify means to provide reliability and
|
||||||
|
stability for the user community. They therefore concern themselves
|
||||||
|
with the case that a Derived Work is intended to be used as a
|
||||||
|
(compatible or incompatible) replacement of the original Work. If
|
||||||
|
this is not the case (e.g., if a few lines of code are reused for a
|
||||||
|
completely different task), then clauses 6b and 6d shall not apply.
|
||||||
|
|
||||||
|
|
||||||
|
Important Recommendations
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Defining What Constitutes the Work
|
||||||
|
|
||||||
|
The LPPL requires that distributions of the Work contain all the
|
||||||
|
files of the Work. It is therefore important that you provide a
|
||||||
|
way for the licensee to determine which files constitute the Work.
|
||||||
|
This could, for example, be achieved by explicitly listing all the
|
||||||
|
files of the Work near the copyright notice of each file or by
|
||||||
|
using a line such as:
|
||||||
|
|
||||||
|
% This work consists of all files listed in manifest.txt.
|
||||||
|
|
||||||
|
in that place. In the absence of an unequivocal list it might be
|
||||||
|
impossible for the licensee to determine what is considered by you
|
||||||
|
to comprise the Work and, in such a case, the licensee would be
|
||||||
|
entitled to make reasonable conjectures as to which files comprise
|
||||||
|
the Work.
|
||||||
27
README
27
README
|
|
@ -1,27 +0,0 @@
|
||||||
moderncv -- a modern curriculum vitae class
|
|
||||||
|
|
||||||
Moderncv provides a documentclass for typesetting modern curriculum vitaes in
|
|
||||||
various styles. It is fairly customizable, allowing you to define your own style
|
|
||||||
by changing the colors, the fonts, ... and provides two default styles: classic
|
|
||||||
and casual.
|
|
||||||
|
|
||||||
The moderncv documentclass need it's input to be formatted with regular
|
|
||||||
commands like:
|
|
||||||
\section,
|
|
||||||
\subsection,
|
|
||||||
\maketitle,
|
|
||||||
but also defines its own special commands:
|
|
||||||
\cventry,
|
|
||||||
\firstname,
|
|
||||||
\familyname,
|
|
||||||
...
|
|
||||||
Most commands are defined in such a way that the arguments are optional.
|
|
||||||
|
|
||||||
Documents can be compiled into dvi, ps or pdf.
|
|
||||||
|
|
||||||
Until a decent manual is written, you can always look in the "examples"
|
|
||||||
directory for some examples.
|
|
||||||
|
|
||||||
|
|
||||||
Author: Xavier Danaux <xdanaux@gmail.com>
|
|
||||||
Date: 28 May 2007
|
|
||||||
44
README.md
Normal file
44
README.md
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
# moderncv
|
||||||
|
|
||||||
|
[](https://github.com/moderncv/moderncv/actions/workflows/build-pdf.yml)
|
||||||
|
[](https://www.ctan.org/pkg/moderncv)
|
||||||
|
[](https://matrix.to/#/#moderncv:matrix.org)
|
||||||
|
|
||||||
|
## A modern curriculum vitae class for LaTeX
|
||||||
|
|
||||||
|
The `moderncv` package provides a document class for typesetting applications (curricula vitae and cover letters) in various styles. `moderncv` aims to be both straightforward to use and customizable, providing five ready-made styles (classic, casual, banking, oldstyle and fancy) and allowing you to define your own by modifying colors, fonts, icons, etc.
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
`moderncv` should already be included in your installed LaTeX distribution.
|
||||||
|
If not, you can get the tarball of the package from [CTAN](https://www.ctan.org/pkg/moderncv).
|
||||||
|
Alternatively, you can also build the package from source by cloning the its [GitHub repository](https://github.com/moderncv/moderncv) and compiling the included LaTeX files:
|
||||||
|
```
|
||||||
|
latexmk -pdf ./template.tex manual/moderncv_userguide.tex
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
To get started on your own CV, use and modify the template file `template.tex`.
|
||||||
|
The user guide can be found in the folder `manual` and contains additional information on what the document class offers.
|
||||||
|
Take a look at it to see if this package suits your needs.
|
||||||
|
|
||||||
|
If you are using the [`academicons`](https://ctan.org/tex-archive/fonts/academicons) package in the template, you will need to use a Xe(La)TeX or Lua(La)TeX engine to render the icons. Otherwise, an alternative icon package will be used automatically.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
As the main goal is to keep this package alive, it is maintained in a loosely structured team.
|
||||||
|
You can contact us in our matrix room [moderncv:matrix.org](https://matrix.to/#/#moderncv:matrix.org), feel free to join if you have questions or want to contribute.
|
||||||
|
Development takes place at [github.com/moderncv/moderncv](https://github.com/moderncv/moderncv).
|
||||||
|
|
||||||
|
## Licence
|
||||||
|
|
||||||
|
`moderncv` is licensed under the [LPPL-1.3c](https://spdx.org/licenses/LPPL-1.3c.html).
|
||||||
|
|
||||||
|
## Origin
|
||||||
|
|
||||||
|
Original author: Xavier Danaux <xdanaux@gmail.com>
|
||||||
|
<br/>
|
||||||
|
Original repository: https://github.com/xdanaux/moderncv
|
||||||
|
|
||||||
|
This repository is a fork aiming to maintain `moderncv` inside CTAN, since upstream has been dead since 2016.
|
||||||
23
create-release-tarball.sh
Executable file
23
create-release-tarball.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# script to create a tarball for the files that should be in the CTAN upload
|
||||||
|
#
|
||||||
|
# do not forget to replace comments/headers beforehand
|
||||||
|
# 1. date and version in moderncv_userguide.tex
|
||||||
|
# 2. find . -type f -exec sed -i 's/$OLD_DATE $OLD_VERSION/$NEW_DATE $NEW_VERSION/g' {} \;
|
||||||
|
# 3. find . -type f -exec sed -i 's|-$OLD_YEAR moderncv maintainers (github.com/moderncv)|-$NEW_YEAR moderncv maintainers (github.com/moderncv)|g' {} \;
|
||||||
|
|
||||||
|
# fetch version via git
|
||||||
|
VERSION=$(git describe --tags --dirty)
|
||||||
|
TARBALL=moderncv-$VERSION.tar
|
||||||
|
|
||||||
|
# remove existing tarballs
|
||||||
|
rm -f $TARBALL $TARBALL.gz
|
||||||
|
|
||||||
|
# create tar with all files in git repo
|
||||||
|
git archive --prefix=moderncv/ HEAD > $TARBALL
|
||||||
|
|
||||||
|
# remove git specific files
|
||||||
|
tar -f $TARBALL --delete moderncv/.github/ moderncv/.gitignore moderncv/create-release-tarball.sh moderncv/.codespellrc
|
||||||
|
|
||||||
|
# compress
|
||||||
|
gzip $TARBALL
|
||||||
Binary file not shown.
|
|
@ -1,132 +0,0 @@
|
||||||
%% Inicio del archivo `template-es.tex'.
|
|
||||||
%% Copyright 2006-2012 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/.
|
|
||||||
|
|
||||||
|
|
||||||
\documentclass[11pt,a4paper,sans]{moderncv} % opciones posibles incluyen tamaño de fuente ('10pt', '11pt' and '12pt'), tamaño de papel ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' y 'landscape') y familia de fuentes ('sans' y 'roman')
|
|
||||||
|
|
||||||
% temas de moderncv
|
|
||||||
\moderncvstyle{casual} % las opciones de estilo son 'casual' (por omision),'classic', 'oldstyle' y 'banking'
|
|
||||||
\moderncvcolor{blue} % opciones de color 'blue' (por omision), 'orange', 'green', 'red', 'purple', 'grey' y 'black'
|
|
||||||
%\renewcommand{\familydefault}{\sfdefault} % para seleccionar la fuente por omision, use '\sfdefault' para la fuente sans serif, '\rmdefault' para la fuente roman, o cualquier nombre de fuente
|
|
||||||
%\nopagenumbers{} % elimine el comentario para suprimir la numeracion automatica de las paginas para CVs mayores a una pagina
|
|
||||||
|
|
||||||
% codificacion de caracteres
|
|
||||||
%\usepackage[utf8]{inputenc} % reemplace con su codificacion
|
|
||||||
%\usepackage{CJKutf8} % si necesita usa CJK para redactar su CV en chino, japones o coreano
|
|
||||||
|
|
||||||
% ajustes para los margenes de pagina
|
|
||||||
\usepackage[scale=0.75]{geometry}
|
|
||||||
%\setlength{\hintscolumnwidth}{3cm} % si desea cambiar el ando de la columna para las fechas
|
|
||||||
|
|
||||||
% datos personales
|
|
||||||
\firstname{John}
|
|
||||||
\familyname{Doe}
|
|
||||||
\title{T\'itulo del CV (opcional)} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
\address{calle y n\'umero}{c\'odigo postal y ciudad} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
\mobile{+1~(234)~567~890} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
\phone{+2~(345)~678~901} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
\fax{+3~(456)~789~012} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
\email{john@doe.org} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
\homepage{www.johndoe.com} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
\extrainfo{informacion adicional} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
\photo[64pt][0.4pt]{picture} % '64pt' es la altura a la que la imagen debe ser ajustada, 0.4pt es grosor del marco que lo contiene (eliga 0pt para eliminar el marco) y 'picture' es el nombre del archivo; dato opcional, elimine la linea si no desea el dato
|
|
||||||
\quote{Alguna cita (opcional)} % dato opcional, elimine la linea si no desea el dato
|
|
||||||
|
|
||||||
% para mostrar etiquetas numericas en la bibliografia (por omision no se muestran etiquetas), solo es util si desea incluir citas en en CV
|
|
||||||
%\makeatletter
|
|
||||||
%\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
|
|
||||||
%\makeatother
|
|
||||||
|
|
||||||
% bibliografia con varias fuentes
|
|
||||||
%\usepackage{multibib}
|
|
||||||
%\newcites{book,misc}{{Libros},{Otros}}
|
|
||||||
%----------------------------------------------------------------------------------
|
|
||||||
% contenido
|
|
||||||
%----------------------------------------------------------------------------------
|
|
||||||
\begin{document}
|
|
||||||
%\begin{CJK*}{UTF8}{gbsn} % para redactar el CV en chino usando CJK
|
|
||||||
\maketitle
|
|
||||||
|
|
||||||
\section{Formaci\'on acad\'emica}
|
|
||||||
\cventry{a\~no--a\~no}{Grado}{Instituci\'on}{Ciudad}{\textit{Grade}}{Descripci\'on} % Los argumentos del 3 al 6 pueden permanecer vacios
|
|
||||||
\cventry{a\~no--a\~no}{Grado}{Instituci\'on}{Ciudad}{\textit{Grade}}{Descripci\'on}
|
|
||||||
|
|
||||||
\section{Tesis de maestr\'ia}
|
|
||||||
\cvitem{t\'itulo}{\emph{T\'itulo}}
|
|
||||||
\cvitem{sinodares}{Sinodales}
|
|
||||||
\cvitem{descripci\'on}{Una breve descripci\'on de la tesis}
|
|
||||||
|
|
||||||
\section{Experiencia}
|
|
||||||
\subsection{Vocacional}
|
|
||||||
\cventry{a\~no--a\~no}{t\'itulo del puesto}{Empleador}{Ciudad}{}{Descripci\'on general, no m\'as de 1 \'o 2 l\'ineas.\newline{}%
|
|
||||||
Detalle de logros:%
|
|
||||||
\begin{itemize}%
|
|
||||||
\item Logro 1;
|
|
||||||
\item Logro 2, con sub-logros:
|
|
||||||
\begin{itemize}%
|
|
||||||
\item Sub-logro (a);
|
|
||||||
\item Sub-logro (b), con sub-sub-logros (¡evite hacer esto!);
|
|
||||||
\begin{itemize}
|
|
||||||
\item Sub-sub-logro i;
|
|
||||||
\item Sub-sub-logro ii;
|
|
||||||
\item Sub-sub-logro iii;
|
|
||||||
\end{itemize}
|
|
||||||
\item Sub-logro (c);
|
|
||||||
\end{itemize}
|
|
||||||
\item Logro 3.
|
|
||||||
\end{itemize}}
|
|
||||||
\cventry{a\~no--a\~no}{t\'itulo del puesto}{Empleador}{Ciudad}{}{Descripci\'on l\'inea 1\newline{}Descripci\'on l\'inea 2}
|
|
||||||
\subsection{Miscel\'aneo}
|
|
||||||
\cventry{a\~no--a\~no}{t\'itulo del puesto}{Empleador}{Ciudad}{}{Descripci\'on}
|
|
||||||
|
|
||||||
\section{Idiomas}
|
|
||||||
\cvitemwithcomment{Idioma 1}{nivel}{Comentario}
|
|
||||||
\cvitemwithcomment{Idioma 2}{nivel}{Comentario}
|
|
||||||
\cvitemwithcomment{Idioma 3}{nivel}{Comentario}
|
|
||||||
|
|
||||||
\section{Conocimientos de computaci\'on}
|
|
||||||
\cvdoubleitem{categor\'ia 1}{XXX, YYY, ZZZ}{categor\'ia 4}{XXX, YYY, ZZZ}
|
|
||||||
\cvdoubleitem{categor\'ia 2}{XXX, YYY, ZZZ}{categor\'ia 5}{XXX, YYY, ZZZ}
|
|
||||||
\cvdoubleitem{categor\'ia 3}{XXX, YYY, ZZZ}{categor\'ia 6}{XXX, YYY, ZZZ}
|
|
||||||
|
|
||||||
\section{Interests}
|
|
||||||
\cvitem{hobby 1}{Descripci\'on}
|
|
||||||
\cvitem{hobby 2}{Descripci\'on}
|
|
||||||
\cvitem{hobby 3}{Descripci\'on}
|
|
||||||
|
|
||||||
\section{Extra 1}
|
|
||||||
\cvlistitem{Tema 1}
|
|
||||||
\cvlistitem{Tema 2}
|
|
||||||
\cvlistitem{Tema 3}
|
|
||||||
|
|
||||||
\renewcommand{\listitemsymbol}{-~} % para cambiar el simbolo para las listas
|
|
||||||
|
|
||||||
\section{Extra 2}
|
|
||||||
\cvlistdoubleitem{Tema 1}{Tema 4}
|
|
||||||
\cvlistdoubleitem{Tema 2}{Tema 5\cite{book1}}
|
|
||||||
\cvlistdoubleitem{Tema 3}{}
|
|
||||||
|
|
||||||
% Las publicaciones tomadas de un archivo de BibTeX sin usar multibib\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
|
|
||||||
|
|
||||||
\nocite{*}
|
|
||||||
\bibliographystyle{plain}
|
|
||||||
\bibliography{publications} % 'publications' es el nombre del archivo BibTeX
|
|
||||||
|
|
||||||
% Las publicaciones tomadas de un archivo BibTeX usando el paquete multibib
|
|
||||||
%\section{Publicaciones}
|
|
||||||
%\nocitebook{book1,book2}
|
|
||||||
%\bibliographystylebook{plain}
|
|
||||||
%\bibliographybook{publications} % 'publications' es el nombre del archivo BibTeX
|
|
||||||
%\nocitemisc{misc1,misc2,misc3}
|
|
||||||
%\bibliographystylemisc{plain}
|
|
||||||
%\bibliographymisc{publications} % 'publications' es el nombre del archivo BibTeX
|
|
||||||
|
|
||||||
%\clearpage\end{CJK*} % si esta redactando su CV en chino usando CJK, \clearpage es requerido por fancyhdr para que funcione correctamente con CJK, aunque esto eliminara la numeracion de pagina al dejar \lastpage como no definido
|
|
||||||
\end{document}
|
|
||||||
|
|
||||||
|
|
||||||
%% fin del archivo `template-es.tex'.
|
|
||||||
Binary file not shown.
|
|
@ -1,131 +0,0 @@
|
||||||
%% start of file `template-zh.tex'.
|
|
||||||
%% Copyright 2006-2012 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/.
|
|
||||||
|
|
||||||
|
|
||||||
\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
|
|
||||||
|
|
||||||
% moderncv 主题
|
|
||||||
\moderncvstyle{casual} % 选项参数是 ‘casual’, ‘classic’, ‘oldstyle’ 和 ’banking’
|
|
||||||
\moderncvcolor{blue} % 选项参数是 ‘blue’ (默认)、‘orange’、‘green’、‘red’、‘purple’ 和 ‘grey’
|
|
||||||
%\nopagenumbers{} % 消除注释以取消自动页码生成功能
|
|
||||||
|
|
||||||
% 字符编码
|
|
||||||
\usepackage[utf8]{inputenc} % 替换你正在使用的编码
|
|
||||||
\usepackage{CJKutf8}
|
|
||||||
|
|
||||||
% 调整页面出血
|
|
||||||
\usepackage[scale=0.75]{geometry}
|
|
||||||
%\setlength{\hintscolumnwidth}{3cm} % 如果你希望改变日期栏的宽度
|
|
||||||
|
|
||||||
% 个人信息
|
|
||||||
\firstname{小龙}
|
|
||||||
\familyname{李}
|
|
||||||
\title{简历题目 (可选项)} % 可选项、如不需要可删除本行
|
|
||||||
\address{街道及门牌号}{邮编及城市} % 可选项、如不需要可删除本行
|
|
||||||
\mobile{+1~(234)~567~890} % 可选项、如不需要可删除本行
|
|
||||||
\phone{+2~(345)~678~901} % 可选项、如不需要可删除本行
|
|
||||||
\fax{+3~(456)~789~012} % 可选项、如不需要可删除本行
|
|
||||||
\email{xiaolong@li.com.cn} % 可选项、如不需要可删除本行
|
|
||||||
\homepage{www.xialongli.com} % 可选项、如不需要可删除本行
|
|
||||||
\extrainfo{附加信息 (可选项)} % 可选项、如不需要可删除本行
|
|
||||||
\photo[64pt][0.4pt]{picture} % ‘64pt’是图片必须压缩至的高度、‘0.4pt‘是图片边框的宽度 (如不需要可调节至0pt)、’picture‘ 是图片文件的名字;可选项、如不需要可删除本行
|
|
||||||
\quote{引言(可选项)} % 可选项、如不需要可删除本行
|
|
||||||
|
|
||||||
% 显示索引号;仅用于在简历中使用了引言
|
|
||||||
%\makeatletter
|
|
||||||
%\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
|
|
||||||
%\makeatother
|
|
||||||
|
|
||||||
% 分类索引
|
|
||||||
%\usepackage{multibib}
|
|
||||||
%\newcites{book,misc}{{Books},{Others}}
|
|
||||||
%----------------------------------------------------------------------------------
|
|
||||||
% 内容
|
|
||||||
%----------------------------------------------------------------------------------
|
|
||||||
\begin{document}
|
|
||||||
\begin{CJK}{UTF8}{gbsn} % 详情参阅CJK文件包
|
|
||||||
\maketitle
|
|
||||||
|
|
||||||
\section{教育背景}
|
|
||||||
\cventry{年 -- 年}{学位}{院校}{城市}{\textit{成绩}}{说明} % 第3到第6编码可留白
|
|
||||||
\cventry{年 -- 年}{学位}{院校}{城市}{\textit{成绩}}{说明}
|
|
||||||
|
|
||||||
\section{毕业论文}
|
|
||||||
\cvitem{题目}{\emph{题目}}
|
|
||||||
\cvitem{导师}{导师}
|
|
||||||
\cvitem{说明}{\small 论文简介}
|
|
||||||
|
|
||||||
\section{工作背景}
|
|
||||||
\subsection{专业}
|
|
||||||
\cventry{年 -- 年}{职位}{公司}{城市}{}{不超过1--2行的概况说明\newline{}%
|
|
||||||
工作内容:%
|
|
||||||
\begin{itemize}%
|
|
||||||
\item 工作内容 1;
|
|
||||||
\item 工作内容 2、 含二级内容:
|
|
||||||
\begin{itemize}%
|
|
||||||
\item 二级内容 (a);
|
|
||||||
\item 二级内容 (b)、含三级内容 (不建议使用);
|
|
||||||
\begin{itemize}
|
|
||||||
\item 三级内容 i;
|
|
||||||
\item 三级内容 ii;
|
|
||||||
\item 三级内容 iii;
|
|
||||||
\end{itemize}
|
|
||||||
\item 二级内容 (c);
|
|
||||||
\end{itemize}
|
|
||||||
\item 工作内容 3。
|
|
||||||
\end{itemize}}
|
|
||||||
\cventry{年 -- 年}{职位}{公司}{城市}{}{说明行1\newline{}说明行2}
|
|
||||||
\subsection{其他}
|
|
||||||
\cventry{年 -- 年}{职位}{公司}{城市}{}{说明}
|
|
||||||
|
|
||||||
\section{语言技能}
|
|
||||||
\cvitemwithcomment{语言 1}{水平}{评价}
|
|
||||||
\cvitemwithcomment{语言 2}{水平}{评价}
|
|
||||||
\cvitemwithcomment{语言 3}{水平}{评价}
|
|
||||||
|
|
||||||
\section{计算机技能}
|
|
||||||
\cvdoubleitem{类别 1}{XXX, YYY, ZZZ}{类别 4}{XXX, YYY, ZZZ}
|
|
||||||
\cvdoubleitem{类别 2}{XXX, YYY, ZZZ}{类别 5}{XXX, YYY, ZZZ}
|
|
||||||
\cvdoubleitem{类别 3}{XXX, YYY, ZZZ}{类别 6}{XXX, YYY, ZZZ}
|
|
||||||
|
|
||||||
\section{个人兴趣}
|
|
||||||
\cvitem{爱好 1}{\small 说明}
|
|
||||||
\cvitem{爱好 2}{\small 说明}
|
|
||||||
\cvitem{爱好 3}{\small 说明}
|
|
||||||
|
|
||||||
\section{其他 1}
|
|
||||||
\cvlistitem{项目 1}
|
|
||||||
\cvlistitem{项目 2}
|
|
||||||
\cvlistitem{项目 3}
|
|
||||||
|
|
||||||
\renewcommand{\listitemsymbol}{-} % 改变列表符号
|
|
||||||
|
|
||||||
\section{其他 2}
|
|
||||||
\cvlistdoubleitem{项目 1}{项目 4}
|
|
||||||
\cvlistdoubleitem{项目 2}{项目 5\cite{book1}}
|
|
||||||
\cvlistdoubleitem{项目 3}{}
|
|
||||||
|
|
||||||
% 来自BibTeX文件但不使用multibib包的出版物
|
|
||||||
%\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}% BibTeX的数字标签
|
|
||||||
\nocite{*}
|
|
||||||
\bibliographystyle{plain}
|
|
||||||
\bibliography{publications} % 'publications' 是BibTeX文件的文件名
|
|
||||||
|
|
||||||
% 来自BibTeX文件并使用multibib包的出版物
|
|
||||||
%\section{出版物}
|
|
||||||
%\nocitebook{book1,book2}
|
|
||||||
%\bibliographystylebook{plain}
|
|
||||||
%\bibliographybook{publications} % 'publications' 是BibTeX文件的文件名
|
|
||||||
%\nocitemisc{misc1,misc2,misc3}
|
|
||||||
%\bibliographystylemisc{plain}
|
|
||||||
%\bibliographymisc{publications} % 'publications' 是BibTeX文件的文件名
|
|
||||||
|
|
||||||
\clearpage\end{CJK}
|
|
||||||
\end{document}
|
|
||||||
|
|
||||||
|
|
||||||
%% 文件结尾 `template-zh.tex'.
|
|
||||||
Binary file not shown.
|
|
@ -1,157 +0,0 @@
|
||||||
%% start of file `template.tex'.
|
|
||||||
%% Copyright 2006-2012 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/.
|
|
||||||
|
|
||||||
|
|
||||||
\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
|
|
||||||
|
|
||||||
% moderncv themes
|
|
||||||
\moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'oldstyle' and 'banking'
|
|
||||||
\moderncvcolor{blue} % color options 'blue' (default), 'orange', 'green', 'red', 'purple', 'grey' and 'black'
|
|
||||||
%\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name
|
|
||||||
%\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page
|
|
||||||
|
|
||||||
% character encoding
|
|
||||||
%\usepackage[utf8]{inputenc} % if you are not using xelatex ou lualatex, replace by the encoding you are using
|
|
||||||
%\usepackage{CJKutf8} % if you need to use CJK to typeset your resume in Chinese, Japanese or Korean
|
|
||||||
|
|
||||||
% adjust the page margins
|
|
||||||
\usepackage[scale=0.75]{geometry}
|
|
||||||
%\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates
|
|
||||||
%\setlength{\maketitlenamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks...
|
|
||||||
|
|
||||||
% personal data
|
|
||||||
\firstname{John}
|
|
||||||
\familyname{Doe}
|
|
||||||
\title{Resumé title (optional)} % optional, remove the line if not wanted
|
|
||||||
\address{street and number}{postcode city} % optional, remove the line if not wanted
|
|
||||||
\mobile{+1~(234)~567~890} % optional, remove the line if not wanted
|
|
||||||
\phone{+2~(345)~678~901} % optional, remove the line if not wanted
|
|
||||||
\fax{+3~(456)~789~012} % optional, remove the line if not wanted
|
|
||||||
\email{john@doe.org} % optional, remove the line if not wanted
|
|
||||||
\homepage{www.johndoe.com} % optional, remove the line if not wanted
|
|
||||||
\extrainfo{additional information} % optional, remove the line if not wanted
|
|
||||||
\photo[64pt][0.4pt]{picture} % '64pt' is the height the picture must be resized to, 0.4pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file; optional, remove the line if not wanted
|
|
||||||
\quote{Some quote (optional)} % optional, remove the line if not wanted
|
|
||||||
|
|
||||||
% to show numerical labels in the bibliography (default is to show no labels); only useful if you make citations in your resume
|
|
||||||
%\makeatletter
|
|
||||||
%\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
|
|
||||||
%\makeatother
|
|
||||||
|
|
||||||
% bibliography with mutiple entries
|
|
||||||
%\usepackage{multibib}
|
|
||||||
%\newcites{book,misc}{{Books},{Others}}
|
|
||||||
%----------------------------------------------------------------------------------
|
|
||||||
% content
|
|
||||||
%----------------------------------------------------------------------------------
|
|
||||||
\begin{document}
|
|
||||||
%\begin{CJK*}{UTF8}{gbsn} % to typeset your resume in Chinese using CJK
|
|
||||||
%----- resume ---------------------------------------------------------
|
|
||||||
\makecvtitle
|
|
||||||
|
|
||||||
\section{Education}
|
|
||||||
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} % arguments 3 to 6 can be left empty
|
|
||||||
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
|
|
||||||
|
|
||||||
\section{Master thesis}
|
|
||||||
\cvitem{title}{\emph{Title}}
|
|
||||||
\cvitem{supervisors}{Supervisors}
|
|
||||||
\cvitem{description}{Short thesis abstract}
|
|
||||||
|
|
||||||
\section{Experience}
|
|
||||||
\subsection{Vocational}
|
|
||||||
\cventry{year--year}{Job title}{Employer}{City}{}{General description no longer than 1--2 lines.\newline{}%
|
|
||||||
Detailed achievements:%
|
|
||||||
\begin{itemize}%
|
|
||||||
\item Achievement 1;
|
|
||||||
\item Achievement 2, with sub-achievements:
|
|
||||||
\begin{itemize}%
|
|
||||||
\item Sub-achievement (a);
|
|
||||||
\item Sub-achievement (b), with sub-sub-achievements (don't do this!);
|
|
||||||
\begin{itemize}
|
|
||||||
\item Sub-sub-achievement i;
|
|
||||||
\item Sub-sub-achievement ii;
|
|
||||||
\item Sub-sub-achievement iii;
|
|
||||||
\end{itemize}
|
|
||||||
\item Sub-achievement (c);
|
|
||||||
\end{itemize}
|
|
||||||
\item Achievement 3.
|
|
||||||
\end{itemize}}
|
|
||||||
\cventry{year--year}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2}
|
|
||||||
\subsection{Miscellaneous}
|
|
||||||
\cventry{year--year}{Job title}{Employer}{City}{}{Description}
|
|
||||||
|
|
||||||
\section{Languages}
|
|
||||||
\cvitemwithcomment{Language 1}{Skill level}{Comment}
|
|
||||||
\cvitemwithcomment{Language 2}{Skill level}{Comment}
|
|
||||||
\cvitemwithcomment{Language 3}{Skill level}{Comment}
|
|
||||||
|
|
||||||
\section{Computer skills}
|
|
||||||
\cvdoubleitem{category 1}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
|
|
||||||
\cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ}
|
|
||||||
\cvdoubleitem{category 3}{XXX, YYY, ZZZ}{category 6}{XXX, YYY, ZZZ}
|
|
||||||
|
|
||||||
\section{Interests}
|
|
||||||
\cvitem{hobby 1}{Description}
|
|
||||||
\cvitem{hobby 2}{Description}
|
|
||||||
\cvitem{hobby 3}{Description}
|
|
||||||
|
|
||||||
\section{Extra 1}
|
|
||||||
\cvlistitem{Item 1}
|
|
||||||
\cvlistitem{Item 2}
|
|
||||||
\cvlistitem{Item 3}
|
|
||||||
|
|
||||||
\renewcommand{\listitemsymbol}{-~} % change the symbol for lists
|
|
||||||
|
|
||||||
\section{Extra 2}
|
|
||||||
\cvlistdoubleitem{Item 1}{Item 4}
|
|
||||||
\cvlistdoubleitem{Item 2}{Item 5\cite{book1}}
|
|
||||||
\cvlistdoubleitem{Item 3}{}
|
|
||||||
|
|
||||||
% Publications from a BibTeX file without multibib
|
|
||||||
% for numerical labels: \renewcommand{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
|
|
||||||
% to redefine the heading string ("Publications"): \renewcommand{\refname}{Articles}
|
|
||||||
\nocite{*}
|
|
||||||
\bibliographystyle{plain}
|
|
||||||
\bibliography{publications} % 'publications' is the name of a BibTeX file
|
|
||||||
|
|
||||||
% Publications from a BibTeX file using the multibib package
|
|
||||||
%\section{Publications}
|
|
||||||
%\nocitebook{book1,book2}
|
|
||||||
%\bibliographystylebook{plain}
|
|
||||||
%\bibliographybook{publications} % 'publications' is the name of a BibTeX file
|
|
||||||
%\nocitemisc{misc1,misc2,misc3}
|
|
||||||
%\bibliographystylemisc{plain}
|
|
||||||
%\bibliographymisc{publications} % 'publications' is the name of a BibTeX file
|
|
||||||
|
|
||||||
\clearpage
|
|
||||||
%----- letter ---------------------------------------------------------
|
|
||||||
% recipient data
|
|
||||||
\recipient{Company Recruitment team}{Company, Inc.\\123 somestreet\\some city}
|
|
||||||
\date{January 01, 1984}
|
|
||||||
\opening{Dear Sir or Madam,}
|
|
||||||
\closing{Yours faithfully,}
|
|
||||||
\enclosure[Attached]{curriculum vit\ae{}} % use an optional argument to use a string other than "Enclosure", or redefine \enclname
|
|
||||||
\makelettertitle
|
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ullamcorper neque sit amet lectus facilisis sed luctus nisl iaculis. Vivamus at neque arcu, sed tempor quam. Curabitur pharetra tincidunt tincidunt. Morbi volutpat feugiat mauris, quis tempor neque vehicula volutpat. Duis tristique justo vel massa fermentum accumsan. Mauris ante elit, feugiat vestibulum tempor eget, eleifend ac ipsum. Donec scelerisque lobortis ipsum eu vestibulum. Pellentesque vel massa at felis accumsan rhoncus.
|
|
||||||
|
|
||||||
Suspendisse commodo, massa eu congue tincidunt, elit mauris pellentesque orci, cursus tempor odio nisl euismod augue. Aliquam adipiscing nibh ut odio sodales et pulvinar tortor laoreet. Mauris a accumsan ligula. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse vulputate sem vehicula ipsum varius nec tempus dui dapibus. Phasellus et est urna, ut auctor erat. Sed tincidunt odio id odio aliquam mattis. Donec sapien nulla, feugiat eget adipiscing sit amet, lacinia ut dolor. Phasellus tincidunt, leo a fringilla consectetur, felis diam aliquam urna, vitae aliquet lectus orci nec velit. Vivamus dapibus varius blandit.
|
|
||||||
|
|
||||||
Duis sit amet magna ante, at sodales diam. Aenean consectetur porta risus et sagittis. Ut interdum, enim varius pellentesque tincidunt, magna libero sodales tortor, ut fermentum nunc metus a ante. Vivamus odio leo, tincidunt eu luctus ut, sollicitudin sit amet metus. Nunc sed orci lectus. Ut sodales magna sed velit volutpat sit amet pulvinar diam venenatis.
|
|
||||||
|
|
||||||
Albert Einstein discovered that $e=mc^2$ in 1905.
|
|
||||||
|
|
||||||
\[ e=\lim_{n \to \infty} \left(1+\frac{1}{n}\right)^n \]
|
|
||||||
|
|
||||||
\makeletterclosing
|
|
||||||
|
|
||||||
%\clearpage\end{CJK*} % if you are typesetting your resume in Chinese using CJK; the \clearpage is required for fancyhdr to work correctly with CJK, though it kills the page numbering by making \lastpage undefined
|
|
||||||
\end{document}
|
|
||||||
|
|
||||||
|
|
||||||
%% end of file `template.tex'.
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
660
moderncv.cls
660
moderncv.cls
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncv.cls'.
|
%% start of file `moderncv.cls'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesClass{moderncv}[2012/07/29 v1.1 modern curriculum vitae and letter document class]
|
\ProvidesClass{moderncv}[2026-01-31 v2.5.1 modern curriculum vitae and letter document class]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
|
@ -69,80 +69,61 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% required packages
|
% required packages
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% \AtEndPreamble hook (loading tetoolbox instead of defining the macro, as to avoid incompatibilities with etoolbox (and packages relying on it) defining the macro too)
|
% \AtEndPreamble hook (loading etoolbox instead of defining the macro, as to avoid incompatibilities with etoolbox (and packages relying on it) defining the macro too)
|
||||||
\RequirePackage{etoolbox}
|
\RequirePackage{etoolbox}
|
||||||
%\let\@endpreamblehook\@empty
|
%\let\@endpreamblehook\@empty
|
||||||
%\def\AtEndPreamble{\g@addto@macro\@endpreamblehook}
|
%\def\AtEndPreamble{\g@addto@macro\@endpreamblehook}
|
||||||
%\let\moderncv@document\document
|
%\let\document@original\document
|
||||||
%\def\document{\endgroup\@endpreamblehook\begingroup\moderncv@document}
|
%\def\document{\endgroup\@endpreamblehook\begingroup\document@original}
|
||||||
|
|
||||||
% if... then... else... constructs
|
% if... then... else... constructs
|
||||||
\RequirePackage{ifthen}
|
\RequirePackage{ifthen}
|
||||||
% TODO: move to xifthen and \isempty{<arg>} instead of \equal{<arg>}{}
|
% TODO: move to xifthen and \isempty{<arg>} instead of \equal{<arg>}{}
|
||||||
|
|
||||||
% TODO: replace \newcommand by \NewDocumentCommand (LaTeX 3)
|
|
||||||
|
|
||||||
% color
|
% color
|
||||||
\RequirePackage{xcolor}
|
\RequirePackage[table]{xcolor}
|
||||||
|
|
||||||
% font loading
|
% tex compiler checking for symbol loading
|
||||||
%\usepackage{ifxetex,ifluatex}
|
\RequirePackage{iftex}
|
||||||
%\newif\ifxetexorluatex
|
\newif\ifxetexorluatex
|
||||||
%\ifxetex
|
\ifxetex
|
||||||
% \xetexorluatextrue
|
\xetexorluatextrue
|
||||||
%\else
|
\else
|
||||||
% \ifluatex
|
\ifluatex
|
||||||
% \xetexorluatextrue
|
\xetexorluatextrue
|
||||||
% \else
|
\else
|
||||||
% \xetexorluatexfalse
|
\xetexorluatexfalse
|
||||||
% \fi
|
\fi
|
||||||
%\fi
|
\fi
|
||||||
% automatic loading of latin modern fonts
|
|
||||||
%\ifxetexorluatex
|
|
||||||
% \RequirePackage{fontspec}
|
|
||||||
% \defaultfontfeatures{Ligatures=TeX}
|
|
||||||
% \RequirePackage{unicode-math}
|
|
||||||
% \setmainfont{Latin Modern}
|
|
||||||
% \setsansfont{Latin Modern Sans}
|
|
||||||
% \setmathfont{Latin Modern Math}
|
|
||||||
%\else
|
|
||||||
\RequirePackage[T1]{fontenc}
|
|
||||||
\IfFileExists{lmodern.sty}%
|
|
||||||
{\RequirePackage{lmodern}}%
|
|
||||||
{}
|
|
||||||
%\fi
|
|
||||||
|
|
||||||
% MarVoSym font for symbols
|
|
||||||
%\RequirePackage{marvosym}
|
|
||||||
\newcommand*{\marvosymbol}[1]{}
|
|
||||||
%\ifxetexorluatex
|
|
||||||
% \renewcommand*{\marvosymbol}[1]{{\fontspec{MarVoSym}\char#1}}
|
|
||||||
%\else
|
|
||||||
\renewcommand*{\marvosymbol}[1]{{\fontfamily{mvs}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char#1}}
|
|
||||||
%\fi
|
|
||||||
|
|
||||||
% hyper links (hyperref is loaded at the end of the preamble to pass options required by loaded packages such as CJK)
|
% hyper links (hyperref is loaded at the end of the preamble to pass options required by loaded packages such as CJK)
|
||||||
|
\newcommand*\pdfpagemode{UseNone}% do not show thumbnails or bookmarks on opening (on supporting browsers); set \pdfpagemode to "UseOutlines" to show bookmarks
|
||||||
\RequirePackage{url}
|
\RequirePackage{url}
|
||||||
\urlstyle{tt}
|
\urlstyle{tt}
|
||||||
\AtEndPreamble{
|
\AtEndPreamble{
|
||||||
\RequirePackage[unicode]{hyperref}
|
\pagenumbering{arabic}% has to be issued before loading hyperref, as to set \thepage and hence to avoid hyperref issuing a warning and setting pdfpagelabels=false
|
||||||
|
\PassOptionsToPackage{unicode}{hyperref}
|
||||||
|
\RequirePackage{hyperref}
|
||||||
\hypersetup{
|
\hypersetup{
|
||||||
breaklinks,
|
breaklinks,
|
||||||
baseurl = http://,
|
|
||||||
pdfborder = 0 0 0,
|
pdfborder = 0 0 0,
|
||||||
pdfpagemode = UseNone,% do not show thumbnails or bookmarks on opening
|
pdfpagemode = \pdfpagemode,
|
||||||
pdfpagelabels = false,% to avoid a warning setting it automatically to false anyway, because hyperref detects \thepage as undefined (why?)
|
|
||||||
pdfstartpage = 1,
|
pdfstartpage = 1,
|
||||||
pdfcreator = {\LaTeX{} with 'moderncv' package},
|
pdfcreator = {\LaTeX{} with 'moderncv' package},
|
||||||
% pdfproducer = {\LaTeX{}},% will/should be set automatically to the correct TeX engine used
|
% pdfproducer = {\LaTeX{}},% will/should be set automatically to the correct TeX engine used
|
||||||
bookmarksopen = true,
|
bookmarksopen = true,
|
||||||
bookmarksdepth= 2,% to show sections and subsections
|
bookmarksdepth= 2,% to show sections and subsections
|
||||||
pdfauthor = {\@firstname{}~\@familyname{}},
|
pdfauthor = {\@firstname{}~\@lastname{}},
|
||||||
pdftitle = {\@firstname{}~\@familyname{} -- \@title{}},
|
pdftitle =
|
||||||
pdfsubject = {Resum\'{e} of \@firstname{}~\@familyname{}},
|
{\@firstname{}~\@lastname{}\expandafter\notblank\expandafter{\@title}{ -- \@title}{}}, %\notblank does not expand argument automatically
|
||||||
pdfkeywords = {\@firstname{}~\@familyname{}, curriculum vit\ae{}, resum\'{e}}}
|
pdfsubject = {R\'{e}sum\'{e} of \@firstname{}~\@lastname{}},
|
||||||
\pagenumbering{arabic}% has to be issued after loading hyperref
|
pdfkeywords = {\@firstname{}~\@lastname{}, curriculum vit\ae{}, r\'{e}sum\'{e}}}}
|
||||||
}
|
|
||||||
|
% pdftex not using pdfmanagement-testphase requires T1 font encoding in order to handle links containing special characters somewhat properly
|
||||||
|
\ifpdftex
|
||||||
|
\IfPDFManagementActiveTF{}{\RequirePackage[T1]{fontenc}}
|
||||||
|
\fi
|
||||||
|
|
||||||
% graphics
|
% graphics
|
||||||
\RequirePackage{graphicx}
|
\RequirePackage{graphicx}
|
||||||
|
|
@ -158,29 +139,52 @@
|
||||||
\newcommand*{\nopagenumbers}{\@displaypagenumbersfalse}
|
\newcommand*{\nopagenumbers}{\@displaypagenumbersfalse}
|
||||||
\AtEndPreamble{%
|
\AtEndPreamble{%
|
||||||
\AtBeginDocument{%
|
\AtBeginDocument{%
|
||||||
|
% fancyhdr length
|
||||||
|
\renewcommand{\headwidth}{\textwidth}
|
||||||
\if@displaypagenumbers%
|
\if@displaypagenumbers%
|
||||||
\@ifundefined{r@lastpage}{}{%
|
\@ifundefined{r@lastpage}{}{%
|
||||||
\ifthenelse{\pageref{lastpage}>1}{%
|
\ifthenelse{\pageref{lastpage}>1}{%
|
||||||
\newlength{\pagenumberwidth}%
|
\newlength{\pagenumberwidth}%
|
||||||
\settowidth{\pagenumberwidth}{\color{color2}\addressfont\itshape\strut\thepage/\pageref{lastpage}}%
|
\settowidth{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}%
|
||||||
\fancypagestyle{plain}{%
|
\fancypagestyle{plain}{%
|
||||||
\fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\addressfont\itshape\strut\thepage/\pageref{lastpage}}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style)
|
\fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\protect\NoHyper\pageref{lastpage}\protect\endNoHyper}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style)
|
||||||
\pagestyle{plain}}{}}%
|
\pagestyle{plain}}{}}\fi}%
|
||||||
\AtEndDocument{\label{lastpage}}\else\fi}}
|
\AtEndDocument{\label{lastpage}}}
|
||||||
\pagestyle{plain}
|
\pagestyle{plain}
|
||||||
|
|
||||||
|
% reduced list spacing
|
||||||
|
% package providing hooks into lists
|
||||||
|
% originally developed by Jakob Schiotz (see http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty)
|
||||||
|
% modified and distributed with moderncv(not available otherwise on ctan)
|
||||||
|
\RequirePackage{tweaklist}
|
||||||
|
\renewcommand*{\itemhook}{%
|
||||||
|
\@minipagetrue% removes spacing before lists as they use \addvspace, which doesn't add vertical space inside minipages
|
||||||
|
\@noparlisttrue% removes spacing at end of lists, caused by \par
|
||||||
|
\setlength{\topsep}{0pt}% normally not required thanks to \@minipagetrue
|
||||||
|
\setlength{\partopsep}{0pt}% normally not required thanks to \@minipagetrue
|
||||||
|
\setlength{\parsep}{0pt}% not required when \itemsep and \parskip are set to 0pt (?)
|
||||||
|
\setlength{\parskip}{0pt}%
|
||||||
|
\setlength{\itemsep}{0pt}}
|
||||||
|
\renewcommand*{\enumhook}{\itemhook{}}
|
||||||
|
\renewcommand*{\deschook}{\itemhook{}}
|
||||||
|
|
||||||
% lengths calculations
|
% lengths calculations
|
||||||
\RequirePackage{calc}
|
\RequirePackage{calc}
|
||||||
|
|
||||||
% advanced command arguments
|
% advanced command arguments (LaTeX 3)
|
||||||
\RequirePackage{xargs}
|
\RequirePackage{xparse}
|
||||||
|
% TODO (?): replace all \newcommand by \NewDocumentCommand
|
||||||
|
|
||||||
% micro-typography (e.g., character protrusion, font expansion, hyphenatable letterspacing)
|
% micro-typography (e.g., character protrusion, font expansion, hyphenatable letterspacing)
|
||||||
\RequirePackage{microtype}
|
\RequirePackage{microtype}
|
||||||
|
|
||||||
|
% stack of key-value elements, used to save personal information
|
||||||
|
\RequirePackage{moderncvcollection}
|
||||||
|
|
||||||
% compatibility package with older versions of moderncv
|
% compatibility package with older versions of moderncv
|
||||||
\RequirePackageWithOptions{moderncvcompatibility}
|
\RequirePackageWithOptions{moderncvcompatibility}
|
||||||
|
|
||||||
|
\RequirePackage{expl3}
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% class definition
|
% class definition
|
||||||
|
|
@ -195,12 +199,12 @@
|
||||||
\setlength\columnseprule{0\p@}
|
\setlength\columnseprule{0\p@}
|
||||||
\setlength\fboxsep{3\p@}
|
\setlength\fboxsep{3\p@}
|
||||||
\setlength\fboxrule{.4\p@}
|
\setlength\fboxrule{.4\p@}
|
||||||
|
\setlength\arrayrulewidth{.4\p@}
|
||||||
|
\setlength\doublerulesep{2\p@}
|
||||||
|
|
||||||
% not required
|
% not set on purpose
|
||||||
%\setlength\arraycolsep{5\p@}
|
%\setlength\arraycolsep{5\p@}
|
||||||
%\setlength\tabcolsep{6\p@}
|
%\setlength\tabcolsep{6\p@}
|
||||||
%\setlength\arrayrulewidth{.4\p@}
|
|
||||||
%\setlength\doublerulesep{2\p@}
|
|
||||||
%\setlength\tabbingsep{\labelsep}
|
%\setlength\tabbingsep{\labelsep}
|
||||||
|
|
||||||
\raggedbottom
|
\raggedbottom
|
||||||
|
|
@ -211,42 +215,196 @@
|
||||||
% overall design commands definitions
|
% overall design commands definitions
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% elements
|
% elements
|
||||||
\newcommand*{\firstname}[1]{\def\@firstname{#1}}
|
%---------
|
||||||
\newcommand*{\familyname}[1]{\def\@familyname{#1}}
|
% defines one's name
|
||||||
|
% usage: \name{<firstname>}{<lastname>}
|
||||||
|
\newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}}
|
||||||
|
|
||||||
|
% defines one's title (optional)
|
||||||
|
% usage: \title{<title>}
|
||||||
\renewcommand*{\title}[1]{\def\@title{#1}}
|
\renewcommand*{\title}[1]{\def\@title{#1}}
|
||||||
\newcommand*{\address}[2]{\def\@addressstreet{#1}\def\@addresscity{#2}}
|
|
||||||
\newcommand*{\mobile}[1]{\def\@mobile{#1}}
|
% defines one's address (optional)
|
||||||
\newcommand*{\phone}[1]{\def\@phone{#1}}
|
% usage: \address{<street>}{<city>}{<country>}
|
||||||
\newcommand*{\fax}[1]{\def\@fax{#1}}
|
% where the <city> and <country> arguments can be omitted or provided empty
|
||||||
|
\NewDocumentCommand{\address}{mG{}G{}}{\def\@addressstreet{#1}\def\@addresscity{#2}\def\@addresscountry{#3}}
|
||||||
|
|
||||||
|
% defines one's birthday (optional)
|
||||||
|
% usage: \born{date, place}
|
||||||
|
\newcommand*{\born}[1]{\def\@born{#1}}
|
||||||
|
|
||||||
|
% defines one's email (optional)
|
||||||
|
% usage: \email{<email address>}
|
||||||
\newcommand*{\email}[1]{\def\@email{#1}}
|
\newcommand*{\email}[1]{\def\@email{#1}}
|
||||||
\newcommand*{\homepage}[1]{\def\@homepage{#1}}
|
|
||||||
|
% defines one's home page (optional)
|
||||||
|
% usage: \homepage[<optional protocol>]{<url>}
|
||||||
|
% where <optional protocol> should be either "https" (default) or "http"
|
||||||
|
\NewDocumentCommand{\homepage}{O{https}m}{\def\@homepageprotocol{#1}\def\@homepage{#2}}
|
||||||
|
|
||||||
|
% adds a fixed/mobile/fax number to one's personal information (optional)
|
||||||
|
% usage: \phone[<optional type>]{<number>}
|
||||||
|
% where <optional type> should be either "fixed" (default), "mobile" or "fax
|
||||||
|
\collectionnew{phones}
|
||||||
|
\NewDocumentCommand{\phone}{O{fixed}m}{%
|
||||||
|
\ifthenelse{\equal{#1}{fax}}%
|
||||||
|
{\collectionadd[#1]{phones}{#2}}
|
||||||
|
{\collectionadd[#1]{phones}{\protect\tellink{#2}}}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% http://latex.org/forum/viewtopic.php?t=12239
|
||||||
|
\def\SplitMyMacro#1/#2{#2}
|
||||||
|
|
||||||
|
|
||||||
|
% adds a social link to one's personal information (optional)
|
||||||
|
% usage: \social[<optional type>][<optional url>]{<account name>}
|
||||||
|
% where <optional type> should be either:
|
||||||
|
% - "linkedin"
|
||||||
|
% - "xing"
|
||||||
|
% - "twitter"
|
||||||
|
% - "mastodon"
|
||||||
|
% - "github"
|
||||||
|
% - "gitlab"
|
||||||
|
% - "stackoverflow"
|
||||||
|
% - "bitbucket"
|
||||||
|
% - "skype"
|
||||||
|
% - "orcid"
|
||||||
|
% - "researchgate"
|
||||||
|
% - "researcherid"
|
||||||
|
% - "telegram"
|
||||||
|
% - "whatsapp"
|
||||||
|
% - "signal"
|
||||||
|
% - "matrix"
|
||||||
|
% - "googlescholar"
|
||||||
|
% - "codeberg"
|
||||||
|
% - "discord"
|
||||||
|
% - "twitch"
|
||||||
|
% - "youtube"
|
||||||
|
% - "tiktok"
|
||||||
|
% - "instagram"
|
||||||
|
% - "soundcloud"
|
||||||
|
% - "steam
|
||||||
|
% - "xbox"
|
||||||
|
% - "playstation"
|
||||||
|
% - "battlenet"
|
||||||
|
% - "arxiv"
|
||||||
|
% - "inspire"
|
||||||
|
% - "simplex"
|
||||||
|
% - "threema"
|
||||||
|
\collectionnew{socials}
|
||||||
|
\NewDocumentCommand{\social}{O{}O{}m}{%
|
||||||
|
\ifthenelse{\equal{#2}{}}%
|
||||||
|
{%
|
||||||
|
\ifthenelse{\equal{#1}{linkedin}} {\collectionadd[linkedin]{socials} {\protect\httpslink[#3]{www.linkedin.com/in/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{xing}} {\collectionadd[xing]{socials} {\protect\httpslink[#3]{www.xing.com/profile/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httpslink[#3]{twitter.com/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{mastodon}} {\collectionadd[mastodon]{socials} {\protect\httpslink[#3]{#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httpslink[#3]{github.com/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{gitlab}} {\collectionadd[gitlab]{socials} {\protect\httpslink[#3]{gitlab.com/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{stackoverflow}}{\collectionadd[stackoverflow]{socials}{\protect\httpslink[#3]{stackoverflow.com/users/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{bitbucket}} {\collectionadd[bitbucket]{socials} {\protect\httpslink[#3]{bitbucket.org/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{skype}} {\collectionadd[skype]{socials} {#3}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{orcid}} {\collectionadd[orcid]{socials} {\protect\httpslink[#3]{orcid.org/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{researchgate}} {\collectionadd[researchgate]{socials} {\protect\httpslink[#3]{www.researchgate.net/profile/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{researcherid}} {\collectionadd[researcherid]{socials} {\protect\httpslink[#3]{www.researcherid.com/rid/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{telegram}} {\collectionadd[telegram]{socials} {\protect\httpslink[#3]{t.me/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{whatsapp}} {\collectionadd[whatsapp]{socials} {\protect\httpslink[#3]{wa.me/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{signal}} {\collectionadd[signal]{socials} {#3}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{matrix}} {\collectionadd[matrix]{socials} {\httpslink[#3]{matrix.to/\#/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{codeberg}} {\collectionadd[codeberg]{socials} {\protect\httpslink[#3]{codeberg.org/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{discord}} {\collectionadd[discord]{socials} {#3}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{twitch}} {\collectionadd[twitch]{socials} {\protect\httpslink[#3]{twitch.tv/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{youtube}} {\collectionadd[youtube]{socials} {\protect\httpslink[#3]{youtube.com/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{tiktok}} {\collectionadd[tiktok]{socials} {\protect\httpslink[#3]{tiktok.com/@#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{instagram}} {\collectionadd[instagram]{socials} {\protect\httpslink[#3]{instagram.com/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{soundcloud}} {\collectionadd[soundcloud]{socials} {\protect\httpslink[#3]{soundcloud.com/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{steam}} {\collectionadd[steam]{socials} {\protect\httpslink[#3]{steamcommunity.com/id/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{xbox}} {\collectionadd[xbox]{socials} {\protect\httpslink[#3]{account.xbox.com/profile?gamertag=#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{playstation}} {\collectionadd[playstation]{socials} {#3}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{battlenet}} {\collectionadd[battlenet]{socials} {#3}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{arxiv}} {\collectionadd[arxiv]{socials} {\protect\httpslink[#3]{arxiv.org/a/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{inspire}} {\collectionadd[inspire]{socials} {\protect\httpslink[#3]{inspirehep.net/authors/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{simplex}} {\collectionadd[simplex]{socials} {\protect\httpslink[#3]{simplex.chat/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{threema}} {\collectionadd[threema]{socials} {\protect\httpslink[#3]{threema.id/#3}}} {}%
|
||||||
|
\ifthenelse{\equal{#1}{medium}} {\collectionadd[medium]{socials} {\protect\httpslink[#3]{medium.com/#3}}} {}%
|
||||||
|
}
|
||||||
|
{\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}%
|
||||||
|
|
||||||
|
% defines additional personal information (optional)
|
||||||
|
% usage: \extrainfo{<text>}
|
||||||
|
\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
|
||||||
|
|
||||||
% colors
|
% colors
|
||||||
|
%-------
|
||||||
\definecolor{color0}{rgb}{0,0,0}% main default color, normally left to black
|
\definecolor{color0}{rgb}{0,0,0}% main default color, normally left to black
|
||||||
\definecolor{color1}{rgb}{0,0,0}% primary theme color
|
\definecolor{color1}{rgb}{0,0,0}% primary scheme color
|
||||||
\definecolor{color2}{rgb}{0,0,0}% secondary theme color
|
\definecolor{color2}{rgb}{0,0,0}% secondary scheme color
|
||||||
\definecolor{color3}{rgb}{0,0,0}% tertiary theme color
|
\definecolor{color3}{rgb}{0,0,0}% tertiary scheme color
|
||||||
|
|
||||||
% symbols
|
% symbols
|
||||||
% itemize labels (the struts were added to correct inter-item spacing (works for single line items, until a solution is found for multi-line ones...)
|
%--------
|
||||||
\newcommand*{\labelitemi}{\strut\textcolor{color1}{\marvosymbol{123}}}% equivalent to \Neutral from marvosym package; alternative: \fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}
|
% itemize labels (the struts were added to correct inter-item spacing (works for single line items, until a solution is found for multi-line ones...)
|
||||||
\newcommand*{\labelitemii}{\strut\textcolor{color1}{\large\bfseries-}}
|
\newcommand*{\labelitemi} {\strut\textcolor{color1}{\large\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
|
||||||
\newcommand*{\labelitemiii}{\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% alternative: \textasteriskcentered; 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
|
\newcommand*{\labelitemii} {\strut\textcolor{color1}{\large\bfseries-}}
|
||||||
\newcommand*{\labelitemiv}{\labelitemiii}
|
\newcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% alternative: \textasteriskcentered; 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
|
||||||
% enumerate labels
|
\newcommand*{\labelitemiv} {\labelitemiii}
|
||||||
\renewcommand{\theenumi}{\@arabic\c@enumi}
|
|
||||||
\renewcommand{\theenumii}{\@alph\c@enumii}
|
|
||||||
\renewcommand{\theenumiii}{\@roman\c@enumiii}
|
|
||||||
\renewcommand{\theenumiv}{\@Alph\c@enumiv}
|
|
||||||
% other symbols
|
|
||||||
\newcommand*{\listitemsymbol}{\labelitemi~}
|
|
||||||
\newcommand*{\addresssymbol}{}
|
|
||||||
\newcommand*{\mobilesymbol}{}
|
|
||||||
\newcommand*{\phonesymbol}{}
|
|
||||||
\newcommand*{\faxsymbol}{}
|
|
||||||
\newcommand*{\emailsymbol}{}
|
|
||||||
\newcommand*{\homepagesymbol}{}
|
|
||||||
|
|
||||||
|
% enumerate labels
|
||||||
|
\renewcommand{\theenumi} {\@arabic\c@enumi}
|
||||||
|
\renewcommand{\theenumii} {\@alph\c@enumii}
|
||||||
|
\renewcommand{\theenumiii} {\@roman\c@enumiii}
|
||||||
|
\renewcommand{\theenumiv} {\@Alph\c@enumiv}
|
||||||
|
|
||||||
|
% other symbols
|
||||||
|
\newcommand*{\listitemsymbol} {\labelitemi~}
|
||||||
|
\newcommand*{\addresssymbol} {}
|
||||||
|
\newcommand*{\bornsymbol} {}
|
||||||
|
\newcommand*{\mobilephonesymbol} {}
|
||||||
|
\newcommand*{\fixedphonesymbol} {}
|
||||||
|
\newcommand*{\faxphonesymbol} {}
|
||||||
|
\newcommand*{\emailsymbol} {}
|
||||||
|
\newcommand*{\homepagesymbol} {}
|
||||||
|
\newcommand*{\linkedinsocialsymbol} {}
|
||||||
|
\newcommand*{\xingsocialsymbol} {}
|
||||||
|
\newcommand*{\twittersocialsymbol} {}
|
||||||
|
\newcommand*{\mastodonsocialsymbol} {}
|
||||||
|
\newcommand*{\githubsocialsymbol} {}
|
||||||
|
\newcommand*{\gitlabsocialsymbol} {}
|
||||||
|
\newcommand*{\stackoverflowsocialsymbol}{}
|
||||||
|
\newcommand*{\bitbucketsocialsymbol} {}
|
||||||
|
\newcommand*{\skypesocialsymbol} {}
|
||||||
|
\newcommand*{\orcidsocialsymbol} {}
|
||||||
|
\newcommand*{\researchgatesocialsymbol} {}
|
||||||
|
\newcommand*{\researcheridsocialsymbol} {}
|
||||||
|
\newcommand*{\googlescholarsocialsymbol}{}
|
||||||
|
\newcommand*{\telegramsocialsymbol} {}
|
||||||
|
\newcommand*{\whatsappsocialsymbol} {}
|
||||||
|
\newcommand*{\matrixsocialsymbol} {}
|
||||||
|
\newcommand*{\signalsocialsymbol} {}
|
||||||
|
\newcommand*{\codebergsocialsymbol} {}
|
||||||
|
\newcommand*{\discordsocialsymbol} {}
|
||||||
|
\newcommand*{\twitchsocialsymbol} {}
|
||||||
|
\newcommand*{\youtubesocialsymbol} {}
|
||||||
|
\newcommand*{\tiktoksocialsymbol} {}
|
||||||
|
\newcommand*{\instagramsocialsymbol} {}
|
||||||
|
\newcommand*{\soundcloudsocialsymbol} {}
|
||||||
|
\newcommand*{\steamsocialsymbol} {}
|
||||||
|
\newcommand*{\xboxsocialsymbol} {}
|
||||||
|
\newcommand*{\playstationsocialsymbol} {}
|
||||||
|
\newcommand*{\battlenetsocialsymbol} {}
|
||||||
|
\newcommand*{\arxivsocialsymbol} {}
|
||||||
|
\newcommand*{\inspiresocialsymbol} {}
|
||||||
|
\newcommand*{\simplexsocialsymbol} {}
|
||||||
|
\newcommand*{\threemasocialsymbol} {}
|
||||||
|
\newcommand*{\mediumsocialsymbol} {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
% other
|
||||||
|
%------
|
||||||
% fonts
|
% fonts
|
||||||
\AtBeginDocument{\normalfont\color{color0}}
|
\AtBeginDocument{\normalfont\color{color0}}
|
||||||
|
|
||||||
|
|
@ -258,29 +416,88 @@
|
||||||
% usage: \makefooter
|
% usage: \makefooter
|
||||||
\newcommand*{\makefooter}{}%
|
\newcommand*{\makefooter}{}%
|
||||||
|
|
||||||
% loads a style scheme
|
\newcommand*{\@loadmoderncvpackage}[3][]{%
|
||||||
\newcommand*{\moderncvstyle}[1]{
|
\begingroup\edef\x{\endgroup%
|
||||||
\RequirePackage{moderncvstyle#1}}
|
\noexpand\RequirePackage[#1]{moderncv#2\ifcase#3\or i\or ii\or iii\or iv\or v\or vi\or vii\or viii\or ix\or x\fi}%
|
||||||
|
}\x}
|
||||||
|
|
||||||
|
% loads a style variant (a combination of header, body and footer)
|
||||||
|
% usage: \moderncvstyle{<style variant name>}
|
||||||
|
\newcommand*{\moderncvstyle}[2][]{%
|
||||||
|
\RequirePackage[#1]{moderncvstyle#2}}
|
||||||
|
|
||||||
|
% loads a header variant
|
||||||
|
% usage: \moderncvhead[<optional head option>]{<header variant number>}
|
||||||
|
\newcommand*{\moderncvhead}[2][]{%
|
||||||
|
\@loadmoderncvpackage[#1]{head}{#2}}
|
||||||
|
|
||||||
|
% loads a body variant
|
||||||
|
% usage: \moderncvbody[<optional body option>]{<body variant number>}
|
||||||
|
\newcommand*{\moderncvbody}[2][]{%
|
||||||
|
\@loadmoderncvpackage[#1]{body}{#2}}
|
||||||
|
|
||||||
|
% loads a footer variant
|
||||||
|
% usage: \moderncvfoot[<optional foot option>]{<foot variant number>}
|
||||||
|
\newcommand*{\moderncvfoot}[2][]{%
|
||||||
|
\@loadmoderncvpackage[#1]{foot}{#2}}
|
||||||
|
|
||||||
% loads a color scheme
|
% loads a color scheme
|
||||||
\newcommand*{\moderncvcolor}[1]{
|
% usage: \moderncvcolor{<color scheme name>}
|
||||||
|
\newcommand*{\moderncvcolor}[1]{%
|
||||||
\RequirePackage{moderncvcolor#1}}
|
\RequirePackage{moderncvcolor#1}}
|
||||||
|
|
||||||
|
% loads an icons set
|
||||||
|
% usage: \moderncvicons{<icon set name>}
|
||||||
|
\newcommand*{\moderncvicons}[1]{%
|
||||||
|
\RequirePackage{moderncvicons#1}}
|
||||||
|
|
||||||
% recomputes all automatic lengths
|
% recomputes all automatic lengths
|
||||||
|
\newcommand*{\recomputeheadlengths}{\recomputecvheadlengths}
|
||||||
|
\newcommand*{\recomputebodylengths}{\recomputecvbodylengths}
|
||||||
|
\newcommand*{\recomputefootlengths}{\recomputecvfootlengths}
|
||||||
\newcommand*{\recomputelengths}{\recomputecvlengths}
|
\newcommand*{\recomputelengths}{\recomputecvlengths}
|
||||||
\AtBeginDocument{\recomputelengths{}}
|
\AtBeginDocument{\recomputelengths{}}
|
||||||
|
|
||||||
|
% creates a command if not yet defined
|
||||||
|
\newcommand*{\@initializecommand}[2]{%
|
||||||
|
\ifdefined#1
|
||||||
|
\renewcommand{#1}{#2}%
|
||||||
|
\else%
|
||||||
|
\newcommand*{#1}{#2}\fi}
|
||||||
|
|
||||||
% creates a length if not yet defined
|
% creates a length if not yet defined
|
||||||
\newcommand*{\@initializelength}[1]{%
|
\newcommand*{\@initializelength}[1]{%
|
||||||
\ifdefined#1\else\newlength{#1}\fi}
|
\ifdefined#1
|
||||||
|
\else%
|
||||||
|
\newlength{#1}\fi%
|
||||||
|
\setlength{#1}{0pt}}
|
||||||
|
|
||||||
|
% creates a box if not yet defined
|
||||||
|
\newcommand*{\@initializebox}[1]{%
|
||||||
|
\ifdefined#1
|
||||||
|
\savebox{#1}{}%
|
||||||
|
\else%
|
||||||
|
\newsavebox{#1}\fi}
|
||||||
|
|
||||||
|
% creates an if switch if not yet defined
|
||||||
|
\newcommand*{\@initializeif}[1]{%
|
||||||
|
% \ifdefined#1% not working due to the nested \if
|
||||||
|
% \else%
|
||||||
|
\newif#1%\fi
|
||||||
|
}
|
||||||
|
|
||||||
|
% custom strut for spacing; the first argument is the vertical offset of the strut, the second its total height
|
||||||
|
\newcommand*{\@moderncvstrut}[2]{%
|
||||||
|
\rule[-#1]{0pt}{#2}}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% resume design commands definitions
|
% resume design commands definitions
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% elements
|
% elements
|
||||||
\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
|
% defines one's picture (optional)
|
||||||
\newcommandx*{\photo}[3][1=64pt,2=0.4pt,usedefault]{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}% the 1st (optional) argument is the width of the photo, the 2nd (optional) argument is the thickness of the frame around it.
|
% usage: photo[<picture width>][<picture frame thickness>]{<picture filename>}
|
||||||
|
\NewDocumentCommand{\photo}{O{64pt}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}
|
||||||
\newcommand*{\quote}[1]{\def\@quote{#1}}
|
\newcommand*{\quote}[1]{\def\@quote{#1}}
|
||||||
|
|
||||||
% fonts
|
% fonts
|
||||||
|
|
@ -291,38 +508,60 @@
|
||||||
\newcommand*{\sectionfont}{}
|
\newcommand*{\sectionfont}{}
|
||||||
\newcommand*{\subsectionfont}{}
|
\newcommand*{\subsectionfont}{}
|
||||||
\newcommand*{\hintfont}{}
|
\newcommand*{\hintfont}{}
|
||||||
|
\newcommand*{\pagenumberfont}{\addressfont\itshape}
|
||||||
|
% fake small caps - cfr http://tex.stackexchange.com/questions/55664/fake-small-caps-with-xetex-fontspec
|
||||||
|
%\def\fakesc{\bgroup\obeyspaces\fakescaux}
|
||||||
|
%\def\fakescaux#1{\fakescauxii #1\relax\relax\egroup}
|
||||||
|
%\def\fakescauxii#1{%
|
||||||
|
%\ifx\relax#1\else \ifcat#1\@sptoken{} \expandafter\expandafter\expandafter\fakescauxii\else
|
||||||
|
%\ifnum`#1=\uccode`#1 {\normalsize #1}\else {\footnotesize \uppercase{#1}}\fi \expandafter\expandafter\expandafter\fakescauxii\expandafter\fi\fi}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\newcommand*{\namestyle}[1]{{\namefont#1}}
|
||||||
|
\NewDocumentCommand{\firstnamestyle}{+m}{{\namefont#1}}
|
||||||
|
\NewDocumentCommand{\lastnamestyle}{+m}{{\namefont#1}}
|
||||||
|
\newcommand*{\titlestyle}[1]{{\titlefont#1}}
|
||||||
|
\newcommand*{\addressstyle}[1]{{\addressfont#1}}
|
||||||
|
\newcommand*{\quotestyle}[1]{{\quotefont#1}}
|
||||||
|
\newcommand*{\sectionstyle}[1]{{\sectionfont#1}}
|
||||||
|
\newcommand*{\subsectionstyle}[1]{{\subsectionfont#1}}
|
||||||
|
\newcommand*{\hintstyle}[1]{{\hintfont#1}}
|
||||||
|
\newcommand*{\pagenumberstyle}[1]{{\pagenumberfont#1}}
|
||||||
|
|
||||||
% recompute all resume lengths
|
% recompute all resume lengths
|
||||||
\newcommand*{\recomputecvlengths}{}
|
\newcommand*{\recomputecvheadlengths}{}
|
||||||
|
\newcommand*{\recomputecvbodylengths}{}
|
||||||
|
\newcommand*{\recomputecvfootlengths}{}
|
||||||
|
\newcommand*{\recomputecvlengths}{%
|
||||||
|
\recomputecvheadlengths%
|
||||||
|
\recomputecvbodylengths%
|
||||||
|
\recomputecvfootlengths}
|
||||||
|
|
||||||
% internal maketitle command to issue a new line only when required
|
% internal maketitle command to issue a new line only when required
|
||||||
\newif\if@firstdetailselement\@firstdetailselementtrue
|
\newif\if@firstdetailselement\@firstdetailselementtrue
|
||||||
\newcommand*{\makenewline}{
|
\newcommand*{\makenewline}[1][0pt]{%
|
||||||
\if@firstdetailselement%
|
\if@firstdetailselement%
|
||||||
\strut% to ensure baseline alignment, e.g. with when put in the margin vs sections that also contains a \strut
|
\strut% to ensure baseline alignment, e.g. with when put in the margin vs sections that also contains a \strut
|
||||||
\else%
|
\else%
|
||||||
\\\fi%
|
\\[#1]\fi%
|
||||||
\@firstdetailselementfalse}
|
\@firstdetailselementfalse}
|
||||||
|
|
||||||
% makes the resume title
|
% makes the resume title
|
||||||
% usage: \makecvtitle
|
% usage: \makecvtitle
|
||||||
\newcommand*{\makecvtitle}{}%
|
\newcommand*{\makecvtitle}{%
|
||||||
|
\makecvhead%
|
||||||
% makes the resume footer
|
\makecvfoot}
|
||||||
% usage: \makecvfooter
|
\newcommand*{\makecvhead}{}
|
||||||
\newcommand*{\makecvfooter}{\makefooter}%
|
\newcommand*{\makecvfoot}{}
|
||||||
|
|
||||||
% makes a resume section
|
% makes a resume section
|
||||||
% usage: \section{<title>}
|
% usage: \section{<title>}
|
||||||
\newcommand*{\section}[1]{}
|
% identical starred and non-starred variants should be defined for compatibility with other packages (e.g. with natbib, that uses \section*{} for the bibliography header)
|
||||||
% starred variant, which is identical but defined to allow its use (e.g. for natbib compatibility, who uses \section*{} for the bibliography header)
|
\NewDocumentCommand{\section}{sm}{}
|
||||||
\RequirePackage{suffix}
|
|
||||||
\AtBeginDocument{\WithSuffix\newcommand\section*{\section}}
|
|
||||||
|
|
||||||
% makes a resume subsection
|
% makes a resume subsection
|
||||||
% usage: \subsection{title}
|
% usage: \subsection{title}
|
||||||
\newcommand*{\subsection}[1]{}
|
\NewDocumentCommand{\subsection}{sm}{}
|
||||||
\AtBeginDocument{\WithSuffix\newcommand\subsection*{\subsection}}
|
|
||||||
|
|
||||||
% makes a resume line with a header and a corresponding text
|
% makes a resume line with a header and a corresponding text
|
||||||
% usage: \cvitem[spacing]{header}{text}
|
% usage: \cvitem[spacing]{header}{text}
|
||||||
|
|
@ -332,16 +571,20 @@
|
||||||
% usage: \cvdoubleitem[spacing]{header1}{text1}{header2}{text2}
|
% usage: \cvdoubleitem[spacing]{header1}{text1}{header2}{text2}
|
||||||
\newcommand*{\cvdoubleitem}[5][.25em]{}
|
\newcommand*{\cvdoubleitem}[5][.25em]{}
|
||||||
|
|
||||||
|
% makes a resume line 3 headers and their corresponding text
|
||||||
|
% usage: \cvtripleitem[spacing]{header1}{text1}{header2}{text2}{header3}{text3}
|
||||||
|
\newcommand*{\cvtripleitem}[7][.1em]{}
|
||||||
|
|
||||||
% makes a resume line with a list item
|
% makes a resume line with a list item
|
||||||
% usage: \cvlistitem[label]{item}
|
% usage: \cvlistitem[spacing]{item}
|
||||||
\newcommand*{\cvlistitem}[2][\listitemsymbol]{}
|
\newcommand*{\cvlistitem}[2][\listitemsymbol]{}
|
||||||
|
|
||||||
% makes a resume line with 2 list items
|
% makes a resume line with 2 list items
|
||||||
% usage: \cvlistdoubleitem[label]{item1}{item2}
|
% usage: \cvlistdoubleitem[spacing]{item1}{item2}
|
||||||
\newcommand*{\cvlistdoubleitem}[3][\listitemsymbol]{}
|
\newcommand*{\cvlistdoubleitem}[3][\listitemsymbol]{}
|
||||||
|
|
||||||
% makes a typical resume job / education entry
|
% makes a typical resume job / education entry
|
||||||
% usage: \cventry[spacing]{years}{degree/job title}{institution/employer}{localization}{optionnal: grade/...}{optional: comment/job description}
|
% usage: \cventry[spacing]{years}{degree/job title}{institution/employer}{localization}{optional: grade/...}{optional: comment/job description}
|
||||||
\newcommand*{\cventry}[7][.25em]{}
|
\newcommand*{\cventry}[7][.25em]{}
|
||||||
|
|
||||||
% makes a resume entry with a proficiency comment
|
% makes a resume entry with a proficiency comment
|
||||||
|
|
@ -350,17 +593,39 @@
|
||||||
|
|
||||||
% makes a generic hyperlink
|
% makes a generic hyperlink
|
||||||
% usage: \link[optional text]{link}
|
% usage: \link[optional text]{link}
|
||||||
\newcommand*{\link}[2][]{%
|
% uses pdfmanagement-testphase when available, which provides url encoding of special characters
|
||||||
\ifthenelse{\equal{#1}{}}%
|
\NewDocumentCommand{\link}{O{}m}{%
|
||||||
{\href{#2}{#2}}%
|
\IfPDFManagementActiveTF{%
|
||||||
{\href{#2}{#1}}}
|
\ifthenelse{\equal{#1}{}}%
|
||||||
|
{\hrefurl[urlencode]{#2}{#2}}%
|
||||||
|
{\hrefurl[urlencode]{#2}{#1}}}{%
|
||||||
|
\ifthenelse{\equal{#1}{}}%
|
||||||
|
{\href{#2}{#2}}%
|
||||||
|
{\href{#2}{#1}}}}
|
||||||
|
|
||||||
% makes a http hyperlink
|
% makes a http hyperlink
|
||||||
% usage: \httplink[optional text]{link}
|
% usage: \httplink[optional text]{link}
|
||||||
\newcommand*{\httplink}[2][]{%
|
% uses pdfmanagement-testphase when available, which provides url encoding of special characters
|
||||||
\ifthenelse{\equal{#1}{}}%
|
\NewDocumentCommand{\httplink}{O{}m}{%
|
||||||
{\href{http://#2}{#2}}%
|
\IfPDFManagementActiveTF{%
|
||||||
{\href{http://#2}{#1}}}
|
\ifthenelse{\equal{#1}{}}%
|
||||||
|
{\hrefurl[urlencode]{http://#2}{#2}}%
|
||||||
|
{\hrefurl[urlencode]{http://#2}{#1}}}{%
|
||||||
|
\ifthenelse{\equal{#1}{}}%
|
||||||
|
{\href{http://#2}{#2}}%
|
||||||
|
{\href{http://#2}{#1}}}}
|
||||||
|
|
||||||
|
% makes an https hyperlink
|
||||||
|
% usage: \httpslink[optional text]{link}
|
||||||
|
% uses pdfmanagement-testphase when available, which provides url encoding of special characters
|
||||||
|
\NewDocumentCommand{\httpslink}{O{}m}{%
|
||||||
|
\IfPDFManagementActiveTF{%
|
||||||
|
\ifthenelse{\equal{#1}{}}%
|
||||||
|
{\hrefurl[urlencode]{https://#2}{#2}}%
|
||||||
|
{\hrefurl[urlencode]{https://#2}{#1}}}{%
|
||||||
|
\ifthenelse{\equal{#1}{}}%
|
||||||
|
{\href{https://#2}{#2}}%
|
||||||
|
{\href{https://#2}{#1}}}}
|
||||||
|
|
||||||
% makes an email hyperlink
|
% makes an email hyperlink
|
||||||
% usage: \emaillink[optional text]{link}
|
% usage: \emaillink[optional text]{link}
|
||||||
|
|
@ -369,6 +634,120 @@
|
||||||
{\href{mailto:#2}{#2}}%
|
{\href{mailto:#2}{#2}}%
|
||||||
{\href{mailto:#2}{#1}}}
|
{\href{mailto:#2}{#1}}}
|
||||||
|
|
||||||
|
% makes a tel hyperlink
|
||||||
|
% usage: \tellink[optional text]{link}
|
||||||
|
\newcommand*{\tellink}[2][]{%
|
||||||
|
\ifthenelse{\equal{#1}{}}%
|
||||||
|
{\expandafter\onlynumberslink\expandafter{#2}{#2}}%
|
||||||
|
{\expandafter\onlynumberslink\expandafter{#2}{#1}}}
|
||||||
|
|
||||||
|
\ExplSyntaxOn
|
||||||
|
\tl_new:N \l_onlynumberslink_tl
|
||||||
|
\cs_new:Npn \onlynumberslink #1 #2 {
|
||||||
|
\tl_set:Nn \l_onlynumberslink_tl {#1}
|
||||||
|
\regex_replace_all:nnN {[^0-9+]} {} \l_onlynumberslink_tl
|
||||||
|
\href{ tel\token_to_str:N : \tl_use:N \l_onlynumberslink_tl}{ #2 }
|
||||||
|
}
|
||||||
|
\ExplSyntaxOff
|
||||||
|
|
||||||
|
% cvcolumns environment, where every column is created through \cvcolumn
|
||||||
|
% usage: \begin{cvcolumns}
|
||||||
|
% \cvcolumn[width]{head}{content}
|
||||||
|
% \cvcolumn[width]{head}{content}
|
||||||
|
% ...
|
||||||
|
% \end{cvcolumns}
|
||||||
|
% where "width" is the width as a fraction of the line length (between 0 and 1), "head" is the column header and "content" its content
|
||||||
|
\newcounter{cvcolumnscounter}% counter for the number of columns
|
||||||
|
\newcounter{cvcolumnsautowidthcounter}% counter for the number of columns with no column width provided, and which will then be equally distributed
|
||||||
|
\newcounter{tmpiteratorcounter}% counter for any temporary purpose (e.g., iterating loops)
|
||||||
|
\newlength{\cvcolumnsdummywidth}\setlength{\cvcolumnsdummywidth}{1000pt}% dummy width for total width, in order to enable arithmetic (TeX has no float variables, only integer counters or lengths)
|
||||||
|
\newlength{\cvcolumnswidth}% total width available for head / content
|
||||||
|
\newlength{\cvcolumnsautowidth}% total width of columns with no explicit width provided
|
||||||
|
\newlength{\cvcolumnautowidth}% width of one of the columns with no explicit width provided (based on equal distribution of remaining space)
|
||||||
|
\newif\if@cvcolumns@head@empty% whether or not at least one of the columns has a header
|
||||||
|
\newenvironment*{cvcolumns}%
|
||||||
|
{% at environment opening: reset counters, lengths and ifs
|
||||||
|
\setcounter{cvcolumnscounter}{0}%
|
||||||
|
\setcounter{cvcolumnsautowidthcounter}{0}%
|
||||||
|
\setlength{\cvcolumnsautowidth}{\cvcolumnsdummywidth}%
|
||||||
|
\setlength{\cvcolumnautowidth}{0pt}%
|
||||||
|
\@cvcolumns@head@emptytrue\ignorespaces}%
|
||||||
|
{% at environment closing: typeset environment
|
||||||
|
% compute the width of each cvcolumn, considering a spacing of \separatorcolumnwidth and the columns with set width
|
||||||
|
\ifnum\thecvcolumnscounter>0%
|
||||||
|
\setlength{\cvcolumnswidth}{\maincolumnwidth-\value{cvcolumnscounter}\separatorcolumnwidth+\separatorcolumnwidth}%
|
||||||
|
\setlength{\cvcolumnautowidth}{\cvcolumnswidth*\ratio{\cvcolumnsautowidth}{\cvcolumnsdummywidth}/\value{cvcolumnsautowidthcounter}}\fi%
|
||||||
|
% pre-aggregate the tabular definition, heading and content (required before creating the tabular, as the tabular environment doesn't like loops --- probably because "&" generates a \endgroup)
|
||||||
|
% - the tabular definition is the aggregation of the different "\cvcolumn<i>@def" (by default "p{\cvcolumnautowidth}"), separated by "@{\hspace*{\separatorcolumnwidth}}"
|
||||||
|
% - the tabular heading is the aggregation of the different "\cvcolumn<i>@head", separated by "&"
|
||||||
|
% - the tabular content is the aggregation of the different "\cvcolumn<i>@content", separated by "&"
|
||||||
|
% to aggregate the different elements, \protected@edef or \g@addto@macro is required to avoid that \cvcolumns@def, -@head and -@content get expanded in subsequent redefinitions, which would cause errors due to the expansions of \hspace, of \subsectionstyle and possibly of user content/argument such as font commands
|
||||||
|
\def\cvcolumns@def{}%
|
||||||
|
\def\cvcolumns@head{}%
|
||||||
|
\def\cvcolumns@content{}%
|
||||||
|
\setcounter{tmpiteratorcounter}{0}%
|
||||||
|
% loop based on \g@addto@macro
|
||||||
|
\loop\ifnum\thetmpiteratorcounter<\thecvcolumnscounter%
|
||||||
|
\ifnum\thetmpiteratorcounter=0\else%
|
||||||
|
\g@addto@macro\cvcolumns@def{@{\hspace*{\separatorcolumnwidth}}}%
|
||||||
|
\g@addto@macro\cvcolumns@head{&}%
|
||||||
|
\g@addto@macro\cvcolumns@content{&}\fi%
|
||||||
|
% \expandafter\g@addto@macro\expandafter\cvcolumns@def\expandafter{\csname cvcolumn\roman{tmpiteratorcounter}@def\endcsname}% % this creates issues with the colortbl" package (loaded by xcolor when passing the "table" option) as the column definitions passed to \begin{tabular} contains \cvcolumn<i>@def references that it doesn't understand; the next 2 lines expand \cvcolumn@def to the point it doesn't
|
||||||
|
\edef\tmpcvcolumn@def{\csname cvcolumn\roman{tmpiteratorcounter}@def\endcsname}%
|
||||||
|
\expandafter\g@addto@macro\expandafter\cvcolumns@def\expandafter{\tmpcvcolumn@def}%
|
||||||
|
\expandafter\g@addto@macro\expandafter\cvcolumns@head\expandafter{\csname cvcolumn\roman{tmpiteratorcounter}@head\endcsname}%
|
||||||
|
\expandafter\g@addto@macro\expandafter\cvcolumns@content\expandafter{\csname cvcolumn\roman{tmpiteratorcounter}@content\endcsname}%
|
||||||
|
\stepcounter{tmpiteratorcounter}%
|
||||||
|
\repeat%
|
||||||
|
% % same loop based on \protected@edef
|
||||||
|
% \loop\ifnum\thetmpiteratorcounter<\thecvcolumnscounter%
|
||||||
|
% \ifnum\thetmpiteratorcounter=0\else%
|
||||||
|
% \protected@edef\cvcolumns@def{\cvcolumns@def @{\hspace*{\separatorcolumnwidth}}}%
|
||||||
|
% \protected@edef\cvcolumns@head{\cvcolumns@head &}%
|
||||||
|
% \protected@edef\cvcolumns@content{\cvcolumns@content &}\fi%
|
||||||
|
% \expandafter\protected@edef\expandafter\cvcolumns@def\expandafter{\expandafter\cvcolumns@def\expandafter\protect\csname cvcolumn\roman{tmpiteratorcounter}@def\endcsname}%
|
||||||
|
% \expandafter\protected@edef\expandafter\cvcolumns@head\expandafter{\expandafter\cvcolumns@head\expandafter\protect\csname cvcolumn\roman{tmpiteratorcounter}@head\endcsname}%
|
||||||
|
% \expandafter\protected@edef\expandafter\cvcolumns@content\expandafter{\expandafter\cvcolumns@content\expandafter\protect\csname cvcolumn\roman{tmpiteratorcounter}@content\endcsname}%
|
||||||
|
% \stepcounter{tmpiteratorcounter}%
|
||||||
|
% \repeat%
|
||||||
|
% create the tabular
|
||||||
|
\cvitem{}{%
|
||||||
|
% \begin{tabular}{\cvcolumns@def}% this conflicts with the "colortbl" package (loaded by xcolor when passing the "table" option), and requires the below 2 lines to expand \cvcolumns@def
|
||||||
|
\def\begincvcolumns{\begin{tabular}[t]}% "[t]" is required for some body styles; the default alignment is "[c]"
|
||||||
|
\expandafter\begincvcolumns\expandafter{\cvcolumns@def}%
|
||||||
|
\if@cvcolumns@head@empty\else%
|
||||||
|
\cvcolumns@head%\\[-.8em]%
|
||||||
|
% {\color{color1}\rule{\maincolumnwidth}{.25pt}}%
|
||||||
|
\\\fi%
|
||||||
|
\cvcolumns@content%
|
||||||
|
\end{tabular}}}
|
||||||
|
|
||||||
|
% cvcolumn command, to create a column inside a cvcolumns environment
|
||||||
|
% usage: \cvcolumn[width]{head}{content}
|
||||||
|
% where "width" is the width as a fraction of the line length (between 0 and 1), "head" is the column header and "content" its content ("head" and "content" can contain "\\", "\newline" or any other paragraph command such as "itemize")
|
||||||
|
\newcommand*{\cvcolumn}[3][\cvcolumnautowidth]{%
|
||||||
|
% \def\cvcolumn@width{}%
|
||||||
|
\ifthenelse{\equal{#1}{\cvcolumnautowidth}}%
|
||||||
|
{% if no width fraction is provided, count this column as auto-adjusted and set its width to \cvcolumnsautowidth
|
||||||
|
\stepcounter{cvcolumnsautowidthcounter}%
|
||||||
|
\expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@def\endcsname{p{\cvcolumnautowidth}}%
|
||||||
|
\expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@head\endcsname{\protect\parbox[b]{\cvcolumnautowidth}{\protect\subsectionstyle{#2}}}}%
|
||||||
|
{% if a width is provided, set the width of the column to it and decrease the available space for auto-adjusted columns
|
||||||
|
\addtolength{\cvcolumnsautowidth}{-#1\cvcolumnsdummywidth}%
|
||||||
|
\expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@def\endcsname{p{#1\cvcolumnswidth}}%
|
||||||
|
\expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@head\endcsname{\protect\parbox[b]{#1\cvcolumnswidth}{\protect\subsectionstyle{#2}}}}%
|
||||||
|
\ifthenelse{\equal{#2}{}}{}{\@cvcolumns@head@emptyfalse}%
|
||||||
|
\expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@content\endcsname{\protect\cvcolumncell{#3}}%
|
||||||
|
\stepcounter{cvcolumnscounter}%
|
||||||
|
\ignorespaces}
|
||||||
|
|
||||||
|
% internal cvcolumncell command, that enables a cvcolumn cell to contain paragraph commands (lists, newlines, etc)
|
||||||
|
\newcommand*{\cvcolumncell}[1]{{% put cell inside a group, so that command redefinitions are only local
|
||||||
|
% roughly restore \\ to its regular definition (outside of tabular)
|
||||||
|
\renewcommand*{\\}{\newline}%
|
||||||
|
% enclose the contents of the cell inside a vertical box, to allow paragraph commands
|
||||||
|
\protect\vtop{#1}}}
|
||||||
|
|
||||||
% thebibliography environment, for use with BibTeX and possibly multibib
|
% thebibliography environment, for use with BibTeX and possibly multibib
|
||||||
\newlength{\bibindent}
|
\newlength{\bibindent}
|
||||||
\setlength{\bibindent}{1.5em}
|
\setlength{\bibindent}{1.5em}
|
||||||
|
|
@ -382,6 +761,10 @@
|
||||||
\newenvironment{thebibliography}[1]{}{}
|
\newenvironment{thebibliography}[1]{}{}
|
||||||
\newcommand*{\newblock}{\hskip .11em\@plus.33em\@minus.07em}
|
\newcommand*{\newblock}{\hskip .11em\@plus.33em\@minus.07em}
|
||||||
\let\@openbib@code\@empty
|
\let\@openbib@code\@empty
|
||||||
|
%% fix a bug (hardcoded bib label) in \@bibitem
|
||||||
|
%\renewcommand\@bibitem[1]{%
|
||||||
|
% \item\if@filesw \immediate\write\@auxout
|
||||||
|
% {\string\bibcite{#1}{\theenumiv}}\fi\ignorespaces}% replaced "\the\value{\@listctr}" with "\theenumiv"
|
||||||
|
|
||||||
% itemize, enumerate and description environment
|
% itemize, enumerate and description environment
|
||||||
\setlength{\leftmargini} {1em}
|
\setlength{\leftmargini} {1em}
|
||||||
|
|
@ -406,15 +789,6 @@
|
||||||
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
|
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
|
||||||
% description label
|
% description label
|
||||||
\newcommand*\descriptionlabel[1]{\hspace\labelsep\normalfont\bfseries#1}
|
\newcommand*\descriptionlabel[1]{\hspace\labelsep\normalfont\bfseries#1}
|
||||||
% hooks to adjust spacing (idea by Jakob Schiotz; see http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty)
|
|
||||||
\RequirePackage{tweaklist}% distributed with moderncv, not found on ctan and slightly modified
|
|
||||||
\renewcommand*{\itemhook}{
|
|
||||||
\setlength{\topsep}{0pt}%
|
|
||||||
\setlength{\parsep}{0pt}%
|
|
||||||
\setlength{\parskip}{0pt}%
|
|
||||||
\setlength{\itemsep}{0pt}}
|
|
||||||
\renewcommand*{\enumhook}{\itemhook{}}
|
|
||||||
\renewcommand*{\deschook}{\itemhook{}}
|
|
||||||
|
|
||||||
% classical \today definition
|
% classical \today definition
|
||||||
\def\today{\ifcase\month\or
|
\def\today{\ifcase\month\or
|
||||||
|
|
@ -434,24 +808,32 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% elements
|
% elements
|
||||||
\newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
|
\newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
|
||||||
\renewcommand*{\date}[1]{\def\@date{#1}}
|
\renewcommand*{\date}[1]{\def\@date{#1}}\date{\today}
|
||||||
|
\newcommand*{\subject}[1]{\def\@subject{#1}}
|
||||||
\newcommand*{\opening}[1]{\def\@opening{#1}}
|
\newcommand*{\opening}[1]{\def\@opening{#1}}
|
||||||
\newcommand*{\closing}[1]{\def\@closing{#1}}
|
\newcommand*{\closing}[1]{\def\@closing{#1}}
|
||||||
|
\newcommand*{\signature}[2]{\def\@signature{\includegraphics[scale=#1]{#2}}}
|
||||||
\newcommand*{\enclosure}[2][]{%
|
\newcommand*{\enclosure}[2][]{%
|
||||||
% if an optional argument is provided, use it to redefine \enclname
|
% if an optional argument is provided, use it to redefine \enclname
|
||||||
\ifthenelse{\equal{#1}{}}{}{\renewcommand*{\enclname}{#1}}%
|
\ifthenelse{\equal{#1}{}}{}{\renewcommand*{\enclname}{#1}}%
|
||||||
\def\@enclosure{#2}}
|
\def\@enclosure{#2}}
|
||||||
|
|
||||||
% recompute all letter lengths
|
% recompute all letter lengths
|
||||||
\newcommand*{\recomputeletterlengths}{}
|
\newcommand*{\recomputeletterheadlengths}{}
|
||||||
|
\newcommand*{\recomputeletterbodylengths}{}
|
||||||
|
\newcommand*{\recomputeletterfootlengths}{}
|
||||||
|
\newcommand*{\recomputeletterlengths}{%
|
||||||
|
\recomputeletterheadlengths%
|
||||||
|
\recomputeletterbodylengths%
|
||||||
|
\recomputeletterfootlengths}
|
||||||
|
|
||||||
% makes the letter title
|
% makes the letter title
|
||||||
% usage: \makelettertitle
|
% usage: \makelettertitle
|
||||||
\newcommand*{\makelettertitle}{}
|
\newcommand*{\makelettertitle}{%
|
||||||
|
\makeletterhead%
|
||||||
% makes the letter footer
|
\makeletterfoot}
|
||||||
% usage: \makeletterfooter
|
\newcommand*{\makeletterhead}{}
|
||||||
\newcommand*{\makeletterfooter}{\makefooter}
|
\newcommand*{\makeletterfoot}{}
|
||||||
|
|
||||||
% makes the letter closing
|
% makes the letter closing
|
||||||
% usage: \makeletterclosing
|
% usage: \makeletterclosing
|
||||||
|
|
|
||||||
197
moderncvbodyi.sty
Normal file
197
moderncvbodyi.sty
Normal file
|
|
@ -0,0 +1,197 @@
|
||||||
|
%% start of file `moderncvbodyi.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvbodyi}[2026-01-31 v2.5.1 modern curriculum vitae and letter body variant: 1]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% provides the commands for the skillmatrix as well as the command
|
||||||
|
% \recompute@cvskillmatrix@lengths
|
||||||
|
\RequirePackage[moderncvbodyi]{moderncvskillmatrix}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall body definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\sectionfont}{\Large\mdseries\upshape}
|
||||||
|
\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
|
||||||
|
\renewcommand*{\hintfont}{}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
|
||||||
|
\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
|
||||||
|
\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume body definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
% used by \cvitem (and all children command)
|
||||||
|
\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.175\textwidth}
|
||||||
|
\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
|
||||||
|
\@initializelength{\maincolumnwidth}
|
||||||
|
% used by \cvdoubleitem
|
||||||
|
\@initializelength{\doubleitemcolumnwidth}
|
||||||
|
% used by \cvtripleitem
|
||||||
|
\@initializelength{\tripleitemcolumnwidth}
|
||||||
|
% used by \cvlistitem
|
||||||
|
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
|
||||||
|
\@initializelength{\listitemcolumnwidth}
|
||||||
|
% used by \cvlistdoubleitem
|
||||||
|
\@initializelength{\listdoubleitemcolumnwidth}
|
||||||
|
\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
|
||||||
|
% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
|
||||||
|
\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputecvbodylengths}{%
|
||||||
|
% body lengths
|
||||||
|
\setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\hintscolumnwidth}%
|
||||||
|
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
|
||||||
|
\recompute@cvskillmatrix@lengths
|
||||||
|
% regular lengths
|
||||||
|
\setlength{\parskip}{0\p@}}
|
||||||
|
|
||||||
|
|
||||||
|
\@initializelength{\baseletterheight}
|
||||||
|
\settoheight{\baseletterheight}{\sectionstyle{o}}
|
||||||
|
\setlength{\baseletterheight}{\baseletterheight-0.95ex}
|
||||||
|
\RenewDocumentCommand{\section}{sm}{%
|
||||||
|
\par\addvspace{2.5ex}%
|
||||||
|
\phantomsection{}% reset the anchor for hyperrefs
|
||||||
|
\addcontentsline{toc}{section}{#2}%
|
||||||
|
\cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{bodyrulecolor}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
|
||||||
|
\par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
|
||||||
|
|
||||||
|
\RenewDocumentCommand{\subsection}{sm}{%
|
||||||
|
\par\addvspace{1ex}%
|
||||||
|
\phantomsection{}% reset the anchor for hyperrefs
|
||||||
|
\addcontentsline{toc}{subsection}{#2}%
|
||||||
|
\cvitem[0ex]{}{\strut\subsectionstyle{#2}}%
|
||||||
|
\par\nobreak\addvspace{.5ex}\@afterheading}% to avoid a pagebreak after the heading
|
||||||
|
|
||||||
|
\renewcommand*{\cvitem}[3][.25em]{%
|
||||||
|
\begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
|
||||||
|
\raggedleft\hintstyle{#2} &{#3}%
|
||||||
|
\end{tabular}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvdoubleitem}[5][.25em]{%
|
||||||
|
\cvitem[#1]{#2}{%
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}#3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
|
||||||
|
\hspace*{\separatorcolumnwidth}%
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvtripleitem}[7][.1em]{%
|
||||||
|
\cvitem[#1]{#2}{%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
|
||||||
|
\hspace*{\separatorcolumnwidth}%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}%
|
||||||
|
\hspace*{\separatorcolumnwidth}%
|
||||||
|
\begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}%
|
||||||
|
\hspace*{\separatorcolumnwidth}%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}}
|
||||||
|
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistitem}[2][.25em]{%
|
||||||
|
\cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
|
||||||
|
\cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\ifthenelse{\equal{#3}{}}%
|
||||||
|
{}%
|
||||||
|
{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cventry}[7][.25em]{%
|
||||||
|
\cvitem[#1]{#2}{%
|
||||||
|
{\bfseries#3}%
|
||||||
|
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
|
||||||
|
\ifthenelse{\equal{#5}{}}{}{, #5}%
|
||||||
|
\ifthenelse{\equal{#6}{}}{}{, #6}%
|
||||||
|
\strut%
|
||||||
|
\ifx&%
|
||||||
|
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
|
||||||
|
|
||||||
|
\@initializebox{\cvitemwithcommentbox}
|
||||||
|
\@initializelength{\cvitemwithcommentskilllength}
|
||||||
|
\@initializelength{\cvitemwithcommentcommentlength}
|
||||||
|
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
|
||||||
|
\savebox{\cvitemwithcommentbox}{{#3}}%
|
||||||
|
\setlength{\cvitemwithcommentskilllength}{\widthof{\usebox{\cvitemwithcommentbox}}}%
|
||||||
|
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentskilllength}%
|
||||||
|
\cvitem[#1]{#2}{%
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentskilllength}\usebox{\cvitemwithcommentbox}\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
|
||||||
|
|
||||||
|
\renewenvironment{thebibliography}[1]%
|
||||||
|
{%
|
||||||
|
\bibliographyhead{\refname}%
|
||||||
|
% \small%
|
||||||
|
\begin{list}{\bibliographyitemlabel}%
|
||||||
|
{%
|
||||||
|
\setlength{\topsep}{0pt}%
|
||||||
|
\setlength{\labelwidth}{\hintscolumnwidth}%
|
||||||
|
\setlength{\labelsep}{\separatorcolumnwidth}%
|
||||||
|
\leftmargin\labelwidth%
|
||||||
|
\advance\leftmargin\labelsep%
|
||||||
|
\@openbib@code%
|
||||||
|
\usecounter{enumiv}%
|
||||||
|
\let\p@enumiv\@empty%
|
||||||
|
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
||||||
|
\sloppy%
|
||||||
|
\clubpenalty4000%\@clubpenalty \clubpenalty%
|
||||||
|
\widowpenalty4000%
|
||||||
|
\sfcode`\.\@m%
|
||||||
|
\sfcode `\=1000\relax}%
|
||||||
|
{%
|
||||||
|
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
|
||||||
|
\end{list}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter style definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputeletterbodylengths}{%
|
||||||
|
\recomputecvlengths%
|
||||||
|
\setlength{\parskip}{6\p@}}
|
||||||
|
|
||||||
|
\renewcommand*{\makeletterclosing}{%
|
||||||
|
\@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
|
||||||
|
\ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
|
||||||
|
{\bfseries\@firstname~\@lastname}%
|
||||||
|
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
||||||
|
\\%
|
||||||
|
\vfil%
|
||||||
|
{\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
|
||||||
|
\vfil}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvbodyi.sty'.
|
||||||
1
moderncvbodyii.sty
Symbolic link
1
moderncvbodyii.sty
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
moderncvbodyi.sty
|
||||||
261
moderncvbodyiii.sty
Normal file
261
moderncvbodyiii.sty
Normal file
|
|
@ -0,0 +1,261 @@
|
||||||
|
%% start of file `moderncvbodyiii.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvbodyiii}[2026-01-31 v2.5.1 modern curriculum vitae and letter body variant: 3]
|
||||||
|
|
||||||
|
% rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
|
||||||
|
\@initializeif{\if@fullrules}\@fullrulesfalse
|
||||||
|
\DeclareOption{fullrules} {\@fullrulestrue\@shortrulesfalse\@mixedrulesfalse\@norulesfalse}
|
||||||
|
\@initializeif{\if@shortrules}\@shortrulesfalse
|
||||||
|
\DeclareOption{shortrules}{\@fullrulesfalse\@shortrulestrue\@mixedrulesfalse\@norulesfalse}
|
||||||
|
\@initializeif{\if@mixedrules}\@mixedrulesfalse
|
||||||
|
\DeclareOption{mixedrules}{\@fullrulesfalse\@shortrulesfalse\@mixedrulestrue\@norulesfalse}
|
||||||
|
\@initializeif{\if@norules}\@norulesfalse
|
||||||
|
\DeclareOption{norules} {\@fullrulesfalse\@shortrulesfalse\@mixedrulesfalse\@norulestrue}
|
||||||
|
|
||||||
|
% section alignment options: "left" (default), "center" or "right"
|
||||||
|
\@initializeif{\if@left}\@leftfalse
|
||||||
|
\DeclareOption{left} {\@lefttrue\@centerfalse\@rightfalse}
|
||||||
|
\@initializeif{\if@center}\@centerfalse
|
||||||
|
\DeclareOption{center} {\@leftfalse\@centertrue\@rightfalse}
|
||||||
|
\@initializeif{\if@right}\@rightfalse
|
||||||
|
\DeclareOption{right} {\@leftfalse\@centerfalse\@righttrue}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{mixedrules,left}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% provides the commands for the skillmatrix as well as the command
|
||||||
|
% \recompute@cvskillmatrix@lengths
|
||||||
|
\RequirePackage[moderncvbodyiii]{moderncvskillmatrix}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall body definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\sectionfont}{%
|
||||||
|
\if@norules%
|
||||||
|
\Large\bfseries\scshape%
|
||||||
|
\else%
|
||||||
|
\Large\bfseries\upshape\fi}
|
||||||
|
\renewcommand*{\subsectionfont}{%
|
||||||
|
\if@norules%
|
||||||
|
\large\mdseries\itshape%
|
||||||
|
\else%
|
||||||
|
\large\upshape\fontseries{sb}\selectfont\fi}
|
||||||
|
\renewcommand*{\hintfont}{\bfseries}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\sectionstyle}[1]{{%
|
||||||
|
\if@center\centering\else%
|
||||||
|
\if@right\raggedleft\fi\fi%
|
||||||
|
\sectionfont\textcolor{sectioncolor}{#1}%
|
||||||
|
\if@shortrules\else%
|
||||||
|
\par\fi}}
|
||||||
|
\renewcommand*{\subsectionstyle}[1]{{%
|
||||||
|
\if@center\centering\else%
|
||||||
|
\if@right\raggedleft\fi\fi%
|
||||||
|
\subsectionfont\textcolor{subsectioncolor}{#1}%
|
||||||
|
\if@shortrules\else\if@mixedrules\else%
|
||||||
|
\par\fi\fi}}
|
||||||
|
\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume body definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
% used by \cvitem (and all children command)
|
||||||
|
\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.3\textwidth}
|
||||||
|
\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
|
||||||
|
\@initializelength{\maincolumnwidth}
|
||||||
|
% used by \cvdoubleitem
|
||||||
|
\@initializelength{\doubleitemcolumnwidth}
|
||||||
|
% used by \cvtripleitem
|
||||||
|
\@initializelength{\tripleitemcolumnwidth}
|
||||||
|
% used by \cvlistitem
|
||||||
|
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
|
||||||
|
\@initializelength{\listitemcolumnwidth}
|
||||||
|
% used by \cvlistdoubleitem
|
||||||
|
\@initializelength{\listdoubleitemcolumnwidth}
|
||||||
|
\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputecvbodylengths}{%
|
||||||
|
% body lengths
|
||||||
|
\setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip}%
|
||||||
|
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
|
||||||
|
\recompute@cvskillmatrix@lengths
|
||||||
|
% regular lengths
|
||||||
|
\setlength{\parskip}{0\p@}}
|
||||||
|
|
||||||
|
\RenewDocumentCommand{\section}{sm}{%
|
||||||
|
\par\addvspace{2.5ex}%
|
||||||
|
\phantomsection{}% reset the anchor for hyperrefs
|
||||||
|
\addcontentsline{toc}{section}{#2}%
|
||||||
|
\if@left\else\if@fullrules\else\if@mixedrules\else%
|
||||||
|
\sectionrule\fi\fi\fi%
|
||||||
|
\strut\sectionstyle{#2}%
|
||||||
|
\if@fullrules%
|
||||||
|
\sectionrule%
|
||||||
|
\else\if@mixedrules%
|
||||||
|
\sectionrule%
|
||||||
|
\else\if@right\else%
|
||||||
|
\sectionrule\fi\fi\fi%
|
||||||
|
\par\nobreak\addvspace{1ex}\@afterheading}
|
||||||
|
|
||||||
|
\RenewDocumentCommand{\subsection}{sm}{%
|
||||||
|
\par\addvspace{1ex}%
|
||||||
|
\phantomsection{}%
|
||||||
|
\addcontentsline{toc}{subsection}{#2}%
|
||||||
|
\if@left\else\if@fullrules\else%
|
||||||
|
\subsectionrule\fi\fi%
|
||||||
|
\strut\subsectionstyle{#2}%
|
||||||
|
\if@fullrules%
|
||||||
|
\subsectionrule%
|
||||||
|
\else\if@right\else%
|
||||||
|
\subsectionrule\fi\fi%
|
||||||
|
\par\nobreak\addvspace{0.5ex}\@afterheading}
|
||||||
|
|
||||||
|
\newcommand*{\sectionrule}{}
|
||||||
|
\newcommand*{\subsectionrule}{}
|
||||||
|
\if@fullrules%
|
||||||
|
\renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
|
||||||
|
\renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}
|
||||||
|
\if@shortrules%
|
||||||
|
\renewcommand*{\sectionrule}{\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
|
||||||
|
\renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
|
||||||
|
\if@mixedrules%
|
||||||
|
\renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
|
||||||
|
\renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
|
||||||
|
\if@norules%
|
||||||
|
\renewcommand*{\sectionrule}{}
|
||||||
|
\renewcommand*{\subsectionrule}{}\fi
|
||||||
|
|
||||||
|
\renewcommand*{\cvitem}[3][.25em]{%
|
||||||
|
\ifstrempty{#2}{}{\hintstyle{#2}: }{#3}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvdoubleitem}[5][.25em]{%
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifstrempty{#4}{}{\hintstyle{#4}: }#5\end{minipage}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvtripleitem}[7][.1em]{%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\ifstrempty{#6}{}{\hintstyle{#6}: }#7\end{minipage}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistitem}[2][.25em]{%
|
||||||
|
\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
|
||||||
|
\cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\ifstrempty{#3}%
|
||||||
|
{}%
|
||||||
|
{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cventry}[7][.25em]{
|
||||||
|
\begin{tabular*}{\maincolumnwidth}{l@{\extracolsep{\fill}}r}%
|
||||||
|
% skip the company name and location line if both are empty, allowing one to show multiple roles within the same company without repeating it
|
||||||
|
\ifboolexpr{%
|
||||||
|
test {\ifstrempty{#4}}
|
||||||
|
and
|
||||||
|
test {\ifstrempty{#5}}}%
|
||||||
|
{}%
|
||||||
|
{{\bfseries #4} & {\bfseries #5}\\}%
|
||||||
|
{\itshape #3\ifstrempty{#6}{}{, #6}} & {\itshape #2}\\%
|
||||||
|
\end{tabular*}%
|
||||||
|
\ifx&%
|
||||||
|
\else{\\%
|
||||||
|
\begin{minipage}{\maincolumnwidth}%
|
||||||
|
\small#7%
|
||||||
|
\end{minipage}}\fi%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\@initializebox{\cvitemwithcommentmainbox}
|
||||||
|
\@initializelength{\cvitemwithcommentmainlength}
|
||||||
|
\@initializelength{\cvitemwithcommentcommentlength}
|
||||||
|
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
|
||||||
|
\savebox{\cvitemwithcommentmainbox}{\ifstrempty{#2}{}{\hintstyle{#2}: }#3}%
|
||||||
|
\setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
|
||||||
|
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewenvironment{thebibliography}[1]%
|
||||||
|
{%
|
||||||
|
\bibliographyhead{\refname}%
|
||||||
|
% \small%
|
||||||
|
\begin{list}{\bibliographyitemlabel}%
|
||||||
|
{%
|
||||||
|
\setlength{\topsep}{0pt}%
|
||||||
|
\setlength{\labelwidth}{0pt}%
|
||||||
|
\ifthenelse{\equal{\bibliographyitemlabel}{}}%
|
||||||
|
{\setlength{\labelsep}{0pt}}%
|
||||||
|
{\setlength{\labelsep}{\separatorcolumnwidth}}%
|
||||||
|
\leftmargin\labelwidth%
|
||||||
|
\advance\leftmargin\labelsep%
|
||||||
|
\@openbib@code%
|
||||||
|
\usecounter{enumiv}%
|
||||||
|
\let\p@enumiv\@empty%
|
||||||
|
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
||||||
|
\sloppy%
|
||||||
|
\clubpenalty4000%\@clubpenalty \clubpenalty%
|
||||||
|
\widowpenalty4000%
|
||||||
|
\sfcode`\.\@m%
|
||||||
|
\sfcode `\=1000\relax}%
|
||||||
|
{%
|
||||||
|
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
|
||||||
|
\end{list}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter style definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputeletterbodylengths}{%
|
||||||
|
\recomputecvbodylengths%
|
||||||
|
\setlength{\parskip}{6\p@}}
|
||||||
|
|
||||||
|
\renewcommand*{\makeletterclosing}{%
|
||||||
|
\@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
|
||||||
|
\ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
|
||||||
|
{\bfseries\@firstname~\@lastname}%
|
||||||
|
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
||||||
|
\\%
|
||||||
|
\vfil%
|
||||||
|
{\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
|
||||||
|
\vfil}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvbodyiii.sty'.
|
||||||
201
moderncvbodyiv.sty
Normal file
201
moderncvbodyiv.sty
Normal file
|
|
@ -0,0 +1,201 @@
|
||||||
|
%% start of file `moderncvbodyiv.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvbodyiv}[2026-01-31 v2.5.1 modern curriculum vitae and letter body variant: 4]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% provides the commands for the skillmatrix as well as the command
|
||||||
|
% \recompute@cvskillmatrix@lengths
|
||||||
|
\RequirePackage[moderncvbodyiv]{moderncvskillmatrix}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall body definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\sectionfont}{\Large\bfseries\upshape}
|
||||||
|
\renewcommand*{\subsectionfont}{\large\bfseries\itshape}
|
||||||
|
\renewcommand*{\hintfont}{\bfseries}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
|
||||||
|
\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
|
||||||
|
\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume body definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
% used by \cvitem (and all children command)
|
||||||
|
\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.3\textwidth}
|
||||||
|
\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
|
||||||
|
\@initializelength{\maincolumnwidth}
|
||||||
|
% used by \cvdoubleitem
|
||||||
|
\@initializelength{\doubleitemcolumnwidth}
|
||||||
|
% used by \cvlistitem
|
||||||
|
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
|
||||||
|
\@initializelength{\listitemcolumnwidth}
|
||||||
|
% used by \cvlistdoubleitem
|
||||||
|
\@initializelength{\listdoubleitemcolumnwidth}
|
||||||
|
% used by \cvtripleitem
|
||||||
|
\@initializelength{\tripleitemcolumnwidth}
|
||||||
|
\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
|
||||||
|
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputecvbodylengths}{%
|
||||||
|
% body lengths
|
||||||
|
\setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip}%
|
||||||
|
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
|
||||||
|
\recompute@cvskillmatrix@lengths
|
||||||
|
% regular lengths
|
||||||
|
\setlength{\parskip}{0\p@}}
|
||||||
|
|
||||||
|
\RenewDocumentCommand{\section}{sm}{%
|
||||||
|
\par\addvspace{2.5ex}%
|
||||||
|
\phantomsection{}% reset the anchor for hyperrefs
|
||||||
|
\addcontentsline{toc}{section}{#2}%
|
||||||
|
\strut\sectionstyle{#2}%
|
||||||
|
\par\nobreak\addvspace{1ex}\@afterheading}
|
||||||
|
|
||||||
|
\RenewDocumentCommand{\subsection}{sm}{%
|
||||||
|
\par\addvspace{1ex}%
|
||||||
|
\phantomsection{}%
|
||||||
|
\addcontentsline{toc}{subsection}{#2}%
|
||||||
|
\strut\subsectionstyle{#2}%
|
||||||
|
\par\nobreak\addvspace{0.5ex}\@afterheading}
|
||||||
|
|
||||||
|
\renewcommand*{\cvitem}[3][.25em]{%
|
||||||
|
\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvdoubleitem}[5][.25em]{%
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvtripleitem}[7][.1em]{%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\ifthenelse{\equal{#6}{}}{}{\hintstyle{#6}: }#7\end{minipage}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistitem}[2][.25em]{%
|
||||||
|
\cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
|
||||||
|
\cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\ifthenelse{\equal{#3}{}}%
|
||||||
|
{}%
|
||||||
|
{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
|
||||||
|
|
||||||
|
\@initializebox{\cventryyearbox}
|
||||||
|
\@initializelength{\cventrytitleboxwidth}
|
||||||
|
\renewcommand*{\cventry}[7][.25em]{%
|
||||||
|
\savebox{\cventryyearbox}{%
|
||||||
|
\hspace*{2\separatorcolumnwidth}%
|
||||||
|
\hintstyle{#2}}%
|
||||||
|
\setlength{\cventrytitleboxwidth}{\widthof{\usebox{\cventryyearbox}}}%
|
||||||
|
\setlength{\cventrytitleboxwidth}{\maincolumnwidth-\cventrytitleboxwidth}%
|
||||||
|
\begin{minipage}{\maincolumnwidth}%
|
||||||
|
\parbox[t]{\cventrytitleboxwidth}{%
|
||||||
|
\strut%
|
||||||
|
{\bfseries#3}%
|
||||||
|
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
|
||||||
|
\ifthenelse{\equal{#5}{}}{}{, #5}%
|
||||||
|
\ifthenelse{\equal{#6}{}}{}{, #6}%
|
||||||
|
.\strut}%
|
||||||
|
\usebox{\cventryyearbox}%
|
||||||
|
\end{minipage}\strut%
|
||||||
|
\ifx&%
|
||||||
|
\else{%
|
||||||
|
\newline{}%
|
||||||
|
\strut%
|
||||||
|
\begin{minipage}[t]{\maincolumnwidth}%
|
||||||
|
\small%
|
||||||
|
#7%
|
||||||
|
\end{minipage}}\fi%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\@initializebox{\cvitemwithcommentmainbox}
|
||||||
|
\@initializelength{\cvitemwithcommentmainlength}
|
||||||
|
\@initializelength{\cvitemwithcommentcommentlength}
|
||||||
|
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
|
||||||
|
\savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}%
|
||||||
|
\setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
|
||||||
|
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewenvironment{thebibliography}[1]%
|
||||||
|
{%
|
||||||
|
\bibliographyhead{\refname}%
|
||||||
|
% \small%
|
||||||
|
\begin{list}{\bibliographyitemlabel}%
|
||||||
|
{%
|
||||||
|
\setlength{\topsep}{0pt}%
|
||||||
|
\setlength{\labelwidth}{\hintscolumnwidth}%
|
||||||
|
\setlength{\labelsep}{\separatorcolumnwidth}%
|
||||||
|
\leftmargin\labelwidth%
|
||||||
|
\advance\leftmargin\labelsep%
|
||||||
|
\@openbib@code%
|
||||||
|
\usecounter{enumiv}%
|
||||||
|
\let\p@enumiv\@empty%
|
||||||
|
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
||||||
|
\sloppy%
|
||||||
|
\clubpenalty4000%\@clubpenalty \clubpenalty%
|
||||||
|
\widowpenalty4000%
|
||||||
|
\sfcode`\.\@m%
|
||||||
|
\sfcode `\=1000\relax}%
|
||||||
|
{%
|
||||||
|
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
|
||||||
|
\end{list}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter style definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputeletterbodylengths}{%
|
||||||
|
\recomputecvbodylengths%
|
||||||
|
\setlength{\parskip}{6\p@}}
|
||||||
|
|
||||||
|
\renewcommand*{\makeletterclosing}{%
|
||||||
|
\@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
|
||||||
|
\ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
|
||||||
|
{\bfseries\@firstname~\@lastname}%
|
||||||
|
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
||||||
|
\\%
|
||||||
|
\vfil%
|
||||||
|
{\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
|
||||||
|
\vfil}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvbodyiv.sty'.
|
||||||
237
moderncvbodyv.sty
Normal file
237
moderncvbodyv.sty
Normal file
|
|
@ -0,0 +1,237 @@
|
||||||
|
%% start of file `moderncvbodyv.sty'.
|
||||||
|
%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvbodyv}[2026-01-31 v2.5.1 modern curriculum vitae and letter body variant: 5]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% provides the commands for the skillmatrix as well as the command
|
||||||
|
% \recompute@cvskillmatrix@lengths
|
||||||
|
\RequirePackage[moderncvbodyv]{moderncvskillmatrix}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall style definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume style definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\sectionfont}{\Large\mdseries\upshape}
|
||||||
|
\renewcommand*{\subsectionfont}{\large\mdseries\slshape}
|
||||||
|
\renewcommand*{\hintfont}{\bfseries}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
|
||||||
|
\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
|
||||||
|
\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
|
||||||
|
|
||||||
|
% lengths
|
||||||
|
% used by \cvitem (and all children command)
|
||||||
|
\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.25\textwidth}
|
||||||
|
\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
|
||||||
|
\@initializelength{\separatorrulewidth} \setlength{\separatorrulewidth}{1.2\p@}%
|
||||||
|
\@initializelength{\maincolumnwidth}
|
||||||
|
% used by \cvdoubleitem
|
||||||
|
\@initializelength{\doubleitemcolumnwidth}
|
||||||
|
% used by \cvtripleitem
|
||||||
|
\@initializelength{\tripleitemcolumnwidth}
|
||||||
|
% used by \cvlistitem
|
||||||
|
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
|
||||||
|
\@initializelength{\listitemcolumnwidth}
|
||||||
|
%\@initializelength{\listitemmaincolumnwidth}
|
||||||
|
% used by \cvlistdoubleitem
|
||||||
|
\@initializelength{\listdoubleitemcolumnwidth}
|
||||||
|
%\@initializelength{\listdoubleitemmaincolumnwidth}
|
||||||
|
\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\@initializecommand{\recomputecvbodylengths}{%
|
||||||
|
% body lengths
|
||||||
|
\setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\separatorcolumnwidth-\hintscolumnwidth-\separatorrulewidth}%
|
||||||
|
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
|
||||||
|
\recompute@cvskillmatrix@lengths
|
||||||
|
% regular lengths
|
||||||
|
\setlength{\parskip}{0\p@}}
|
||||||
|
|
||||||
|
\@initializeif{\if@aftersection}\@aftersectionfalse%
|
||||||
|
\RenewDocumentCommand{\section}{sm}{%
|
||||||
|
\addvspace{2.5ex}%
|
||||||
|
\phantomsection{}% reset the anchor for hyperrefs
|
||||||
|
\addcontentsline{toc}{section}{#2}%
|
||||||
|
% minipage for correct spacing with multiline sections #69
|
||||||
|
\noindent\rlap{\@cvitem{\begin{minipage}[t][1ex]{\hintscolumnwidth}\raggedleft\sectionstyle{#2}\end{minipage}}{}}%
|
||||||
|
\nobreak\@afterheading\@aftersectiontrue\ignorespaces}
|
||||||
|
|
||||||
|
%\@initializeif{\if@aftersubsection}\@aftersubsectionfalse%
|
||||||
|
\RenewDocumentCommand{\subsection}{sm}{%
|
||||||
|
%\addvspace{1ex}%
|
||||||
|
\vspace*{-\arrayrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
|
||||||
|
\if@aftersection%
|
||||||
|
\par\ignorespaces\fi%
|
||||||
|
\phantomsection{}% reset the anchor for hyperrefs
|
||||||
|
\addcontentsline{toc}{subsection}{#2}%
|
||||||
|
% minipage for correct spacing with multiline subsections #69
|
||||||
|
\noindent\rlap{\@cvitem{\begin{minipage}[t][1ex]{\hintscolumnwidth}\if@aftersection\else\@moderncvstrut{4pt}{24pt}\fi\raggedleft\subsectionstyle{#2}\end{minipage}}{}}%
|
||||||
|
\nobreak\@afterheading\@aftersectiontrue\ignorespaces}
|
||||||
|
|
||||||
|
\renewcommand*{\cvitem}[3][.5ex]{%
|
||||||
|
\@cvitem[#1]{}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}}%
|
||||||
|
}
|
||||||
|
% \RenewDocumentCommand{\cvitem}{+O{.5ex} +m +m}{%
|
||||||
|
% \IfNoValueTF{#2}{%
|
||||||
|
% \@cvitem[#1]{}{#3}%
|
||||||
|
% }{%
|
||||||
|
% \@cvitem[#1]{}{\hintstyle{#2}: {#3}}%
|
||||||
|
% }%
|
||||||
|
% }
|
||||||
|
|
||||||
|
% underlying command to implement \cvitem, \subsection and \section
|
||||||
|
\newcommand*{\@cvitem}[3][.5ex]{%
|
||||||
|
\arrayrulecolor{bodyrulecolor}%
|
||||||
|
\setlength\arrayrulewidth{\separatorrulewidth}%
|
||||||
|
\if@aftersection\else%
|
||||||
|
\vspace*{-\separatorrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
|
||||||
|
\noindent%
|
||||||
|
% \setlength{\fboxsep}{0pt}\framebox{% start of debugging
|
||||||
|
\begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
|
||||||
|
\@moderncvstrut{4pt}{16pt}#2 \\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly
|
||||||
|
\end{tabular}%
|
||||||
|
% }% end of debugging
|
||||||
|
\par\@aftersectionfalse\ignorespaces}
|
||||||
|
|
||||||
|
\renewcommand*{\cvdoubleitem}[5][.5ex]{%
|
||||||
|
\@cvitem[#1]{}{%
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvtripleitem}[7][.1ex]{%
|
||||||
|
\@cvitem[#1]{}{%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}\ifthenelse{\equal{#6}{}}{}{\hintstyle{#6}: }#7\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistitem}[2][.5ex]{%
|
||||||
|
\@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistdoubleitem}[3][.5ex]{%
|
||||||
|
\@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\ifthenelse{\equal{#3}{}}%
|
||||||
|
{}%
|
||||||
|
{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
|
||||||
|
|
||||||
|
\@initializebox{\cventryyearbox}
|
||||||
|
\@initializelength{\cventrytitleboxwidth}
|
||||||
|
\renewcommand*{\cventry}[7][.5ex]{%
|
||||||
|
\savebox{\cventryyearbox}{%
|
||||||
|
\hspace*{2\separatorcolumnwidth}%
|
||||||
|
\hintstyle{#2}}%
|
||||||
|
\setlength{\cventrytitleboxwidth}{\widthof{\usebox{\cventryyearbox}}}%
|
||||||
|
\setlength{\cventrytitleboxwidth}{\maincolumnwidth-\cventrytitleboxwidth}%
|
||||||
|
\cvitem[#1]{}{%
|
||||||
|
\parbox[t]{\cventrytitleboxwidth}{%
|
||||||
|
\strut%
|
||||||
|
{\bfseries#3}%
|
||||||
|
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
|
||||||
|
\ifthenelse{\equal{#5}{}}{}{, #5}%
|
||||||
|
\ifthenelse{\equal{#6}{}}{}{, #6}%
|
||||||
|
.\strut}%
|
||||||
|
\usebox{\cventryyearbox}}%
|
||||||
|
\ifx&%
|
||||||
|
\else%
|
||||||
|
\vspace*{-4pt}%
|
||||||
|
\cvitem[#1]{}{\small#7}\fi}
|
||||||
|
|
||||||
|
\@initializebox{\cvitemwithcommentmainbox}
|
||||||
|
\@initializelength{\cvitemwithcommentmainlength}
|
||||||
|
\@initializelength{\cvitemwithcommentcommentlength}
|
||||||
|
\renewcommand*{\cvitemwithcomment}[4][.5ex]{%
|
||||||
|
\savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}%
|
||||||
|
\setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
|
||||||
|
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
|
||||||
|
\@cvitem[#1]{}{%
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
|
||||||
|
|
||||||
|
\renewenvironment{thebibliography}[1]% BUG/TODO: remove extra space between heading and first bibliography entry, as well as after last one
|
||||||
|
{%
|
||||||
|
\bibliographyhead{\refname}%
|
||||||
|
% \small%
|
||||||
|
\arrayrulecolor{bodyrulecolor}%
|
||||||
|
\setlength\arrayrulewidth{\separatorrulewidth}%
|
||||||
|
\noindent%
|
||||||
|
\begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
|
||||||
|
\@moderncvstrut{4pt}{16pt} &%
|
||||||
|
\begin{list}{\bibliographyitemlabel}{%
|
||||||
|
\setlength{\topsep}{0pt}%
|
||||||
|
\setlength{\partopsep}{0pt}%
|
||||||
|
\setlength{\labelwidth}{0pt}%
|
||||||
|
\setlength{\itemsep}{0pt}%
|
||||||
|
\setlength{\parskip}{0pt}%
|
||||||
|
\ifthenelse{\equal{\bibliographyitemlabel}{}}%
|
||||||
|
{\setlength{\labelsep}{0pt}}%
|
||||||
|
{\setlength{\labelsep}{\separatorcolumnwidth}}%
|
||||||
|
\leftmargin\labelwidth%
|
||||||
|
\advance\leftmargin\labelsep%
|
||||||
|
\@openbib@code%
|
||||||
|
\usecounter{enumiv}%
|
||||||
|
\let\p@enumiv\@empty%
|
||||||
|
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
||||||
|
\sloppy%
|
||||||
|
\clubpenalty4000%\@clubpenalty \clubpenalty%
|
||||||
|
\widowpenalty4000%
|
||||||
|
\sfcode`\.\@m%
|
||||||
|
\sfcode `\=1000\relax}%
|
||||||
|
{%
|
||||||
|
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
|
||||||
|
\end{list}%
|
||||||
|
\\[.5ex]%
|
||||||
|
\end{tabular}%
|
||||||
|
\par\@aftersectionfalse\ignorespaces}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter style definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputeletterbodylengths}{%
|
||||||
|
\recomputecvbodylengths%
|
||||||
|
\setlength{\parskip}{6\p@}}
|
||||||
|
|
||||||
|
\renewcommand*{\makeletterclosing}{%
|
||||||
|
\@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
|
||||||
|
\ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
|
||||||
|
{\bfseries \@firstname~\@lastname}%
|
||||||
|
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
||||||
|
\\%
|
||||||
|
\vfill%
|
||||||
|
{\color{letterclosingcolor}\itshape\enclname: \@enclosure}}}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvbodyv.sty'.
|
||||||
203
moderncvbodyvi.sty
Normal file
203
moderncvbodyvi.sty
Normal file
|
|
@ -0,0 +1,203 @@
|
||||||
|
%% start of file `moderncvbodyvi.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
|
||||||
|
%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me), 2024-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvbodyvi}[2026-01-31 v2.5.1 modern curriculum vitae and letter body variant: 6]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\RequirePackage{moderncvverticaltimeline}
|
||||||
|
% No customization currently exists for `modercvbodyvi`; just reuse
|
||||||
|
% `moderncvbodyi`. We might consider supporting a short table format (only skill
|
||||||
|
% name and rating) in the future.
|
||||||
|
\RequirePackage[moderncvbodyi,circle]{moderncvskillmatrix}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall body definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\sectionfont}{\Large\upshape\bfseries}
|
||||||
|
\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
|
||||||
|
\renewcommand*{\hintfont}{}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
|
||||||
|
\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
|
||||||
|
\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume body definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
% used by \cvitem (and all children command)
|
||||||
|
\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.175\textwidth}
|
||||||
|
\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
|
||||||
|
\@initializelength{\maincolumnwidth}
|
||||||
|
% used by \cvdoubleitem
|
||||||
|
\@initializelength{\doubleitemcolumnwidth}
|
||||||
|
% used by \cvtripleitem
|
||||||
|
\@initializelength{\tripleitemcolumnwidth}
|
||||||
|
% used by \cvlistitem
|
||||||
|
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
|
||||||
|
\@initializelength{\listitemcolumnwidth}
|
||||||
|
% used by \cvlistdoubleitem
|
||||||
|
\@initializelength{\listdoubleitemcolumnwidth}
|
||||||
|
\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
|
||||||
|
% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
|
||||||
|
\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputecvbodylengths}{%
|
||||||
|
% body lengths
|
||||||
|
\setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\hintscolumnwidth}%
|
||||||
|
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
|
||||||
|
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}%
|
||||||
|
\setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
|
||||||
|
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
|
||||||
|
\recompute@cvskillmatrix@lengths
|
||||||
|
% regular lengths
|
||||||
|
\setlength{\parskip}{0\p@}}
|
||||||
|
|
||||||
|
\@initializelength{\baseletterheight}
|
||||||
|
\settoheight{\baseletterheight}{\sectionstyle{o}}
|
||||||
|
\setlength{\baseletterheight}{\baseletterheight-0.95ex}
|
||||||
|
% The optional argument can be used to place a small icon near the section name.
|
||||||
|
% E.g. `\section[\faBookmark]{Education}`
|
||||||
|
\RenewDocumentCommand{\section}{sO{}m}{%
|
||||||
|
\tl@resetchain%
|
||||||
|
\par\addvspace{2.5ex}%
|
||||||
|
\phantomsection{}% reset the anchor for hyperrefs
|
||||||
|
\addcontentsline{toc}{section}{#3}%
|
||||||
|
\strut\sectionstyle{\textcolor{color1!55!white}{{#2}\rule{.75ex}{0pt}\rule{1pt}{\heightof{#3}}}%
|
||||||
|
\rule{.75ex}{0pt}#3}%
|
||||||
|
\par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
|
||||||
|
|
||||||
|
\RenewDocumentCommand{\subsection}{sm}{%
|
||||||
|
\par\addvspace{1ex}%
|
||||||
|
\phantomsection{}% reset the anchor for hyperrefs
|
||||||
|
\addcontentsline{toc}{subsection}{#2}%
|
||||||
|
\cvitem[0ex]{}{\strut\subsectionstyle{#2}}%
|
||||||
|
\par\nobreak\addvspace{.5ex}\@afterheading}% to avoid a pagebreak after the heading
|
||||||
|
|
||||||
|
\renewcommand*{\cvitem}[3][.25em]{%
|
||||||
|
\begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
|
||||||
|
\raggedleft\hintstyle{#2} &{#3}%
|
||||||
|
\end{tabular}%
|
||||||
|
\par\addvspace{#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvdoubleitem}[5][.25em]{%
|
||||||
|
\cvitem[#1]{#2}{%
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}#3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
|
||||||
|
\hspace*{\separatorcolumnwidth}%
|
||||||
|
\begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvtripleitem}[7][.1em]{%
|
||||||
|
\cvitem[#1]{#2}{%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
|
||||||
|
\hspace*{\separatorcolumnwidth}%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}%
|
||||||
|
\hspace*{\separatorcolumnwidth}%
|
||||||
|
\begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}%
|
||||||
|
\hspace*{\separatorcolumnwidth}%
|
||||||
|
\begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistitem}[2][.25em]{%
|
||||||
|
\cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
|
||||||
|
\cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\ifthenelse{\equal{#3}{}}%
|
||||||
|
{}%
|
||||||
|
{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
|
||||||
|
|
||||||
|
\renewcommand*{\cventry}[7][.25em]{%
|
||||||
|
\cvitem[#1]{\tl@milestone{#2}}{%
|
||||||
|
{\bfseries#3}%
|
||||||
|
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
|
||||||
|
\ifthenelse{\equal{#5}{}}{}{, #5}%
|
||||||
|
\ifthenelse{\equal{#6}{}}{}{, #6}%
|
||||||
|
\strut%
|
||||||
|
\ifx&%
|
||||||
|
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
|
||||||
|
|
||||||
|
\@initializebox{\cvitemwithcommentbox}
|
||||||
|
\@initializelength{\cvitemwithcommentskilllength}
|
||||||
|
\@initializelength{\cvitemwithcommentcommentlength}
|
||||||
|
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
|
||||||
|
\savebox{\cvitemwithcommentbox}{{#3}}%
|
||||||
|
\setlength{\cvitemwithcommentskilllength}{\widthof{\usebox{\cvitemwithcommentbox}}}%
|
||||||
|
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentskilllength}%
|
||||||
|
\cvitem[#1]{#2}{%
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentskilllength}\usebox{\cvitemwithcommentbox}\end{minipage}%
|
||||||
|
\hfill% fill of \separatorcolumnwidth
|
||||||
|
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
|
||||||
|
|
||||||
|
\renewenvironment{thebibliography}[1]%
|
||||||
|
{%
|
||||||
|
\bibliographyhead{\refname}%
|
||||||
|
% \small%
|
||||||
|
\begin{list}{\bibliographyitemlabel}%
|
||||||
|
{%
|
||||||
|
\setlength{\topsep}{0pt}%
|
||||||
|
\setlength{\labelwidth}{\hintscolumnwidth}%
|
||||||
|
\setlength{\labelsep}{\separatorcolumnwidth}%
|
||||||
|
\leftmargin\labelwidth%
|
||||||
|
\advance\leftmargin\labelsep%
|
||||||
|
\@openbib@code%
|
||||||
|
\usecounter{enumiv}%
|
||||||
|
\let\p@enumiv\@empty%
|
||||||
|
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
||||||
|
\sloppy%
|
||||||
|
\clubpenalty4000%\@clubpenalty \clubpenalty%
|
||||||
|
\widowpenalty4000%
|
||||||
|
\sfcode`\.\@m%
|
||||||
|
\sfcode `\=1000\relax}%
|
||||||
|
{%
|
||||||
|
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
|
||||||
|
\end{list}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter style definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\recomputeletterbodylengths}{%
|
||||||
|
\recomputecvlengths%
|
||||||
|
\setlength{\parskip}{6\p@}}
|
||||||
|
|
||||||
|
\renewcommand*{\makeletterclosing}{
|
||||||
|
\@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
|
||||||
|
\ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
|
||||||
|
{\bfseries\@firstname~\@lastname}%
|
||||||
|
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
||||||
|
\\%
|
||||||
|
\vfil%
|
||||||
|
{\color{color2}\itshape\enclname: \@enclosure}}%
|
||||||
|
\vfil}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvbodyvi.sty'.
|
||||||
92
moderncvcollection.sty
Normal file
92
moderncvcollection.sty
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
%% start of file `moderncvcollection.sty'.
|
||||||
|
%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvcollection}[2026-01-31 v2.5.1 moderncv collections]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% requirements
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
\RequirePackage{ifthen}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% code
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
% creates a new collection
|
||||||
|
% usage: \collectionnew{<collection name>}
|
||||||
|
\NewDocumentCommand\collectionnew{m}{%
|
||||||
|
\newcounter{collection@#1@count}%
|
||||||
|
}%
|
||||||
|
|
||||||
|
% adds an item to a collection
|
||||||
|
% usage: \collectionadd[<optional key>]{<collection name>}{<item to add>}
|
||||||
|
\NewDocumentCommand\collectionadd{ O{} m m }{%
|
||||||
|
\expandafter\def\csname collection@#2@item\roman{collection@#2@count}\endcsname{#3}%
|
||||||
|
\def\optional@FirstArg{#1}%
|
||||||
|
\ifdefempty{\optional@FirstArg}{%
|
||||||
|
\relax% if #1 is empty
|
||||||
|
}{%
|
||||||
|
\expandafter\def\csname collection@#2@key\roman{collection@#2@count}\endcsname{#1}%
|
||||||
|
}%
|
||||||
|
\stepcounter{collection@#2@count}%
|
||||||
|
}%
|
||||||
|
% returns the number of items in a collection
|
||||||
|
% usage: \collectioncount{<collection name>}
|
||||||
|
\NewDocumentCommand\collectioncount{m}{%
|
||||||
|
\value{collection@#1@count}%
|
||||||
|
}%
|
||||||
|
% gets an item from a collection
|
||||||
|
% usage: \collectiongetitem{<collection name>}{<element id>}
|
||||||
|
% where <element id> is an integer between 0 and (collectioncount-1)
|
||||||
|
\NewDocumentCommand\collectiongetitem{m m}{%
|
||||||
|
\csname collection@#1@item\romannumeral #2\endcsname%
|
||||||
|
}%
|
||||||
|
|
||||||
|
% gets a key from a collection
|
||||||
|
% usage: \collectiongetkey{<collection name>}{<element id>}
|
||||||
|
% where <element id> is an integer between 0 and (collectioncount-1)
|
||||||
|
\NewDocumentCommand\collectiongetkey{m m}{%
|
||||||
|
\csname collection@#1@key\romannumeral #2\endcsname%
|
||||||
|
}%
|
||||||
|
% loops through a collection and perform the given operation on every element
|
||||||
|
% usage: \collectionloop{<collection name>}{<operation sequence>}
|
||||||
|
% where <operation sequence> is the code sequence to be evaluated for each collection item,
|
||||||
|
% code which can refer to \collectionloopid, \collectionloopkey, \collectionloopitem and
|
||||||
|
% \collectionloopbreak
|
||||||
|
\newcounter{collection@iterator}
|
||||||
|
\NewDocumentCommand\collectionloopbreak{}{\let\iterate\relax}
|
||||||
|
\NewDocumentCommand\collectionloop{m m}{%
|
||||||
|
\setcounter{collection@iterator}{0}%
|
||||||
|
\loop\ifnum\value{collection@iterator}<\value{collection@#1@count}%
|
||||||
|
\def\collectionloopid{\arabic{collection@iterator}}%
|
||||||
|
\def\collectionloopitem{\collectiongetitem{#1}{\collectionloopid}}%
|
||||||
|
\def\collectionloopkey{\collectiongetkey{#1}{\collectionloopid}}%
|
||||||
|
#2%
|
||||||
|
\stepcounter{collection@iterator}%
|
||||||
|
\repeat%
|
||||||
|
}
|
||||||
|
|
||||||
|
% loops through a collection and finds the (first) element matching the given key
|
||||||
|
% usage: \collectionfindbykey{<collection name>}{key>}
|
||||||
|
\NewDocumentCommand\collectionfindbykey{m m}{%
|
||||||
|
\collectionloop{#1}{%
|
||||||
|
\ifthenelse{\equal{\collectionloopkey}{#2}}{\collectionloopitem\collectionloopbreak}{}}%
|
||||||
|
}%
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvcollection.cls'.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvcolorblack.sty'.
|
%% start of file `moderncvcolorblack.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,16 +10,21 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvcolorblack}[2012/07/29 v1.1 modern curriculum vitae and letter color scheme: black]
|
\ProvidesPackage{moderncvcolorblack}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: black]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% color scheme definition
|
% color scheme definition
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\definecolor{color0}{rgb}{0,0,0}% black
|
\usepackage{moderncvcolors}
|
||||||
\definecolor{color1}{rgb}{0,0,0}% black
|
|
||||||
\definecolor{color2}{rgb}{0,0,0}% black
|
|
||||||
|
|
||||||
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{black}
|
||||||
|
\colorlet{color2}{black}
|
||||||
|
\colorlet{headTL}{lightblack}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvcolorblue.sty'.
|
%% start of file `moderncvcolorblue.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,15 +10,21 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvcolorblue}[2012/07/29 v1.1 modern curriculum vitae and letter color scheme: blue]
|
\ProvidesPackage{moderncvcolorblue}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: blue]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% color scheme definition
|
% color scheme definition
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\definecolor{color0}{rgb}{0,0,0}% black
|
\usepackage{moderncvcolors}
|
||||||
\definecolor{color1}{rgb}{0.22,0.45,0.70}% light blue
|
|
||||||
\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{lightblue}
|
||||||
|
\colorlet{color2}{darkgrey}
|
||||||
|
\colorlet{headTL}{lightskyblue}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
|
||||||
32
moderncvcolorburgundy.sty
Normal file
32
moderncvcolorburgundy.sty
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
%% start of file `moderncvcolorburgundy.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvcolorburgundy}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: burgundy]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% color scheme definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\usepackage{moderncvcolors}
|
||||||
|
|
||||||
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{burgundy}
|
||||||
|
\colorlet{color2}{darkgrey}
|
||||||
|
\colorlet{headTL}{darkred}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvcolorburgundy.sty'.
|
||||||
33
moderncvcolorcerulean.sty
Normal file
33
moderncvcolorcerulean.sty
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
%% start of file `moderncvcolorcerulean.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
|
||||||
|
%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me), 2024-2024 moderncv maintainers.
|
||||||
|
%
|
||||||
|
% 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{moderncvcolorcerulean}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: cerulean]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% color scheme definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\usepackage{moderncvcolors}
|
||||||
|
|
||||||
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{cerulean}
|
||||||
|
\colorlet{color2}{darkcyan}
|
||||||
|
\colorlet{headTL}{verdigris}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvcolorcerulean.sty'.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvcolorgreen.sty'.
|
%% start of file `moderncvcolorgreen.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,15 +10,21 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvcolorgreen}[2012/07/29 v1.1 modern curriculum vitae and letter color scheme: green]
|
\ProvidesPackage{moderncvcolorgreen}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: green]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% color scheme definition
|
% color scheme definition
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\definecolor{color0}{rgb}{0,0,0}% black
|
\usepackage{moderncvcolors}
|
||||||
\definecolor{color1}{rgb}{0.35,0.70,0.30}% green
|
|
||||||
\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{green}
|
||||||
|
\colorlet{color2}{darkgrey}
|
||||||
|
\colorlet{headTL}{palegreen}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvcolorgrey.sty'.
|
%% start of file `moderncvcolorgrey.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,16 +10,21 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvcolorgrey}[2012/07/29 v1.1 modern curriculum vitae and letter color scheme: grey]
|
\ProvidesPackage{moderncvcolorgrey}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: grey]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% color scheme definition
|
% color scheme definition
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\definecolor{color0}{rgb}{0,0,0}% black
|
\usepackage{moderncvcolors}
|
||||||
\definecolor{color1}{rgb}{0.55,0.55,0.55}% dark grey
|
|
||||||
\definecolor{color2}{rgb}{0.55,0.55,0.55}% dark grey
|
|
||||||
|
|
||||||
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{darkgrey}
|
||||||
|
\colorlet{color2}{darkgrey}
|
||||||
|
\colorlet{headTL}{lightgrey}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvcolororange.sty'.
|
%% start of file `moderncvcolororange.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,16 +10,21 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvcolororange}[2012/07/29 v1.1 modern curriculum vitae and letter color scheme: orange]
|
\ProvidesPackage{moderncvcolororange}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: orange]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% color scheme definition
|
% color scheme definition
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\definecolor{color0}{rgb}{0,0,0}% black
|
\usepackage{moderncvcolors}
|
||||||
\definecolor{color1}{rgb}{0.95,0.55,0.15}% orange
|
|
||||||
\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
|
|
||||||
|
|
||||||
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{orange}
|
||||||
|
\colorlet{color2}{darkgrey}
|
||||||
|
\colorlet{headTL}{lightorange}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvcolorpurple.sty'.
|
%% start of file `moderncvcolorpurple.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,15 +10,21 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvcolorpurple}[2012/07/29 v1.1 modern curriculum vitae and letter color scheme: purple]
|
\ProvidesPackage{moderncvcolorpurple}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: purple]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% color scheme definition
|
% color scheme definition
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\definecolor{color0}{rgb}{0,0,0}% black
|
\usepackage{moderncvcolors}
|
||||||
\definecolor{color1}{rgb}{0.50,0.33,0.80}% purple
|
|
||||||
\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{purple}
|
||||||
|
\colorlet{color2}{darkgrey}
|
||||||
|
\colorlet{headTL}{lavender}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvcolorred.sty'.
|
%% start of file `moderncvcolorred.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,15 +10,21 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvcolorred}[2012/07/29 v1.1 modern curriculum vitae and letter color scheme: red]
|
\ProvidesPackage{moderncvcolorred}[2026-01-31 v2.5.1 modern curriculum vitae and letter color scheme: red]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% color scheme definition
|
% color scheme definition
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\definecolor{color0}{rgb}{0,0,0}% black
|
\usepackage{moderncvcolors}
|
||||||
\definecolor{color1}{rgb}{0.95,0.20,0.20}% red
|
|
||||||
\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
|
\colorlet{color0}{black}
|
||||||
|
\colorlet{color1}{red}
|
||||||
|
\colorlet{color2}{darkgrey}
|
||||||
|
\colorlet{headTL}{firebrick}
|
||||||
|
\colorlet{headBR}{color1}
|
||||||
|
\colorlet{headtext}{white}
|
||||||
|
\colorlet{headhr}{color2}
|
||||||
|
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
|
||||||
64
moderncvcolors.sty
Normal file
64
moderncvcolors.sty
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
%% start of file `moderncvcolors.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com)
|
||||||
|
%% Copyright 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvcolors}[2026-01-31 v2.5.1 modern curriculum vitae and letter base colors]
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% built-in colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
\definecolor{black}{RGB}{0, 0, 0}
|
||||||
|
\definecolor{white}{HTML}{ffffff}
|
||||||
|
\definecolor{red}{rgb}{0.95, 0.20, 0.20}
|
||||||
|
\definecolor{darkgrey}{rgb}{0.45, 0.45, 0.45}
|
||||||
|
\definecolor{lightgrey}{HTML}{d3d3d3}
|
||||||
|
\definecolor{orange}{rgb}{0.95, 0.55, 0.15}
|
||||||
|
\definecolor{burgundy}{rgb}{0.596078, 0, 0}% 139/255 (0.545098) or 152/255 (0.596078)
|
||||||
|
\definecolor{purple}{rgb}{0.50, 0.33, 0.80}
|
||||||
|
\definecolor{lightblue}{rgb}{0.22, 0.45, 0.70}
|
||||||
|
\definecolor{green}{rgb}{0.35, 0.70, 0.30}
|
||||||
|
\definecolor{cerulean}{HTML}{0081a7}
|
||||||
|
\definecolor{darkcyan}{HTML}{4d908e}
|
||||||
|
\definecolor{verdigris}{HTML}{00afb9}
|
||||||
|
\definecolor{lightskyblue}{HTML}{b1dffc}
|
||||||
|
\definecolor{darkred}{HTML}{d60000}
|
||||||
|
\definecolor{palegreen}{HTML}{a6fca6}
|
||||||
|
\definecolor{lightorange}{HTML}{ffbb3d}
|
||||||
|
\definecolor{lavender}{HTML}{9090e9}
|
||||||
|
\definecolor{firebrick}{HTML}{ce2727}
|
||||||
|
\definecolor{lightblack}{HTML}{3d3d3d}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% default colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
\@ifundefined{\string\color@default-socialicon-color}{\colorlet{default-socialicon-color}{darkgrey}}{}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% colors for social icons
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
% \definecolor{weixin}{rgb}{.184, .533, .098}
|
||||||
|
% \definecolor{linkedin}{HTML}{0a66c2}
|
||||||
|
% \definecolor{orcid}{HTML}{a6ce39}
|
||||||
|
% \definecolor{twitter}{RGB}{29, 155, 240}
|
||||||
|
% \definecolor{facebook}{HTML}{1b74e4}
|
||||||
|
% TODO: add more colors
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% custom colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
% \definecolor{tsinghua}{HTML}{791CB5}
|
||||||
|
|
||||||
|
%% end of file `moderncvcolors.sty'.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvcompatibility.sty'.
|
%% start of file `moderncvcompatibility.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvcompatibility}[2012/07/29 v1.1 modern curriculum vitae and letter compatibility patches]
|
\ProvidesPackage{moderncvcompatibility}[2026-01-31 v2.5.1 modern curriculum vitae and letter compatibility patches]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
|
@ -77,6 +77,28 @@
|
||||||
% compatibility with versions <= 0.19
|
% compatibility with versions <= 0.19
|
||||||
\newcommand*{\maketitle}{\makecvtitle}%
|
\newcommand*{\maketitle}{\makecvtitle}%
|
||||||
\title{}% to avoid LaTeX complaining that \maketitle is a called without first a call to \title
|
\title{}% to avoid LaTeX complaining that \maketitle is a called without first a call to \title
|
||||||
|
\newcommand*{\maketitlenamewidth}{\makecvtitlenamewidth}
|
||||||
|
|
||||||
|
% compatibility with versions <= 1.3.0
|
||||||
|
\newcommand*{\firstname}[1]{\def\@firstname{#1}}
|
||||||
|
\newcommand*{\lastname}[1]{\def\@lastname{#1}}
|
||||||
|
\newcommand*{\givenname}[1]{\def\@firstname{#1}}
|
||||||
|
\newcommand*{\familyname}[1]{\def\@lastname{#1}}
|
||||||
|
\def\@familyname{\@lastname}
|
||||||
|
|
||||||
|
% compatibility with versions <= 1.4.0
|
||||||
|
\newcommand*{\mobile}[1]{\collectionadd[mobile]{phones}{#1}}
|
||||||
|
%\newcommand*{\phone}[1]{\collectionadd[fixed]{phones}{#1}}% implicit, as \phone{...} defaults to \phone[fixed]{...}
|
||||||
|
\newcommand*{\fax}[1]{\collectionadd[fax]{phones}{#1}}
|
||||||
|
\newcommand*{\@mobile}{\collectionfindbykey{phones}{mobile}}
|
||||||
|
\newcommand*{\@phone}{\collectionfindbykey{phones}{fixed}}
|
||||||
|
\newcommand*{\@fax}{\collectionfindbykey{phones}{fax}}
|
||||||
|
\newcommand*{\phonesymbol}{\fixedphonesymbol}
|
||||||
|
\newcommand*{\mobilesymbol}{\mobilephonesymbol}
|
||||||
|
\newcommand*{\faxsymbol}{\faxphonesymbol}
|
||||||
|
|
||||||
|
% compatibility with versions <= 1.5.1
|
||||||
|
\newcommand*{\makecvtitlenamewidth}{\makecvheadnamewidth} % only used in header variants 1 and 4, themself used by the classic and oldstyle styles
|
||||||
|
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
|
||||||
55
moderncvdebugtools.sty
Normal file
55
moderncvdebugtools.sty
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
%% start of file `moderncvdebugtools.sty'.
|
||||||
|
%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvdebugtools}[2026-01-31 v2.5.1 modern curriculum vitae and letter debug tools]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\usetikzlibrary{babel}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% debug tools
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% code of \tracedebugvrule and \tracedebughrule provided by Gonzalo Medina on TeX.SX (cfr tex.stackexchange.com/a/110805/10102)
|
||||||
|
\newcounter{debugrule}
|
||||||
|
\pgfdeclarelayer{background}
|
||||||
|
\pgfsetlayers{background,main}
|
||||||
|
|
||||||
|
\DeclareDocumentCommand{\tracedebugvrule}{oO{0pt}}{%
|
||||||
|
\stepcounter{debugrule}%
|
||||||
|
\begin{tikzpicture}[remember picture,overlay]
|
||||||
|
\begin{pgfonlayer}{background}
|
||||||
|
\coordinate (a\thedebugrule);
|
||||||
|
\draw[red,thin,#1]
|
||||||
|
([xshift=#2]a\thedebugrule|-current page.north) -- ([xshift=#2]a\thedebugrule|-current page.south);
|
||||||
|
\end{pgfonlayer}
|
||||||
|
\end{tikzpicture}}
|
||||||
|
|
||||||
|
\DeclareDocumentCommand{\tracedebughrule}{oO{0pt}}{%
|
||||||
|
\stepcounter{debugrule}%
|
||||||
|
\begin{tikzpicture}[remember picture,overlay]
|
||||||
|
\begin{pgfonlayer}{background}
|
||||||
|
\coordinate (b\thedebugrule);
|
||||||
|
\draw[red,thin,#1]
|
||||||
|
([yshift=#2]b\thedebugrule-|current page.west) -- ([yshift=#2]b\thedebugrule-|current page.east);
|
||||||
|
\end{pgfonlayer}
|
||||||
|
\end{tikzpicture}}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvdebugtools.sty'.
|
||||||
138
moderncvfooti.sty
Normal file
138
moderncvfooti.sty
Normal file
|
|
@ -0,0 +1,138 @@
|
||||||
|
%% start of file `moderncvfooti.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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}[2026-01-31 v2.5.1 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}{%
|
||||||
|
{\hspace{1em}{\rmfamily\textbullet}\hspace{1em}}}% 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
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
\renewcommand*{\recomputecvfootlengths}{\recomputefootlengths}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makecvfoot}{%
|
||||||
|
\recomputecvfootlengths{}%
|
||||||
|
\fancypagestyle{plain}{%
|
||||||
|
\fancyfoot[c]{%
|
||||||
|
\parbox[b]{\footwidth}{%
|
||||||
|
\centering%
|
||||||
|
\color{addresscolor}\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\\}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\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%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@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{addresscolor}%
|
||||||
|
\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\\}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\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%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@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'.
|
||||||
211
moderncvheadi.sty
Normal file
211
moderncvheadi.sty
Normal file
|
|
@ -0,0 +1,211 @@
|
||||||
|
%% start of file `moderncvheadi.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvheadi}[2026-01-31 v2.5.1 modern curriculum vitae and letter header variant: 1]
|
||||||
|
|
||||||
|
% details options: "details" (default) or "nodetails"
|
||||||
|
\@initializeif{\if@details}\@detailsfalse
|
||||||
|
\DeclareOption{details} {\@detailstrue}
|
||||||
|
\DeclareOption{nodetails} {\@detailsfalse}
|
||||||
|
|
||||||
|
% left/right options: "left" (default) or "right"
|
||||||
|
\@initializeif{\if@left} \@leftfalse
|
||||||
|
\DeclareOption{left} {\@lefttrue\@rightfalse}
|
||||||
|
\@initializeif{\if@right}\@rightfalse
|
||||||
|
\DeclareOption{right} {\@leftfalse\@righttrue}
|
||||||
|
|
||||||
|
% top options: align header elements by their top instead of their bottom
|
||||||
|
% default: bottom
|
||||||
|
\@initializeif{\if@top}\@topfalse
|
||||||
|
\DeclareOption{top}{\@toptrue}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{details,left}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
|
||||||
|
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
|
||||||
|
\renewcommand*{\addressfont}{\small\mdseries\slshape}
|
||||||
|
\renewcommand*{\quotefont}{\large\slshape}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
|
||||||
|
\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
|
||||||
|
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
|
||||||
|
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
\@initializelength{\quotewidth}
|
||||||
|
\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
|
||||||
|
\renewcommand*{\recomputecvheadlengths}{%
|
||||||
|
\setlength{\quotewidth}{0.65\textwidth}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makecvhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputecvlengths%
|
||||||
|
% optional detailed information (pre-rendering)
|
||||||
|
\@initializebox{\makecvheaddetailsbox}%
|
||||||
|
\if@details%
|
||||||
|
\def\phonesdetails{}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
||||||
|
\def\socialsdetails{}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
|
||||||
|
\savebox{\makecvheaddetailsbox}{%
|
||||||
|
\addressfont\color{addresscolor}%
|
||||||
|
\if@left\begin{tabular}[b]{@{}r@{}}\fi%
|
||||||
|
\if@right\begin{tabular}[b]{@{}l@{}}\fi%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}%
|
||||||
|
\phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
|
||||||
|
\socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
|
||||||
|
\end{tabular}%
|
||||||
|
}\fi%
|
||||||
|
% optional photo (pre-rendering)
|
||||||
|
\@initializebox{\makecvheadpicturebox}%
|
||||||
|
\savebox{\makecvheadpicturebox}{%
|
||||||
|
\ifthenelse{\isundefined{\@photo}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\if@left%
|
||||||
|
\hspace*{\separatorcolumnwidth}\fi%
|
||||||
|
\color{pictureframecolor}%
|
||||||
|
\setlength{\fboxrule}{\@photoframewidth}%
|
||||||
|
\ifdim\@photoframewidth=0pt%
|
||||||
|
\setlength{\fboxsep}{0pt}\fi%
|
||||||
|
\framebox{\includegraphics[width=\@photowidth]{\@photo}}%
|
||||||
|
\if@right%
|
||||||
|
\hspace*{\separatorcolumnwidth}\fi}}%
|
||||||
|
% name and title (pre-rendering)
|
||||||
|
\@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}%
|
||||||
|
\@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
|
||||||
|
\ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt)
|
||||||
|
{\setlength{\makecvheadnamewidth}{\textwidth-\makecvheaddetailswidth-\makecvheadpicturewidth}}%
|
||||||
|
{}%
|
||||||
|
\@initializebox{\makecvheadnamebox}%
|
||||||
|
\savebox{\makecvheadnamebox}{%
|
||||||
|
\begin{minipage}[b]{\makecvheadnamewidth}%
|
||||||
|
\if@left\raggedright\fi%
|
||||||
|
\if@right\raggedleft\fi%
|
||||||
|
\firstnamestyle{\@firstname\ }\lastnamestyle{\@lastname}%
|
||||||
|
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
|
||||||
|
\end{minipage}}%
|
||||||
|
% raise boxes if top option is set
|
||||||
|
\if@top%
|
||||||
|
\savebox{\makecvheadnamebox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheadnamebox}}}%
|
||||||
|
\savebox{\makecvheaddetailsbox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheaddetailsbox}}}%
|
||||||
|
\savebox{\makecvheadpicturebox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheadpicturebox}}}\fi%
|
||||||
|
% rendering
|
||||||
|
\if@left%
|
||||||
|
\usebox{\makecvheadnamebox}%
|
||||||
|
\hfill%
|
||||||
|
\llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
|
||||||
|
\usebox{\makecvheadpicturebox}\fi%
|
||||||
|
\if@right%
|
||||||
|
\usebox{\makecvheadpicturebox}%
|
||||||
|
\rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
|
||||||
|
\hfill%
|
||||||
|
\usebox{\makecvheadnamebox}\fi%
|
||||||
|
% optional quote
|
||||||
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
|
{\vspace{2.5em}}%
|
||||||
|
{%
|
||||||
|
\\[2.5em]%
|
||||||
|
{%
|
||||||
|
\centering%
|
||||||
|
\begin{minipage}{\quotewidth}%
|
||||||
|
\centering%
|
||||||
|
\quotestyle{\@quote}%
|
||||||
|
\end{minipage}\\[2.5em]}}%
|
||||||
|
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
%\renewcommand*{\recomputeletterheadlengths}{}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makeletterhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputeletterlengths%
|
||||||
|
% sender contact info
|
||||||
|
\hfill%
|
||||||
|
\begin{minipage}{.5\textwidth}%
|
||||||
|
% optional detailed information
|
||||||
|
\if@details%
|
||||||
|
\raggedleft%
|
||||||
|
\addressfont\textcolor{addresscolor}{%
|
||||||
|
{\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
|
||||||
|
% optional detailed information
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
|
||||||
|
\end{minipage}\\[2em]
|
||||||
|
% recipient block
|
||||||
|
\begin{minipage}[t]{.5\textwidth}
|
||||||
|
\raggedright%
|
||||||
|
\addressfont%
|
||||||
|
{\bfseries\upshape\@recipientname}\\%
|
||||||
|
\@recipientaddress%
|
||||||
|
\end{minipage}
|
||||||
|
% date
|
||||||
|
\hfill% US style
|
||||||
|
% \\[1em]% UK style
|
||||||
|
\@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
|
||||||
|
% optional subject
|
||||||
|
\ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
|
||||||
|
% opening
|
||||||
|
\raggedright%
|
||||||
|
\@opening\\[1.5em]%
|
||||||
|
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
||||||
|
% \ignorespacesafterend% not working
|
||||||
|
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvheadi.sty'.
|
||||||
210
moderncvheadii.sty
Normal file
210
moderncvheadii.sty
Normal file
|
|
@ -0,0 +1,210 @@
|
||||||
|
%% start of file `moderncvheadii.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvheadii}[2026-01-31 v2.5.1 modern curriculum vitae and letter header variant: 2]
|
||||||
|
|
||||||
|
% details options: "details" or "nodetails" (default)
|
||||||
|
\@initializeif{\if@details}\@detailsfalse
|
||||||
|
\DeclareOption{details}{\@detailstrue}
|
||||||
|
\DeclareOption{nodetails}{\@detailsfalse}
|
||||||
|
|
||||||
|
% name design options: "alternate" (lowercase names & title, no spacing)
|
||||||
|
\@initializeif{\if@alternate}\@alternatefalse
|
||||||
|
\DeclareOption{alternate}{\@alternatetrue}
|
||||||
|
|
||||||
|
% left/right options: "left" or "right" (default)
|
||||||
|
\@initializeif{\if@left} \@leftfalse
|
||||||
|
\DeclareOption{left} {\@lefttrue\@rightfalse}
|
||||||
|
\@initializeif{\if@right}\@rightfalse
|
||||||
|
\DeclareOption{right} {\@leftfalse\@righttrue}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{nodetails,right}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\namefont}{\fontsize{38}{40}\mdseries\upshape}
|
||||||
|
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
|
||||||
|
\renewcommand*{\addressfont}{\normalsize\mdseries\slshape}
|
||||||
|
\renewcommand*{\quotefont}{\large\slshape}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
|
||||||
|
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
|
||||||
|
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\@initializecommand{\makeheaddetailssymbol}{%
|
||||||
|
{\hspace{1em}{\rmfamily\textbullet}\hspace{1em}}}% 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
|
||||||
|
% 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{\makeheaddetailsbox}%
|
||||||
|
\@initializebox{\makeheaddetailstempbox}%
|
||||||
|
\@initializelength{\makeheaddetailswidth}%
|
||||||
|
\@initializelength{\makeheaddetailsboxwidth}%
|
||||||
|
\@initializeif{\if@firstmakeheaddetailselement}\@firstmakeheaddetailselementtrue%
|
||||||
|
% adds an element to the makehead, separated by makeheadsymbol
|
||||||
|
% usage: \addtomakehead[makeheadsymbol]{element}
|
||||||
|
\newcommand*{\addtomakeheaddetails}[2][\makeheaddetailssymbol]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
|
||||||
|
\if@firstmakeheaddetailselement%
|
||||||
|
\savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#2}%
|
||||||
|
\else%
|
||||||
|
\savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#1#2}\fi%
|
||||||
|
\settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailstempbox}}%
|
||||||
|
\ifnum\makeheaddetailsboxwidth<\makeheaddetailswidth%
|
||||||
|
\savebox{\makeheaddetailsbox}{\usebox{\makeheaddetailstempbox}}%
|
||||||
|
\@firstmakeheaddetailselementfalse%
|
||||||
|
\else%
|
||||||
|
\flushmakeheaddetails\\\null% \null is required as there is no box on the line after \\, so glue such as \hfill (and leaders) disappear; this is in contrast to after \par, where the next line starts with an indent box (even after \noindent)
|
||||||
|
\savebox{\makeheaddetailsbox}{#2}%
|
||||||
|
\savebox{\makeheaddetailstempbox}{#2}%
|
||||||
|
\settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailsbox}}%
|
||||||
|
\@firstmakeheaddetailselementfalse\fi}
|
||||||
|
% internal command to flush the makehead
|
||||||
|
\@initializecommand{\flushmakeheaddetails}{%
|
||||||
|
\if@right\hfill\fi%
|
||||||
|
\strut\usebox{\makeheaddetailsbox}%
|
||||||
|
\savebox{\makeheaddetailsbox}{}%
|
||||||
|
\savebox{\makeheaddetailstempbox}{}%
|
||||||
|
\setlength{\makeheaddetailsboxwidth}{0pt}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
\@initializelength{\quotewidth}
|
||||||
|
\renewcommand*{\recomputecvheadlengths}{%
|
||||||
|
\setlength{\makeheaddetailswidth}{\textwidth}%
|
||||||
|
\setlength{\quotewidth}{0.65\textwidth}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makecvhead}{% TODO: use \@initializecommand, which requires modifying its definition to handle \par
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputecvlengths%
|
||||||
|
% optional picture (pre-rendering)
|
||||||
|
\@initializebox{\makecvheadpicturebox}%
|
||||||
|
\savebox{\makecvheadpicturebox}{%
|
||||||
|
\ifthenelse{\isundefined{\@photo}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\setlength\fboxrule{\@photoframewidth}%
|
||||||
|
\ifdim\@photoframewidth=0pt%
|
||||||
|
\setlength{\fboxsep}{0pt}\fi%
|
||||||
|
{\color{pictureframecolor}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}%
|
||||||
|
% name (pre-rendering)
|
||||||
|
\@initializelength{\makecvheadpicturewidth}%
|
||||||
|
\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
|
||||||
|
\@initializebox{\makecvheadnamebox}%
|
||||||
|
\savebox{\makecvheadnamebox}{%
|
||||||
|
\parbox[b]{\textwidth-\makecvheadpicturewidth}{%
|
||||||
|
\if@left\raggedright\fi%
|
||||||
|
\if@right\raggedleft\fi%
|
||||||
|
\namefont%
|
||||||
|
\if@alternate% alternate design: first- and lastname in lowercase with no space in between (distinction is made by color difference)
|
||||||
|
{\color{firstnamecolor}\MakeLowercase\@firstname}{\color{lastnamecolor}\MakeLowercase\@lastname}%
|
||||||
|
\else% default design: first- and lastname as given with a space in between
|
||||||
|
{\color{firstnamecolor}\@firstname} {\color{lastnamecolor}\@lastname}\fi}}%
|
||||||
|
% rendering
|
||||||
|
\if@left%
|
||||||
|
\usebox{\makecvheadnamebox}%
|
||||||
|
\usebox{\makecvheadpicturebox}\fi
|
||||||
|
\if@right%
|
||||||
|
\usebox{\makecvheadpicturebox}%
|
||||||
|
\usebox{\makecvheadnamebox}\fi\\[-.35em]%
|
||||||
|
{\color{headrulecolor}\rule{\textwidth}{.25ex}}%
|
||||||
|
% optional detailed information
|
||||||
|
\if@details{%
|
||||||
|
\\\null%
|
||||||
|
\addressfont\color{addresscolor}%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
|
||||||
|
\flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
|
||||||
|
\flushmakeheaddetails}\fi% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
|
||||||
|
% optional title
|
||||||
|
\ifthenelse{\equal{\@title}{}}{}{%
|
||||||
|
\\[1.25em]\null% \null is required as there is no box on the line after \\, so glue such as \hfill (and leaders) disappear; this is in contrast to after \par, where the next line starts with an indent box (even after \noindent)
|
||||||
|
\if@right\hfill\fi%
|
||||||
|
\if@alternate%
|
||||||
|
\titlestyle{\MakeLowercase\@title}%
|
||||||
|
\else%
|
||||||
|
\titlestyle{\@title}\fi%
|
||||||
|
}
|
||||||
|
% optional quote
|
||||||
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
|
{\vspace{2.5em}}%
|
||||||
|
{%
|
||||||
|
\\[2.5em]%
|
||||||
|
{%
|
||||||
|
\centering%
|
||||||
|
\begin{minipage}{\quotewidth}%
|
||||||
|
\centering%
|
||||||
|
\quotestyle{\@quote}%
|
||||||
|
\end{minipage}\\[2.5em]}}%
|
||||||
|
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
%\renewcommand*{\recomputeletterheadlengths}{}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makeletterhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputeletterlengths%
|
||||||
|
% recipient block
|
||||||
|
\begin{minipage}[t]{.5\textwidth}
|
||||||
|
\raggedright%
|
||||||
|
\addressfont%
|
||||||
|
{\bfseries\upshape\@recipientname}\\%
|
||||||
|
\@recipientaddress%
|
||||||
|
\end{minipage}
|
||||||
|
% date
|
||||||
|
\hfill% US style
|
||||||
|
% \\[1em]% UK style
|
||||||
|
\@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
|
||||||
|
% optional subject
|
||||||
|
\ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
|
||||||
|
% opening
|
||||||
|
\raggedright%
|
||||||
|
\@opening\\[1.5em]%
|
||||||
|
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
||||||
|
% \ignorespacesafterend% not working
|
||||||
|
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvheadii.sty'.
|
||||||
190
moderncvheadiii.sty
Normal file
190
moderncvheadiii.sty
Normal file
|
|
@ -0,0 +1,190 @@
|
||||||
|
%% start of file `moderncvheadiii.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvheadiii}[2026-01-31 v2.5.1 modern curriculum vitae and letter header variant: 3]
|
||||||
|
|
||||||
|
% details options: "details" (default) or "nodetails"
|
||||||
|
\@initializeif{\if@details}\@detailsfalse
|
||||||
|
\DeclareOption{details}{\@detailstrue}
|
||||||
|
\DeclareOption{nodetails}{\@detailsfalse}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{details}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\namefont}{\Huge\bfseries\upshape}
|
||||||
|
\renewcommand*{\titlefont}{\Huge\mdseries\upshape}
|
||||||
|
\renewcommand*{\addressfont}{\normalsize\mdseries\upshape}
|
||||||
|
\renewcommand*{\quotefont}{\large\slshape}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
|
||||||
|
\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
|
||||||
|
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
|
||||||
|
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\@initializecommand{\makeheaddetailssymbol}{%
|
||||||
|
{\hspace{1em}{\rmfamily\textbullet}\hspace{1em}}}% 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
|
||||||
|
% 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{\makeheaddetailsbox}%
|
||||||
|
\@initializebox{\makeheaddetailstempbox}%
|
||||||
|
\@initializelength{\makeheaddetailswidth}%
|
||||||
|
\@initializelength{\makeheaddetailsboxwidth}%
|
||||||
|
\@initializeif{\if@firstmakeheaddetailselement}\@firstmakeheaddetailselementtrue%
|
||||||
|
% adds an element to the makehead, separated by makeheadsymbol
|
||||||
|
% usage: \addtomakehead[makeheadsymbol]{element}
|
||||||
|
\newcommand*{\addtomakeheaddetails}[2][\makeheaddetailssymbol]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
|
||||||
|
\if@firstmakeheaddetailselement%
|
||||||
|
\savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#2}%
|
||||||
|
\else%
|
||||||
|
\savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#1#2}\fi%
|
||||||
|
\settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailstempbox}}%
|
||||||
|
\ifnum\makeheaddetailsboxwidth<\makeheaddetailswidth%
|
||||||
|
\savebox{\makeheaddetailsbox}{\usebox{\makeheaddetailstempbox}}%
|
||||||
|
\@firstmakeheaddetailselementfalse%
|
||||||
|
\else%
|
||||||
|
\flushmakeheaddetails\\%
|
||||||
|
\savebox{\makeheaddetailsbox}{#2}%
|
||||||
|
\savebox{\makeheaddetailstempbox}{#2}%
|
||||||
|
\settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailsbox}}%
|
||||||
|
\@firstmakeheaddetailselementfalse\fi}
|
||||||
|
% internal command to flush the makehead
|
||||||
|
\@initializecommand{\flushmakeheaddetails}{%
|
||||||
|
\ifnum\makeheaddetailsboxwidth>0%
|
||||||
|
\strut\usebox{\makeheaddetailsbox}%
|
||||||
|
\savebox{\makeheaddetailsbox}{}%
|
||||||
|
\savebox{\makeheaddetailstempbox}{}%
|
||||||
|
\setlength{\makeheaddetailsboxwidth}{0pt}\fi}
|
||||||
|
\@initializecommand{\makehead}{%
|
||||||
|
\setlength{\makeheaddetailswidth}{0.8\textwidth}%
|
||||||
|
\hfil%
|
||||||
|
\parbox{\makeheaddetailswidth}{%
|
||||||
|
\centering%
|
||||||
|
% name and title
|
||||||
|
\firstnamestyle{\@firstname\ }\lastnamestyle{\@lastname}%
|
||||||
|
\ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title)
|
||||||
|
% optional detailed information
|
||||||
|
\if@details{%
|
||||||
|
\\%
|
||||||
|
\addressfont\color{addresscolor}%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
|
||||||
|
\flushmakeheaddetails\@firstmakeheaddetailselementtrue\\}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
|
||||||
|
\flushmakeheaddetails}\fi}}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
\@initializelength{\quotewidth}
|
||||||
|
\renewcommand*{\recomputecvheadlengths}{%
|
||||||
|
\setlength{\quotewidth}{0.65\textwidth}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makecvhead}{% TODO: use \@initializecommand, which requires modifying its definition to handle \par
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputecvlengths%
|
||||||
|
\makehead%
|
||||||
|
% optional quote
|
||||||
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
|
{\vspace{2.5em}}%
|
||||||
|
{%
|
||||||
|
\\[2.5em]%
|
||||||
|
{%
|
||||||
|
\centering%
|
||||||
|
\begin{minipage}{\quotewidth}%
|
||||||
|
\centering%
|
||||||
|
\quotestyle{\@quote}%
|
||||||
|
\end{minipage}\\[2.5em]}}%
|
||||||
|
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
%\renewcommand*{\recomputeletterheadlengths}{}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makeletterhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputeletterlengths%
|
||||||
|
% sender contact info
|
||||||
|
\hfill%
|
||||||
|
\begin{minipage}{.5\textwidth}%
|
||||||
|
% optional detailed information
|
||||||
|
\if@details%
|
||||||
|
\raggedleft%
|
||||||
|
\addressfont\textcolor{color2}{%
|
||||||
|
{\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
|
||||||
|
% optional detailed information
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
|
||||||
|
\end{minipage}\\[2em]
|
||||||
|
% recipient block
|
||||||
|
\begin{minipage}[t]{.5\textwidth}
|
||||||
|
\raggedright%
|
||||||
|
\addressfont%
|
||||||
|
{\bfseries\upshape\@recipientname}\\%
|
||||||
|
\@recipientaddress%
|
||||||
|
\end{minipage}
|
||||||
|
% date
|
||||||
|
\hfill% US style
|
||||||
|
% \\[1em]% UK style
|
||||||
|
\@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
|
||||||
|
% optional subject
|
||||||
|
\ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
|
||||||
|
% opening
|
||||||
|
\raggedright%
|
||||||
|
\@opening\\[1.5em]%
|
||||||
|
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
||||||
|
% \ignorespacesafterend% not working
|
||||||
|
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvheadiii.sty'.
|
||||||
178
moderncvheadiv.sty
Normal file
178
moderncvheadiv.sty
Normal file
|
|
@ -0,0 +1,178 @@
|
||||||
|
%% start of file `moderncvheadiv.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvheadiv}[2026-01-31 v2.5.1 modern curriculum vitae and letter header variant: 4]
|
||||||
|
|
||||||
|
% details options: "details" (default) or "nodetails"
|
||||||
|
\@initializeif{\if@details}\@detailsfalse
|
||||||
|
\DeclareOption{details}{\@detailstrue}
|
||||||
|
\DeclareOption{nodetails}{\@detailsfalse}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{details}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% change the layout of the page on the fly, for resume or letter layout
|
||||||
|
\RequirePackage{changepage}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
|
||||||
|
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
|
||||||
|
\renewcommand*{\addressfont}{\small\mdseries}
|
||||||
|
\renewcommand*{\quotefont}{\large\itshape}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
|
||||||
|
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
|
||||||
|
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
|
||||||
|
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
|
||||||
|
\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
\@initializelength{\quotewidth}
|
||||||
|
\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
|
||||||
|
\setlength{\marginparwidth}{0\p@}
|
||||||
|
\setlength{\marginparsep}{0\p@}
|
||||||
|
\renewcommand*{\recomputecvheadlengths}{%
|
||||||
|
\changepage{}{+\marginparwidth+\marginparsep}{}{}{}{}{}{}{}% if a letter was typeset before the resume, \marginparwidth and \marginparsep will be non-zero; otherwise, this has no effect
|
||||||
|
\setlength{\marginparwidth}{0\p@}%
|
||||||
|
\setlength{\marginparsep}{0\p@}%
|
||||||
|
\setlength{\quotewidth}{0.85\textwidth}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\newcommand*{\makecvheadinfo}[1]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
|
||||||
|
\newbox{\makecvheadinfobox}%
|
||||||
|
\savebox{\makecvheadinfobox}{\parbox[t]{\hintscolumnwidth}{#1}}%
|
||||||
|
\newlength{\makecvheadinfoheight}%
|
||||||
|
\setlength{\makecvheadinfoheight}{\totalheightof{\usebox{\makecvheadinfobox}}}% the total height of the parbox is the sum of its height (\the\ht\makeinfobox) and its depth (\the\dp\makeinfobox); the \totalheightof command is provided by the "calc" package
|
||||||
|
\usebox{\makecvheadinfobox}\vspace{-\makecvheadinfoheight}%
|
||||||
|
% \newlength{\leftcolumnwidth}%
|
||||||
|
% \setlength{\leftcolumnwidth}{\hintscolumnwidth+\separatorcolumnwidth}%
|
||||||
|
% \par\vspace{-\baselineskip}\vspace{-\parskip}\leftskip=\leftcolumnwidth%
|
||||||
|
\par\vspace{-\baselineskip}\vspace{-\parskip}%
|
||||||
|
\leftskip=\dimexpr\hintscolumnwidth+\separatorcolumnwidth\relax% \dimexpr require e-TeX engine extensions
|
||||||
|
\recomputecvlengths} % need to recompute the layout lengths as we just changed \leftskip
|
||||||
|
\renewcommand*{\makecvhead}{
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputecvlengths%
|
||||||
|
% optional picture box
|
||||||
|
\newbox{\makecvheadpicturebox}%
|
||||||
|
\savebox{\makecvheadpicturebox}{%
|
||||||
|
\ifthenelse{\isundefined{\@photo}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\color{pictureframecolor}%
|
||||||
|
\setlength\fboxrule{\@photoframewidth}%
|
||||||
|
\ifdim\@photoframewidth=0pt%
|
||||||
|
\setlength{\fboxsep}{0pt}\fi%
|
||||||
|
\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}%
|
||||||
|
% name and optional title
|
||||||
|
\newlength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
|
||||||
|
\ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt)
|
||||||
|
{\setlength{\makecvheadnamewidth}{\textwidth-\makecvheadpicturewidth}}%
|
||||||
|
{}%
|
||||||
|
\begin{minipage}[b]{\makecvheadnamewidth}%
|
||||||
|
\firstnamestyle{\@firstname\ }\lastnamestyle{\@lastname}%
|
||||||
|
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
|
||||||
|
\end{minipage}%
|
||||||
|
% optional photo
|
||||||
|
\usebox{\makecvheadpicturebox}\\[2.5em]%
|
||||||
|
% optional quote
|
||||||
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
|
{}%
|
||||||
|
{{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
|
||||||
|
% optional details
|
||||||
|
\if@details%
|
||||||
|
\makecvheadinfo{%
|
||||||
|
\addressfont\color{addresscolor}%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\makenewline\hbox to 1.0em{\bornsymbol}~\@born}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
%\newlength{\textwidthdelta}%
|
||||||
|
\renewcommand*{\recomputeletterheadlengths}{%
|
||||||
|
\recomputecvlengths%
|
||||||
|
% \setlength{\textwidthdelta}{+\marginparwidth+\marginparsep}%
|
||||||
|
% \addtolength{\textwidthdelta}{-\marginparwidth-\marginparsep}%
|
||||||
|
% \changepage{}{\textwidthdelta}{-\textwidthdelta}{}{}{}{}{}{}%\changepage{<textheight>}{<textwidth>}{<evensidemargin>}{<oddsidemargin>}{<columnsep>}{<topmargin>}{<headheight>}{<headsep>}{<footskip>}
|
||||||
|
\setlength{\marginparwidth}{\hintscolumnwidth}%
|
||||||
|
\setlength{\marginparsep}{2\separatorcolumnwidth}%
|
||||||
|
\changepage{}{-\marginparwidth-\marginparsep}{}{}{}{}{}{}{}%\changepage{<textheight>}{<textwidth>}{<evensidemargin>}{<oddsidemargin>}{<columnsep>}{<topmargin>}{<headheight>}{<headsep>}{<footskip>}
|
||||||
|
}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makeletterhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\leftskip=0pt% needs to be set before \recomputeletterlengths
|
||||||
|
\recomputeletterlengths%
|
||||||
|
% recipient block
|
||||||
|
{\addressfont%
|
||||||
|
{\bfseries\upshape\@recipientname}\\%
|
||||||
|
\@recipientaddress}\\[1em]%
|
||||||
|
% date
|
||||||
|
\@date\\[2em]%
|
||||||
|
% optional subject
|
||||||
|
\ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
|
||||||
|
% opening
|
||||||
|
\@opening\\[1.5em]%
|
||||||
|
% sender contact info
|
||||||
|
\if@details%
|
||||||
|
\hspace{0pt}%
|
||||||
|
\marginpar{%
|
||||||
|
\addressfont\textcolor{addresscolor}{%
|
||||||
|
{\bfseries\@firstname~\@lastname}\@firstdetailselementfalse%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}}%
|
||||||
|
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
||||||
|
%\ignorespacesafterend% not working
|
||||||
|
\par\vspace{-\baselineskip}\vspace{-\parskip}\fi}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvheadiv.sty'.
|
||||||
191
moderncvheadv.sty
Normal file
191
moderncvheadv.sty
Normal file
|
|
@ -0,0 +1,191 @@
|
||||||
|
%% start of file `moderncvheadv.sty'.
|
||||||
|
%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvheadv}[2026-01-31 v2.5.1 modern curriculum vitae and letter header variant: 5]
|
||||||
|
|
||||||
|
% details options: "details" (default) or "nodetails"
|
||||||
|
\@initializeif{\if@details}\@detailsfalse
|
||||||
|
\DeclareOption{details} {\@detailstrue}
|
||||||
|
\DeclareOption{nodetails} {\@detailsfalse}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{details}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
|
||||||
|
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
|
||||||
|
\renewcommand*{\addressfont}{\small\mdseries\slshape}
|
||||||
|
\renewcommand*{\quotefont}{\large\slshape}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
|
||||||
|
\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
|
||||||
|
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
|
||||||
|
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
\@initializelength{\quotewidth}
|
||||||
|
\renewcommand*{\recomputecvheadlengths}{%
|
||||||
|
\setlength{\quotewidth}{0.65\textwidth}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makecvhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputecvlengths%
|
||||||
|
% optional photo (pre-rendering)
|
||||||
|
\@initializebox{\makecvheadpicturebox}%
|
||||||
|
\savebox{\makecvheadpicturebox}{%
|
||||||
|
\ifthenelse{\isundefined{\@photo}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\color{pictureframecolor}%
|
||||||
|
\setlength{\fboxrule}{\@photoframewidth}%
|
||||||
|
\ifdim\@photoframewidth=0pt%
|
||||||
|
\setlength{\fboxsep}{0pt}\fi%
|
||||||
|
\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}%
|
||||||
|
% rendering
|
||||||
|
\@makecvtitle%
|
||||||
|
{%
|
||||||
|
\raggedleft%
|
||||||
|
% optional photo
|
||||||
|
\usebox{\makecvheadpicturebox}%
|
||||||
|
% optional details
|
||||||
|
\if@details%
|
||||||
|
\ifthenelse{\isundefined{\@photo}}{}{\\[0.5em]}%
|
||||||
|
\addressfont\color{addresscolor}%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol~\@born}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\makenewline\csname\collectionloopkey phonesymbol\endcsname~\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol~\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\makenewline\csname\collectionloopkey socialsymbol\endcsname~\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}\fi}%
|
||||||
|
{%
|
||||||
|
% name and optional title
|
||||||
|
\newlength{\makecvheadpictureboxskip}%
|
||||||
|
\setlength{\makecvheadpictureboxskip}{\totalheightof{\usebox{\makecvheadpicturebox}}}%
|
||||||
|
\firstnamestyle{\@firstname\ }\lastnamestyle{\@lastname}%
|
||||||
|
\ifthenelse{\equal{\@title}{}}{
|
||||||
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\\[1.25em]%
|
||||||
|
\begin{minipage}{\quotewidth}%
|
||||||
|
\quotestyle{\@quote}%
|
||||||
|
\end{minipage}}%
|
||||||
|
}{%
|
||||||
|
\\[1.25em]%
|
||||||
|
\titlestyle{\@title}
|
||||||
|
% optional quote
|
||||||
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
|
{\vspace{2.5em}}%
|
||||||
|
{%
|
||||||
|
\\[2.5em]%
|
||||||
|
\begin{minipage}{\quotewidth}%
|
||||||
|
\quotestyle{\@quote}
|
||||||
|
\end{minipage}}}}%
|
||||||
|
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
|
||||||
|
|
||||||
|
% underlying command to implement \makecvtitle, identical to \@cvitem from moderncvbodyv
|
||||||
|
\let\standarddoublebackslash\\%
|
||||||
|
\newcommand*{\@makecvtitle}[3][.5ex]{%
|
||||||
|
\arrayrulecolor{headrulecolor}%
|
||||||
|
\setlength\arrayrulewidth{1.2\p@}%
|
||||||
|
\if@aftersection\else%
|
||||||
|
\vspace*{-\arrayrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
|
||||||
|
\noindent%
|
||||||
|
\begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
|
||||||
|
\@moderncvstrut{4pt}{16pt}%
|
||||||
|
\begin{minipage}[t]{\hintscolumnwidth}#2\end{minipage}
|
||||||
|
&\begin{minipage}[t]{\maincolumnwidth}#3\end{minipage}%
|
||||||
|
\\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly
|
||||||
|
\end{tabular}%
|
||||||
|
\par\@aftersectionfalse\ignorespaces}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
%\renewcommand*{\recomputeletterheadlengths}{}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makeletterhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputeletterlengths%
|
||||||
|
% sender contact info
|
||||||
|
\hfill%
|
||||||
|
\begin{minipage}{.5\textwidth}%
|
||||||
|
% optional detailed information
|
||||||
|
\if@details%
|
||||||
|
\raggedleft%
|
||||||
|
\addressfont\textcolor{addresscolor}{%
|
||||||
|
{\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
|
||||||
|
% optional detailed information
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
|
||||||
|
\end{minipage}\\[2em]
|
||||||
|
% recipient block
|
||||||
|
\begin{minipage}[t]{.5\textwidth}
|
||||||
|
\raggedright%
|
||||||
|
\addressfont%
|
||||||
|
{\bfseries\upshape\@recipientname}\\%
|
||||||
|
\@recipientaddress%
|
||||||
|
\end{minipage}
|
||||||
|
% date
|
||||||
|
\hfill% US style
|
||||||
|
% \\[1em]% UK style
|
||||||
|
\@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
|
||||||
|
% optional subject
|
||||||
|
\ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
|
||||||
|
% opening
|
||||||
|
\raggedright%
|
||||||
|
\@opening\\[1.5em]%
|
||||||
|
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
||||||
|
% \ignorespacesafterend% not working
|
||||||
|
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvheadv.sty'.
|
||||||
174
moderncvheadvi.sty
Normal file
174
moderncvheadvi.sty
Normal file
|
|
@ -0,0 +1,174 @@
|
||||||
|
%% start of file `moderncvheadvi.sty'.
|
||||||
|
%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvheadvi}[2026-01-31 v2.5.1 modern curriculum vitae and letter header: 6]
|
||||||
|
|
||||||
|
% details options: "details" (default) or "nodetails"
|
||||||
|
\@initializeif{\if@details}\@detailsfalse
|
||||||
|
\DeclareOption{details}{\@detailstrue}
|
||||||
|
\DeclareOption{nodetails}{\@detailsfalse}
|
||||||
|
|
||||||
|
% left/right options: "left" (default) or "right"
|
||||||
|
\@initializeif{\if@left} \@leftfalse
|
||||||
|
\DeclareOption{left} {\@lefttrue\@rightfalse}
|
||||||
|
\@initializeif{\if@right}\@rightfalse
|
||||||
|
\DeclareOption{right} {\@leftfalse\@righttrue}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{details,left}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\namefont}{\Huge\bfseries\upshape}
|
||||||
|
\renewcommand*{\titlefont}{\Huge\mdseries\upshape}
|
||||||
|
\renewcommand*{\addressfont}{\normalsize\mdseries\upshape}
|
||||||
|
\renewcommand*{\quotefont}{\large\slshape}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
|
||||||
|
\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
|
||||||
|
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
|
||||||
|
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
|
||||||
|
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\@initializecommand{\makehead}{%
|
||||||
|
\setlength{\makeheaddetailswidth}{\textwidth}%
|
||||||
|
% name and title
|
||||||
|
\if@left\hfill\fi%
|
||||||
|
\firstnamestyle{\@firstname\ }\lastnamestyle{\@lastname}%
|
||||||
|
\ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}\\[-.35em]% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title)
|
||||||
|
% rule
|
||||||
|
{\color{bodyrulecolor}\rule{\textwidth}{.25ex}}}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
\@initializelength{\quotewidth}
|
||||||
|
\renewcommand*{\recomputecvheadlengths}{%
|
||||||
|
\setlength{\quotewidth}{0.65\textwidth}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\@initializecommand{\makeheaddetailssymbol}{%
|
||||||
|
{\hspace{1em}{\rmfamily\textbullet}\hspace{1em}}}% 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
|
||||||
|
% 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{\makeheaddetailsbox}%
|
||||||
|
\@initializebox{\makeheaddetailstempbox}%
|
||||||
|
\@initializelength{\makeheaddetailswidth}%
|
||||||
|
\@initializelength{\makeheaddetailsboxwidth}%
|
||||||
|
\@initializeif{\if@firstmakeheaddetailselement}\@firstmakeheaddetailselementtrue%
|
||||||
|
% adds an element to the makehead, separated by makeheadsymbol
|
||||||
|
% usage: \addtomakehead[makeheadsymbol]{element}
|
||||||
|
\newcommand*{\addtomakeheaddetails}[2][\makeheaddetailssymbol]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
|
||||||
|
\if@firstmakeheaddetailselement%
|
||||||
|
\savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#2}%
|
||||||
|
\else%
|
||||||
|
\savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#1#2}\fi%
|
||||||
|
\settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailstempbox}}%
|
||||||
|
\ifnum\makeheaddetailsboxwidth<\makeheaddetailswidth%
|
||||||
|
\savebox{\makeheaddetailsbox}{\usebox{\makeheaddetailstempbox}}%
|
||||||
|
\@firstmakeheaddetailselementfalse%
|
||||||
|
\else%
|
||||||
|
\flushmakeheaddetails\\\null% \null is required as there is no box on the line after \\, so glue such as \hfill (and leaders) disappear; this is in contrast to after \par, where the next line starts with an indent box (even after \noindent)
|
||||||
|
\savebox{\makeheaddetailsbox}{#2}%
|
||||||
|
\savebox{\makeheaddetailstempbox}{#2}%
|
||||||
|
\settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailsbox}}%
|
||||||
|
\@firstmakeheaddetailselementfalse\fi}
|
||||||
|
% internal command to flush the makehead
|
||||||
|
\@initializecommand{\flushmakeheaddetails}{%
|
||||||
|
\if@right\hfill\fi%
|
||||||
|
\strut\usebox{\makeheaddetailsbox}%
|
||||||
|
\savebox{\makeheaddetailsbox}{}%
|
||||||
|
\savebox{\makeheaddetailstempbox}{}%
|
||||||
|
\setlength{\makeheaddetailsboxwidth}{0pt}}
|
||||||
|
\renewcommand*{\makecvhead}{% TODO: use \@initializecommand, which requires modifying its definition to handle \par
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputecvlengths%
|
||||||
|
\makehead%
|
||||||
|
% optional detailed information
|
||||||
|
\if@details{%
|
||||||
|
\\\null%
|
||||||
|
\addressfont\color{addresscolor}%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
|
||||||
|
\flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
|
||||||
|
\ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
|
||||||
|
\flushmakeheaddetails}\fi% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead; not forcing it here because of the possible quote
|
||||||
|
% optional quote
|
||||||
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
|
{}%
|
||||||
|
{{\\[1.25em]\null\hfill%
|
||||||
|
\begin{minipage}{\quotewidth}%
|
||||||
|
\centering\quotestyle{\@quote}%
|
||||||
|
\end{minipage}\hfill\null}}\\[2.5em]%
|
||||||
|
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
%\renewcommand*{\recomputeletterheadlengths}{}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makeletterhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputeletterlengths%
|
||||||
|
% sender block
|
||||||
|
\makehead\\[2.5em]%
|
||||||
|
\par% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
|
||||||
|
% recipient block
|
||||||
|
\begin{minipage}[t]{.5\textwidth}
|
||||||
|
\raggedright%
|
||||||
|
\addressfont%
|
||||||
|
{\bfseries\upshape\@recipientname}\\%
|
||||||
|
\@recipientaddress%
|
||||||
|
\end{minipage}
|
||||||
|
% date
|
||||||
|
\hfill% US style
|
||||||
|
% \\[1em]% UK style
|
||||||
|
\@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
|
||||||
|
% optional subject
|
||||||
|
\ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
|
||||||
|
% opening
|
||||||
|
\raggedright%
|
||||||
|
\@opening\\[1.5em]%
|
||||||
|
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
||||||
|
% \ignorespacesafterend% not working
|
||||||
|
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvheadvi.sty'.
|
||||||
246
moderncvheadvii.sty
Normal file
246
moderncvheadvii.sty
Normal file
|
|
@ -0,0 +1,246 @@
|
||||||
|
%% start of file `moderncvheadvii.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
|
||||||
|
%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me), 2024-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvheadvii}[2026-01-31 v2.5.1 modern curriculum vitae and letter header variant: 7]
|
||||||
|
|
||||||
|
% details options: "details" (default) or "nodetails"
|
||||||
|
\@initializeif{\if@details}\@detailsfalse
|
||||||
|
\DeclareOption{details} {\@detailstrue}
|
||||||
|
\DeclareOption{nodetails} {\@detailsfalse}
|
||||||
|
% QR options: "qr" (default) or "noqr". If "qr" is specified, a QR code is generated to point to the
|
||||||
|
% homepage and placed near the details section
|
||||||
|
\@initializeif{\if@headqr}\@headqrfalse
|
||||||
|
\DeclareOption{qr} {\@headqrtrue}
|
||||||
|
\DeclareOption{noqr} {\@headqrfalse}
|
||||||
|
|
||||||
|
% left/right options: "left" (default) or "right"
|
||||||
|
\@initializeif{\if@left} \@leftfalse
|
||||||
|
\DeclareOption{left} {\@lefttrue\@rightfalse}
|
||||||
|
\@initializeif{\if@right}\@rightfalse
|
||||||
|
\DeclareOption{right} {\@leftfalse\@righttrue}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{details,qr,left}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\RequirePackage{qrcode}
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\usetikzlibrary{tikzmark,fit,babel}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% overall head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\@ifundefined{\string\color@headTL}{\colorlet{headTL}{color1}}{}
|
||||||
|
\@ifundefined{\string\color@headBR}{\colorlet{headBR}{color1}}{}
|
||||||
|
\@ifundefined{\string\color@headtext}{\colorlet{headtext}{color2}}{}
|
||||||
|
\@ifundefined{\string\color@headhr}{\colorlet{headhr}{color2}}{}
|
||||||
|
|
||||||
|
% fonts
|
||||||
|
\renewcommand*{\namefont}{\fontsize{30}{32}\rmfamily\mdseries\upshape}
|
||||||
|
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
|
||||||
|
\renewcommand*{\addressfont}{\small\mdseries\slshape}
|
||||||
|
\renewcommand*{\quotefont}{\large\slshape}
|
||||||
|
|
||||||
|
% styles
|
||||||
|
\renewcommand*{\namestyle}[1]{{\namefont\textcolor{headtext}{#1}}}
|
||||||
|
\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{headtext}{#1}}}
|
||||||
|
\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{headtext}{#1}}}
|
||||||
|
\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color0}{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% resume head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
\@initializelength{\quotewidth}
|
||||||
|
\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
|
||||||
|
\renewcommand*{\recomputecvheadlengths}{%
|
||||||
|
\setlength{\quotewidth}{0.65\textwidth}}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makecvhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputecvlengths%
|
||||||
|
% optional detailed information (pre-rendering)
|
||||||
|
\@initializebox{\makecvheaddetailsbox}%
|
||||||
|
\if@details%
|
||||||
|
\def\phonesdetails{}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
||||||
|
\def\socialsdetails{}%
|
||||||
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
||||||
|
\protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
|
||||||
|
\savebox{\makecvheaddetailsbox}{%
|
||||||
|
\addressfont\color{headtext}%
|
||||||
|
\if@left\begin{tabular}[b]{@{}r@{}}\fi%
|
||||||
|
\if@right\begin{tabular}[b]{@{}l@{}}\fi%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}%
|
||||||
|
\phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
|
||||||
|
\socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
|
||||||
|
\end{tabular}%
|
||||||
|
}\fi%
|
||||||
|
% optional photo (pre-rendering)
|
||||||
|
\@initializebox{\makecvheadpicturebox}%
|
||||||
|
\savebox{\makecvheadpicturebox}{%
|
||||||
|
\ifthenelse{\isundefined{\@photo}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\if@right%
|
||||||
|
\hspace*{\separatorcolumnwidth}\fi%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\path[top color=headBR,bottom color=headTL,shading angle=45] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth*2);
|
||||||
|
\path[fill=white] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth);
|
||||||
|
\begin{scope}
|
||||||
|
\clip (0,0) circle (\dimexpr\@photowidth/2);
|
||||||
|
\node[inner sep=0pt] at (0,0) {\includegraphics[width=\@photowidth]{\@photo}};
|
||||||
|
\end{scope}
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\if@left%
|
||||||
|
\hspace*{\separatorcolumnwidth}\fi}%
|
||||||
|
}%
|
||||||
|
% optional QR for homepage (pre-rendering)
|
||||||
|
\@initializebox{\makecvheadqrbox}%
|
||||||
|
\if@headqr%
|
||||||
|
\savebox{\makecvheadqrbox}{%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}%
|
||||||
|
}\fi%
|
||||||
|
% name and title (pre-rendering)
|
||||||
|
\@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}%
|
||||||
|
\@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
|
||||||
|
\ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt)
|
||||||
|
{\setlength{\makecvheadnamewidth}{\textwidth-\makecvheaddetailswidth-\makecvheadpicturewidth}}%
|
||||||
|
{}%
|
||||||
|
\@initializebox{\makecvheadnamebox}%
|
||||||
|
\savebox{\makecvheadnamebox}{%
|
||||||
|
\begin{minipage}[b]{\makecvheadnamewidth}%
|
||||||
|
\if@left\raggedright\fi%
|
||||||
|
\if@right\raggedleft\fi%
|
||||||
|
\namestyle{\@firstname\ {\scshape\@lastname}}%
|
||||||
|
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
|
||||||
|
\end{minipage}}%
|
||||||
|
% rendering
|
||||||
|
\begin{tikzpicture}[remember picture,overlay]
|
||||||
|
\node(head-bg) [top color=headTL,bottom color=headBR,shading angle=45,inner sep=0pt,
|
||||||
|
fit={(current page.north west)(current page.north east)(pic cs:head-end)}] {};
|
||||||
|
% Users may define `\@moderncvheadBackground` for additional background decoration
|
||||||
|
\ifthenelse{\isundefined{\@moderncvheadBackground}}{}{\@moderncvheadBackground}
|
||||||
|
|
||||||
|
% case with no photo: assure defined \@photoframewidth with 2pt
|
||||||
|
\ifthenelse{\isundefined{\@photo}}{\@initializelength{\@photoframewidth}\setlength{\@photoframewidth}{2pt}}{}%
|
||||||
|
\path[draw,line width=\@photoframewidth]
|
||||||
|
(head-bg.south west) edge[color=headhr!85!black] ([xshift=8em]head-bg.south west)
|
||||||
|
([xshift=8em]head-bg.south west) edge[color=headhr] ([xshift=-8em]head-bg.south east)
|
||||||
|
([xshift=-8em]head-bg.south east) edge[color=headhr!85!black] (head-bg.south east);
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\if@left%
|
||||||
|
\usebox{\makecvheadpicturebox}%
|
||||||
|
\usebox{\makecvheadnamebox}%
|
||||||
|
\hfill%
|
||||||
|
\llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
|
||||||
|
\hspace{.5ex}\usebox{\makecvheadqrbox}\fi%
|
||||||
|
\if@right%
|
||||||
|
\usebox{\makecvheadqrbox}\hspace{.5ex}%
|
||||||
|
\rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
|
||||||
|
\hfill%
|
||||||
|
\usebox{\makecvheadnamebox}%
|
||||||
|
\usebox{\makecvheadpicturebox}\fi%
|
||||||
|
\\[.15em]%
|
||||||
|
\tikzmark{head-end}\\[.15em]%
|
||||||
|
% optional quote
|
||||||
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
|
{}%
|
||||||
|
{{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[.15em]}}%
|
||||||
|
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% letter head definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% lengths
|
||||||
|
%\renewcommand*{\recomputeletterheadlengths}{}
|
||||||
|
|
||||||
|
% commands
|
||||||
|
\renewcommand*{\makeletterhead}{%
|
||||||
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
||||||
|
\recomputeletterlengths%
|
||||||
|
|
||||||
|
\@initializebox{\makeletterdetailsbox}%
|
||||||
|
\if@details%
|
||||||
|
\def\phonesdetails{}%
|
||||||
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
||||||
|
\protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
||||||
|
\savebox{\makeletterdetailsbox}{%
|
||||||
|
\addressfont\color{headtext}%
|
||||||
|
\if@left\begin{tabular}[b]{@{}r@{}}\fi%
|
||||||
|
\if@right\begin{tabular}[b]{@{}l@{}}\fi%
|
||||||
|
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
||||||
|
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
|
||||||
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
|
||||||
|
\phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
|
||||||
|
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
||||||
|
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
|
||||||
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
|
||||||
|
\end{tabular}%
|
||||||
|
}\fi%
|
||||||
|
|
||||||
|
% name and title (pre-rendering)
|
||||||
|
\@initializelength{\makeletterdetailswidth}\settowidth{\makeletterdetailswidth}{\usebox{\makeletterdetailsbox}}%
|
||||||
|
|
||||||
|
% rendering
|
||||||
|
\begin{tikzpicture}[remember picture,overlay]
|
||||||
|
\node(letter-head-bg) [top color=headTL,bottom color=headBR,shading angle=45,inner sep=0pt,
|
||||||
|
fit={(current page.north west)(current page.north east)(pic cs:letter-head-end)}] {};
|
||||||
|
|
||||||
|
\end{tikzpicture}%
|
||||||
|
|
||||||
|
\hfill
|
||||||
|
\llap{\usebox{\makeletterdetailsbox}}% \llap is used to suppress
|
||||||
|
\\[.15em]%
|
||||||
|
\tikzmark{letter-head-end}\\[.15em]%
|
||||||
|
|
||||||
|
% recipient block
|
||||||
|
\begin{minipage}[t]{.5\textwidth}
|
||||||
|
\raggedright%
|
||||||
|
\addressfont%
|
||||||
|
{\bfseries\upshape\@recipientname}\\%
|
||||||
|
\@recipientaddress%
|
||||||
|
\end{minipage}
|
||||||
|
% date
|
||||||
|
\hfill% US style
|
||||||
|
% \\[1em]% UK style
|
||||||
|
\@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
|
||||||
|
% optional subject
|
||||||
|
\ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
|
||||||
|
% opening
|
||||||
|
\raggedright%
|
||||||
|
\@opening\\[1.5em]%
|
||||||
|
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
||||||
|
% \ignorespacesafterend% not working
|
||||||
|
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvheadvii.sty'.
|
||||||
68
moderncviconsacademic.sty
Normal file
68
moderncviconsacademic.sty
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
%% start of file `moderncviconsacademic.sty'.
|
||||||
|
%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncviconsacademic}[2026-01-31 v2.5.1 modern curriculum vitae icons: academicons]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Package for academic icons
|
||||||
|
\RequirePackage{academicons}
|
||||||
|
\RequirePackage{xcolor}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% set colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\usepackage{moderncvcolors}
|
||||||
|
|
||||||
|
\providecolor{orcid}{named}{default-socialicon-color}
|
||||||
|
\providecolor{researchgate}{named}{default-socialicon-color}
|
||||||
|
\providecolor{researcherid}{named}{default-socialicon-color}
|
||||||
|
\providecolor{googlescholar}{named}{default-socialicon-color}
|
||||||
|
\providecolor{arxiv}{named}{default-socialicon-color}
|
||||||
|
\providecolor{inspire}{named}{default-socialicon-color}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% all symbols described in moderncv.cls
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
%\newcommand*{\listitemsymbol} {\labelitemi~}
|
||||||
|
%\newcommand*{\addresssymbol} {}
|
||||||
|
%\newcommand*{\bornsymbol} {}
|
||||||
|
%\newcommand*{\mobilephonesymbol} {}
|
||||||
|
%\newcommand*{\fixedphonesymbol} {}
|
||||||
|
%\newcommand*{\faxphonesymbol} {}
|
||||||
|
%\newcommand*{\emailsymbol} {}
|
||||||
|
%\newcommand*{\homepagesymbol} {}
|
||||||
|
%\newcommand*{\linkedinsocialsymbol} {}
|
||||||
|
%\newcommand*{\xingsocialsymbol} {}
|
||||||
|
%\newcommand*{\twittersocialsymbol} {}
|
||||||
|
%\newcommand*{\githubsocialsymbol} {}
|
||||||
|
%\newcommand*{\gitlabsocialsymbol} {}
|
||||||
|
%\newcommand*{\stackoverflowsocialsymbol}{}
|
||||||
|
%\newcommand*{\bitbucketsocialsymbol} {}
|
||||||
|
%\newcommand*{\skypesocialsymbol} {}
|
||||||
|
\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\aiOrcid}~}
|
||||||
|
\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\aiResearchGateSquare}~} % alternative: \aiResearchGate
|
||||||
|
\renewcommand*{\researcheridsocialsymbol} {{\color{researcherid}\small\aiResearcherIDSquare}~} % alternative: \aiResearcherID
|
||||||
|
\renewcommand*{\googlescholarsocialsymbol}{{\color{googlescholar}\raisebox{-1pt}{\large\aiGoogleScholar}}~}
|
||||||
|
%\newcommand*{\telegramsocialsymbol} {}
|
||||||
|
%\newcommand*{\whatsappsocialsymbol} {}
|
||||||
|
%\newcommand*{\matrixsocialsymbol} {}
|
||||||
|
%\newcommand*{\signalsocialsymbol} {}
|
||||||
|
\renewcommand*{\arxivsocialsymbol}{{\color{arxiv}{\small\aiarXiv}}~}
|
||||||
|
\renewcommand*{\inspiresocialsymbol}{{\color{inspire}{\small\aiInspire}}~}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
%% end of file `moderncviconsacademic.sty'.
|
||||||
112
moderncviconsawesome.sty
Normal file
112
moderncviconsawesome.sty
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
%% start of file `moderncviconsawesome.sty'.
|
||||||
|
%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncviconsawesome}[2026-01-31 v2.5.1 modern curriculum vitae icons: awesome]
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Font Awesome font
|
||||||
|
\RequirePackage{fontawesome6}
|
||||||
|
\RequirePackage{xcolor}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% set colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\usepackage{moderncvcolors}
|
||||||
|
|
||||||
|
\providecolor{address}{named}{default-socialicon-color}
|
||||||
|
\providecolor{mobilephone}{named}{default-socialicon-color}
|
||||||
|
\providecolor{fixedphone}{named}{default-socialicon-color}
|
||||||
|
\providecolor{faxphone}{named}{default-socialicon-color}
|
||||||
|
\providecolor{email}{named}{default-socialicon-color}
|
||||||
|
\providecolor{homepage}{named}{default-socialicon-color}
|
||||||
|
\providecolor{googlescholar}{named}{default-socialicon-color}
|
||||||
|
\providecolor{linkedin}{named}{default-socialicon-color}
|
||||||
|
\providecolor{xing}{named}{default-socialicon-color}
|
||||||
|
\providecolor{twitter}{named}{default-socialicon-color}
|
||||||
|
\providecolor{mastodon}{named}{default-socialicon-color}
|
||||||
|
\providecolor{github}{named}{default-socialicon-color}
|
||||||
|
\providecolor{gitlab}{named}{default-socialicon-color}
|
||||||
|
\providecolor{stackoverflow}{named}{default-socialicon-color}
|
||||||
|
\providecolor{bitbucket}{named}{default-socialicon-color}
|
||||||
|
\providecolor{skype}{named}{default-socialicon-color}
|
||||||
|
\providecolor{orcid}{named}{default-socialicon-color}
|
||||||
|
\providecolor{researchgate}{named}{default-socialicon-color}
|
||||||
|
\providecolor{telegram}{named}{default-socialicon-color}
|
||||||
|
\providecolor{whatsapp}{named}{default-socialicon-color}
|
||||||
|
\providecolor{discord}{named}{default-socialicon-color}
|
||||||
|
\providecolor{twitch}{named}{default-socialicon-color}
|
||||||
|
\providecolor{youtube}{named}{default-socialicon-color}
|
||||||
|
\providecolor{tiktok}{named}{default-socialicon-color}
|
||||||
|
\providecolor{instagram}{named}{default-socialicon-color}
|
||||||
|
\providecolor{soundcloud}{named}{default-socialicon-color}
|
||||||
|
\providecolor{steam}{named}{default-socialicon-color}
|
||||||
|
\providecolor{xbox}{named}{default-socialicon-color}
|
||||||
|
\providecolor{playstation}{named}{default-socialicon-color}
|
||||||
|
\providecolor{battlenet}{named}{default-socialicon-color}
|
||||||
|
\providecolor{born}{named}{default-socialicon-color}
|
||||||
|
\providecolor{signal}{named}{default-socialicon-color}
|
||||||
|
\providecolor{medium}{named}{default-socialicon-color}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% all symbols described in moderncv.cls
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\renewcommand*{\labelitemi} {\strut\textcolor{color1}{\tiny\faCircle[regular]}} % alternative: \faCircle (solid style)
|
||||||
|
%\renewcommand*{\labelitemii} {\strut\textcolor{color1}{\large\bfseries-}} % no change from default in moderncv.cls
|
||||||
|
%\renewcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls
|
||||||
|
%\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls
|
||||||
|
|
||||||
|
|
||||||
|
%\renewcommand*{\addresssymbol} {}
|
||||||
|
\renewcommand*{\mobilephonesymbol} {{\color{mobilephone}\small\faMobile*}~} % alternative: \faMobile (solid style)
|
||||||
|
\renewcommand*{\fixedphonesymbol} {{\color{fixedphone}\small\faPhone*}~} % alternative: \faPhone (reversed)
|
||||||
|
\renewcommand*{\faxphonesymbol} {{\color{faxphone}\small\faFax}~} % alternative: \faPrint
|
||||||
|
\renewcommand*{\emailsymbol} {{\color{email}\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style)
|
||||||
|
\renewcommand*{\homepagesymbol} {{\color{homepage}\small\faEarthAmericas}~} % alternative: \faHome, \faGlobe, \faEarthEurope, \faEarthAfrica, \faEarthAsia, \faEarthOceania
|
||||||
|
\renewcommand*{\linkedinsocialsymbol} {{\color{linkedin}\small\faLinkedinIn}~} % alternative: \faLinkedin
|
||||||
|
\renewcommand*{\xingsocialsymbol} {{\color{xing}\small\faXing}~} % alternative: \faXingSquare
|
||||||
|
\renewcommand*{\twittersocialsymbol} {{\color{twitter}\small\faTwitter}~} % alternative: \faTwitterSquare
|
||||||
|
\renewcommand*{\mastodonsocialsymbol} {{\color{mastodon}\small\faMastodon}~}
|
||||||
|
\renewcommand*{\githubsocialsymbol} {{\color{github}\small\faGithub}~} % alternative: \faGithubSquare, \faGithub*
|
||||||
|
\renewcommand*{\gitlabsocialsymbol} {{\color{gitlab}\small\faGitlab}~}
|
||||||
|
\renewcommand*{\stackoverflowsocialsymbol}{{\color{stackoverflow}\small\faStackOverflow}~}
|
||||||
|
\renewcommand*{\bitbucketsocialsymbol} {{\color{bitbucket}\small\faBitbucket}~}
|
||||||
|
\renewcommand*{\skypesocialsymbol} {{\color{skype}\small\faSkype}~}
|
||||||
|
\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\faOrcid}~}
|
||||||
|
\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\faResearchgate}~}
|
||||||
|
%\renewcommand*{\researcheridsocialsymbol} {}
|
||||||
|
%\renewcommand*{\googlescholarsocialsymbol}{}
|
||||||
|
\renewcommand*{\telegramsocialsymbol} {{\color{telegram}\small\faTelegram}~}
|
||||||
|
\renewcommand*{\whatsappsocialsymbol} {{\color{whatsapp}\small\faWhatsapp}~}
|
||||||
|
\renewcommand*{\discordsocialsymbol} {{\color{discord}\small\faDiscord}~}
|
||||||
|
\renewcommand*{\twitchsocialsymbol} {{\color{twitch}\small\faTwitch}~}
|
||||||
|
\renewcommand*{\youtubesocialsymbol} {{\color{youtube}\small\faYoutube}~}
|
||||||
|
\renewcommand*{\tiktoksocialsymbol} {{\color{tiktok}\small\faTiktok}~}
|
||||||
|
\renewcommand*{\instagramsocialsymbol} {{\color{instagram}\small\faInstagram}~}
|
||||||
|
\renewcommand*{\soundcloudsocialsymbol} {{\color{soundcloud}\small\faSoundcloud}~}
|
||||||
|
\renewcommand*{\steamsocialsymbol} {{\color{steam}\small\faSteam}~}
|
||||||
|
\renewcommand*{\xboxsocialsymbol} {{\color{xbox}\small\faXbox}~}
|
||||||
|
\renewcommand*{\playstationsocialsymbol} {{\color{playstation}\small\faPlaystation}~}
|
||||||
|
\renewcommand*{\battlenetsocialsymbol} {{\color{battlenet}\small\faBattleNet}~}
|
||||||
|
\renewcommand*{\signalsocialsymbol} {{\color{signal}\small\faSignalMessenger}~}
|
||||||
|
%\renewcommand*{\matrixsocialsymbol} {}
|
||||||
|
% \renewcommand*{\arxivsocialsymbol} {{\color{arxiv}{\small\faarXiv}}~}
|
||||||
|
% \renewcommand*{\inspiresocialsymbol} {{\color{inspire}{\small\faInspire}}~}
|
||||||
|
\renewcommand*{\bornsymbol} {{\color{born}\small\faAsterisk}~} % alternative: \faBabyCarriage
|
||||||
|
\renewcommand*{\mediumsocialsymbol} {{\color{medium}\small\faMedium}~}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncviconsawesome.sty'.
|
||||||
71
moderncviconsletters.sty
Normal file
71
moderncviconsletters.sty
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
%% start of file `moderncviconsletters.sty'.
|
||||||
|
%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncviconsletters}[2026-01-31 v2.5.1 modern curriculum vitae icons: letter]
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% symbols definition
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\newcommand*{\marvosymbol}[1]{{\fontfamily{mvs}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\labelitemi} {\strut\textcolor{color1}{\marvosymbol{123}}} % equivalent to \Neutral from marvosym package; alternative: \fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}
|
||||||
|
%\renewcommand*{\labelitemii} {\strut\textcolor{color1}{\large\bfseries-}} % no change from default in moderncv.cls
|
||||||
|
%\renewcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls
|
||||||
|
%\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls
|
||||||
|
|
||||||
|
\renewcommand*{\addresssymbol} {}
|
||||||
|
\renewcommand*{\mobilephonesymbol} {\textbf{M}~}
|
||||||
|
\renewcommand*{\fixedphonesymbol} {\textbf{T}~}
|
||||||
|
\renewcommand*{\faxphonesymbol} {\textbf{F}~}
|
||||||
|
\renewcommand*{\emailsymbol} {\textbf{E}~}
|
||||||
|
\renewcommand*{\homepagesymbol} {\textbf{W}~}
|
||||||
|
\renewcommand*{\linkedinsocialsymbol} {\textbf{in}~}
|
||||||
|
\renewcommand*{\xingsocialsymbol} {\textbf{xi}~}
|
||||||
|
\renewcommand*{\twittersocialsymbol} {\textbf{tw}~}
|
||||||
|
\renewcommand*{\mastodonsocialsymbol} {\textbf{ms}~}
|
||||||
|
\renewcommand*{\githubsocialsymbol} {\textbf{gh}~}
|
||||||
|
\renewcommand*{\gitlabsocialsymbol} {\textbf{gl}~}
|
||||||
|
\renewcommand*{\stackoverflowsocialsymbol}{\textbf{so}~}
|
||||||
|
\renewcommand*{\bitbucketsocialsymbol} {\textbf{bb}~}
|
||||||
|
\renewcommand*{\skypesocialsymbol} {\textbf{sk}~}
|
||||||
|
\renewcommand*{\orcidsocialsymbol} {\textbf{orcid}~}
|
||||||
|
\renewcommand*{\mediumsocialsymbol} {\textbf{Me}~}
|
||||||
|
\renewcommand*{\researchgatesocialsymbol} {\textbf{rg}~}
|
||||||
|
\renewcommand*{\researcheridsocialsymbol} {\textbf{ri}~}
|
||||||
|
\renewcommand*{\telegramsocialsymbol} {\textbf{tg}~}
|
||||||
|
\renewcommand*{\whatsappsocialsymbol} {\textbf{wa}~}
|
||||||
|
\renewcommand*{\signalsocialsymbol} {\textbf{si}~}
|
||||||
|
\renewcommand*{\matrixsocialsymbol} {\textbf{ma}~}
|
||||||
|
\renewcommand*{\googlescholarsocialsymbol}{\textbf{gs}~}
|
||||||
|
\renewcommand*{\bornsymbol} {\textbf{B}~}
|
||||||
|
\renewcommand*{\codebergsocialsymbol} {\textbf{cb}~}
|
||||||
|
\renewcommand*{\twitchsocialsymbol} {\textbf{ttv}~}
|
||||||
|
\renewcommand*{\youtubesocialsymbol} {\textbf{yt}~}
|
||||||
|
\renewcommand*{\tiktoksocialsymbol} {\textbf{tok}~}
|
||||||
|
\renewcommand*{\instagramsocialsymbol} {\textbf{insta}~}
|
||||||
|
\renewcommand*{\soundcloudsocialsymbol} {\textbf{sc}~}
|
||||||
|
\renewcommand*{\steamsocialsymbol} {\textbf{st}~}
|
||||||
|
\renewcommand*{\xboxsocialsymbol} {\textbf{xb}~}
|
||||||
|
\renewcommand*{\playstationsocialsymbol} {\textbf{psn}~}
|
||||||
|
\renewcommand*{\battlenetsocialsymbol} {\textbf{bn}~}
|
||||||
|
\renewcommand*{\arxivsocialsymbol} {\textbf{arx}~}
|
||||||
|
\renewcommand*{\inspiresocialsymbol} {\textbf{ins}~}
|
||||||
|
\renewcommand*{\simplexsocialsymbol} {\textbf{splx}~}
|
||||||
|
\renewcommand*{\simplexsocialsymbol} {\textbf{thr}~}
|
||||||
|
|
||||||
|
\renewcommand*{\listitemsymbol} {\labelitemi~}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncviconsletters.sty'.
|
||||||
31
moderncviconsmarvosym.sty
Normal file
31
moderncviconsmarvosym.sty
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
%% start of file `moderncviconsmarvosym.sty'.
|
||||||
|
%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncviconsmarvosym}[2026-01-31 v2.5.1 modern curriculum vitae icons: marvosym]
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% all symbols described in moderncv.cls
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\newcommand*{\marvosymbol}[1]{{\fontfamily{mvs}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char#1}}
|
||||||
|
|
||||||
|
\renewcommand*{\labelitemi} {\strut\textcolor{color1}{\marvosymbol{123}}} % equivalent to \Neutral from marvosym package; alternative: \fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}
|
||||||
|
|
||||||
|
\renewcommand*{\mobilephonesymbol} {\marvosymbol{72}~}
|
||||||
|
\renewcommand*{\fixedphonesymbol} {\marvosymbol{84}~}
|
||||||
|
\renewcommand*{\faxphonesymbol} {\marvosymbol{117}~}
|
||||||
|
\renewcommand*{\emailsymbol} {\marvosymbol{66}~}
|
||||||
|
\renewcommand*{\homepagesymbol} {{\Large\marvosymbol{205}}~}
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncviconsmarvosym.sty'.
|
||||||
33
moderncviconssymbols.sty
Normal file
33
moderncviconssymbols.sty
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
%% start of file `moderncviconssymbols.sty'.
|
||||||
|
%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncviconssymbols}[2026-01-31 v2.5.1 modern curriculum vitae icons selector]
|
||||||
|
|
||||||
|
|
||||||
|
\ifxetexorluatex
|
||||||
|
\RequirePackage{moderncviconsawesome}
|
||||||
|
\RequirePackage{moderncviconsacademic}
|
||||||
|
\else
|
||||||
|
\typeout{^^Jmoderncv: academicons requires XeTeX/LuaTeX to work. Using alternatives.^^J}
|
||||||
|
\ifpdftex
|
||||||
|
\RequirePackage{moderncviconsawesome}
|
||||||
|
\else
|
||||||
|
\RequirePackage{moderncviconsmarvosym}
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
|
||||||
|
% Define symbols that are not defined at this level
|
||||||
|
\RequirePackage{moderncviconstikz}
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
%% end of file `moderncviconssymbols.sty'.
|
||||||
459
moderncviconstikz.sty
Normal file
459
moderncviconstikz.sty
Normal file
|
|
@ -0,0 +1,459 @@
|
||||||
|
%% start of file `moderncviconstikz.sty'.
|
||||||
|
%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncviconstikz}[2026-01-31 v2.5.1 modern curriculum vitae and letter icons: tickz]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\usetikzlibrary{babel}
|
||||||
|
\RequirePackage{etoolbox}
|
||||||
|
\RequirePackage{xcolor}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% set colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\usepackage{moderncvcolors}
|
||||||
|
|
||||||
|
\providecolor{linkedin}{named}{default-socialicon-color}
|
||||||
|
\providecolor{twitter}{named}{default-socialicon-color}
|
||||||
|
\providecolor{github}{named}{default-socialicon-color}
|
||||||
|
\providecolor{gitlab}{named}{default-socialicon-color}
|
||||||
|
\providecolor{skype}{named}{default-socialicon-color}
|
||||||
|
\providecolor{googlescholar}{named}{default-socialicon-color}
|
||||||
|
\providecolor{matrix}{named}{default-socialicon-color}
|
||||||
|
\providecolor{codeberg}{named}{default-socialicon-color}
|
||||||
|
\providecolor{simplex}{named}{default-socialicon-color}
|
||||||
|
\providecolor{threema}{named}{default-socialicon-color}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% all symbols described in moderncv.cls
|
||||||
|
% only redefine symbols that are not defined at this level
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\ifdefempty{\linkedinsocialsymbol} {
|
||||||
|
\renewcommand*{\linkedinsocialsymbol} {
|
||||||
|
\protect\raisebox{-0.165em}{
|
||||||
|
\protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.25, yscale=-0.25, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[cm={{0.60,0.0,0.0,0.60,(346.39,123.07)}}]
|
||||||
|
\protect\path[fill=linkedin]
|
||||||
|
(381,202) -- (434,202) .. controls (439,202) and (442,205) ..
|
||||||
|
(442,210) -- (442,264) .. controls (442,268) and (439,272) ..
|
||||||
|
(434,272) -- (381,272) .. controls (376,272) and (372,268) ..
|
||||||
|
(372,264) -- (372,210) .. controls (372,205) and (376,202) ..
|
||||||
|
(381,202) -- cycle;
|
||||||
|
\protect\begin{scope}[xscale=0.98, yscale=1.02, fill=white]
|
||||||
|
\protect\path[fill=white]
|
||||||
|
(403,253) -- (403,224) -- (394,224) -- (394,253) --
|
||||||
|
cycle(398,211) .. controls (397,211) and (395,212) ..
|
||||||
|
(395,213) .. controls (394,213) and (393,215) ..
|
||||||
|
(393,216) .. controls (393,217) and (394,218) ..
|
||||||
|
(395,219) .. controls (395,220) and (397,220) ..
|
||||||
|
(398,220) .. controls (400,220) and (401,220) ..
|
||||||
|
(402,219) .. controls (402,218) and (403,217) ..
|
||||||
|
(403,216) .. controls (403,215) and (402,213) ..
|
||||||
|
(402,213) .. controls (401,212) and (400,211) ..
|
||||||
|
(398,211) -- cycle;
|
||||||
|
\protect\path[fill=white]
|
||||||
|
(410,253) -- (419,253) --
|
||||||
|
(419,236) .. controls (419,236) and (419,235) ..
|
||||||
|
(419,235) .. controls (419,235) and (419,234) ..
|
||||||
|
(419,234) .. controls (419,233) and (420,232) ..
|
||||||
|
(421,232) .. controls (422,231) and (423,231) ..
|
||||||
|
(424,231) .. controls (425,231) and (427,231) ..
|
||||||
|
(427,232) .. controls (428,234) and (428,235) ..
|
||||||
|
(428,237) -- (428,253) -- (437,253) --
|
||||||
|
(437,236) .. controls (437,232) and (436,228) ..
|
||||||
|
(434,226) .. controls (433,224) and (430,223) ..
|
||||||
|
(427,223) .. controls (425,223) and (423,224) ..
|
||||||
|
(421,225) .. controls (420,226) and (419,227) ..
|
||||||
|
(418,228) -- (418,228) -- (417,224) --
|
||||||
|
(410,224) .. controls (410,225) and (410,227) ..
|
||||||
|
(410,228) .. controls (410,230) and (410,231) ..
|
||||||
|
(410,233) -- cycle;
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\twittersocialsymbol} {
|
||||||
|
\renewcommand*{\twittersocialsymbol} {
|
||||||
|
\protect\raisebox{0em}{%
|
||||||
|
\protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.005, yscale=-0.005, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\path[fill=twitter]
|
||||||
|
(2000, 192) .. controls (1926, 225) and (1847, 247) ..
|
||||||
|
(1764, 257) .. controls (1849, 206) and (1914, 126) ..
|
||||||
|
(1945, 30) .. controls (1865, 77) and (1778, 111) ..
|
||||||
|
(1684, 130) .. controls (1609, 50) and (1503, 0) ..
|
||||||
|
(1385, 0) .. controls (1158, 0) and ( 974, 184) ..
|
||||||
|
( 974, 410) .. controls ( 974, 442) and ( 978, 474) ..
|
||||||
|
( 985, 504) .. controls ( 644, 487) and ( 342, 323) ..
|
||||||
|
( 139, 75) .. controls ( 104, 136) and ( 84, 206) ..
|
||||||
|
( 84, 281) .. controls ( 84, 424) and ( 156, 549) ..
|
||||||
|
( 266, 623) .. controls ( 199, 621) and ( 136, 602) ..
|
||||||
|
( 80, 572) .. controls ( 80, 573) and ( 80, 575) ..
|
||||||
|
( 80, 577) .. controls ( 80, 776) and ( 222, 941) ..
|
||||||
|
( 409, 979) .. controls ( 375, 988) and ( 339, 993) ..
|
||||||
|
( 301, 993) .. controls ( 275, 993) and ( 249, 991) ..
|
||||||
|
( 224, 986) .. controls ( 276,1149) and ( 428,1268) ..
|
||||||
|
( 607,1271) .. controls ( 467,1381) and ( 290,1447) ..
|
||||||
|
( 98,1447) .. controls ( 65,1447) and ( 32,1445) ..
|
||||||
|
( 0,1441) .. controls ( 182,1557) and ( 397,1625) ..
|
||||||
|
( 629,1625) .. controls (1384,1625) and (1796,1000) ..
|
||||||
|
(1796, 458) .. controls (1796, 440) and (1796, 422) ..
|
||||||
|
(1795, 405) .. controls (1875, 347) and (1945, 275) ..
|
||||||
|
(2000, 192);
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\githubsocialsymbol} {
|
||||||
|
\renewcommand*{\githubsocialsymbol} {
|
||||||
|
\protect\raisebox{-0.15em} {
|
||||||
|
\protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.25, yscale=-0.25, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[shift={(507,387)}]
|
||||||
|
\protect\path[fill=github]
|
||||||
|
(117, 60) .. controls (117, 71) and (108, 81) ..
|
||||||
|
( 96, 81) .. controls ( 85, 81) and ( 75, 71) ..
|
||||||
|
( 75, 60) .. controls ( 75, 48) and ( 85, 39) ..
|
||||||
|
( 96, 39) .. controls (108, 39) and (117, 48) ..
|
||||||
|
(117, 60) -- cycle;
|
||||||
|
\protect\path[cm={{0.88,0.0,0.0,0.88,(11.10,6.89)}}, fill=white]
|
||||||
|
(117, 60) .. controls (117, 71) and (108, 81) ..
|
||||||
|
( 96, 81) .. controls ( 85, 81) and ( 75, 71) ..
|
||||||
|
( 75, 60) .. controls ( 75, 48) and ( 85, 39) ..
|
||||||
|
( 96, 39) .. controls (108, 39) and (117, 48) ..
|
||||||
|
(117, 60) -- cycle;
|
||||||
|
\protect\path[fill=github, nonzero rule]
|
||||||
|
(103, 45) .. controls (103, 45) and (101, 46) ..
|
||||||
|
(101, 47) -- (100, 47) --
|
||||||
|
( 99, 47) .. controls ( 99, 47) and ( 98, 47) ..
|
||||||
|
( 97, 47) .. controls ( 94, 47) and ( 93, 47) ..
|
||||||
|
( 92, 47) -- ( 92, 47) --
|
||||||
|
( 91, 47) .. controls ( 90, 46) and ( 88, 45) ..
|
||||||
|
( 88, 45) .. controls ( 88, 45) and ( 88, 45) ..
|
||||||
|
( 87, 45) .. controls ( 87, 45) and ( 87, 45) ..
|
||||||
|
( 87, 45) .. controls ( 86, 46) and ( 86, 48) ..
|
||||||
|
( 86, 49) -- ( 87, 50) --
|
||||||
|
( 86, 51) .. controls ( 85, 51) and ( 85, 52) ..
|
||||||
|
( 85, 53) .. controls ( 85, 54) and ( 85, 57) ..
|
||||||
|
( 85, 58) .. controls ( 85, 58) and ( 85, 58) ..
|
||||||
|
( 82, 59) .. controls ( 79, 59) and ( 77, 59) ..
|
||||||
|
( 77, 59) .. controls ( 77, 59) and ( 77, 59) ..
|
||||||
|
( 78, 59) .. controls ( 80, 59) and ( 83, 59) ..
|
||||||
|
( 85, 59) .. controls ( 85, 59) and ( 85, 59) ..
|
||||||
|
( 85, 59) .. controls ( 86, 59) and ( 86, 59) ..
|
||||||
|
( 86, 59) .. controls ( 86, 59) and ( 85, 59) ..
|
||||||
|
( 84, 59) .. controls ( 82, 60) and ( 80, 60) ..
|
||||||
|
( 79, 60) .. controls ( 78, 61) and ( 77, 61) ..
|
||||||
|
( 77, 61) .. controls ( 77, 61) and ( 78, 61) ..
|
||||||
|
( 79, 61) .. controls ( 81, 60) and ( 83, 60) ..
|
||||||
|
( 85, 60) .. controls ( 86, 60) and ( 86, 60) ..
|
||||||
|
( 86, 60) .. controls ( 86, 60) and ( 87, 61) ..
|
||||||
|
( 88, 62) .. controls ( 89, 63) and ( 90, 63) ..
|
||||||
|
( 92, 63) .. controls ( 92, 63) and ( 93, 64) ..
|
||||||
|
( 93, 64) .. controls ( 93, 64) and ( 93, 64) ..
|
||||||
|
( 93, 64) .. controls ( 92, 64) and ( 92, 65) ..
|
||||||
|
( 92, 65) .. controls ( 92, 66) and ( 90, 66) ..
|
||||||
|
( 89, 66) .. controls ( 88, 66) and ( 88, 66) ..
|
||||||
|
( 87, 65) .. controls ( 87, 64) and ( 86, 63) ..
|
||||||
|
( 86, 63) .. controls ( 85, 63) and ( 84, 63) ..
|
||||||
|
( 84, 63) .. controls ( 84, 63) and ( 84, 63) ..
|
||||||
|
( 84, 63) .. controls ( 85, 64) and ( 86, 65) ..
|
||||||
|
( 86, 66) .. controls ( 87, 67) and ( 87, 68) ..
|
||||||
|
( 88, 68) .. controls ( 89, 68) and ( 89, 68) ..
|
||||||
|
( 90, 68) -- ( 92, 68) -- ( 92, 70) -- ( 92, 72) --
|
||||||
|
( 91, 72) .. controls ( 91, 72) and ( 91, 73) ..
|
||||||
|
( 91, 73) .. controls ( 90, 73) and ( 90, 73) ..
|
||||||
|
( 91, 73) .. controls ( 92, 73) and ( 92, 73) ..
|
||||||
|
( 92, 73) .. controls ( 93, 73) and ( 93, 73) ..
|
||||||
|
( 93, 70) .. controls ( 93, 67) and ( 93, 67) ..
|
||||||
|
( 94, 66) -- ( 94, 66) --
|
||||||
|
( 94, 69) .. controls ( 94, 71) and ( 94, 73) ..
|
||||||
|
( 94, 73) .. controls ( 94, 73) and ( 94, 73) ..
|
||||||
|
( 93, 74) .. controls ( 93, 74) and ( 93, 74) ..
|
||||||
|
( 93, 74) .. controls ( 93, 74) and ( 93, 74) ..
|
||||||
|
( 94, 74) .. controls ( 94, 74) and ( 95, 74) ..
|
||||||
|
( 96, 73) .. controls ( 96, 72) and ( 96, 71) ..
|
||||||
|
( 96, 68) -- ( 96, 66) -- ( 96, 66) --
|
||||||
|
( 96, 69) .. controls ( 96, 72) and ( 96, 72) ..
|
||||||
|
( 97, 73) .. controls ( 97, 74) and ( 99, 74) ..
|
||||||
|
( 99, 74) .. controls ( 99, 74) and ( 99, 74) ..
|
||||||
|
( 99, 73) .. controls ( 99, 73) and ( 98, 73) ..
|
||||||
|
( 98, 72) .. controls ( 98, 72) and ( 98, 66) ..
|
||||||
|
( 98, 66) .. controls ( 98, 66) and ( 99, 66) ..
|
||||||
|
( 99, 66) .. controls ( 99, 67) and ( 99, 67) ..
|
||||||
|
( 99, 69) .. controls ( 99, 71) and ( 99, 72) ..
|
||||||
|
( 99, 72) .. controls ( 99, 73) and (100, 73) ..
|
||||||
|
(100, 73) .. controls (101, 73) and (101, 73) ..
|
||||||
|
(101, 73) .. controls (102, 73) and (102, 73) ..
|
||||||
|
(102, 73) .. controls (101, 72) and (101, 72) ..
|
||||||
|
(101, 69) .. controls (101, 66) and (101, 65) ..
|
||||||
|
(100, 65) .. controls (100, 64) and (100, 64) ..
|
||||||
|
(100, 64) -- ( 99, 64) --
|
||||||
|
(100, 63) .. controls (101, 63) and (102, 63) ..
|
||||||
|
(103, 63) .. controls (104, 62) and (106, 61) ..
|
||||||
|
(106, 60) -- (106, 60) --
|
||||||
|
(107, 60) .. controls (109, 60) and (113, 60) ..
|
||||||
|
(115, 61) .. controls (115, 61) and (115, 61) ..
|
||||||
|
(115, 61) .. controls (115, 60) and (111, 60) ..
|
||||||
|
(108, 59) .. controls (107, 59) and (107, 59) ..
|
||||||
|
(107, 59) .. controls (107, 59) and (107, 59) ..
|
||||||
|
(107, 59) -- (107, 59) --
|
||||||
|
(108, 59) .. controls (110, 59) and (112, 59) ..
|
||||||
|
(114, 59) .. controls (115, 59) and (115, 59) ..
|
||||||
|
(115, 59) .. controls (115, 59) and (112, 59) ..
|
||||||
|
(109, 59) .. controls (108, 58) and (107, 58) ..
|
||||||
|
(107, 58) .. controls (107, 58) and (107, 58) ..
|
||||||
|
(107, 58) .. controls (107, 57) and (107, 56) ..
|
||||||
|
(107, 55) .. controls (107, 53) and (107, 53) ..
|
||||||
|
(107, 53) .. controls (107, 52) and (106, 51) ..
|
||||||
|
(106, 50) -- (105, 50) --
|
||||||
|
(105, 48) .. controls (105, 47) and (105, 46) ..
|
||||||
|
(105, 46) -- (105, 45) --
|
||||||
|
(104, 45) .. controls (104, 45) and (104, 45) ..
|
||||||
|
(103, 45) -- cycle;
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\gitlabsocialsymbol} {
|
||||||
|
\renewcommand*{\gitlabsocialsymbol} {
|
||||||
|
\protect\raisebox{-0.12em}{
|
||||||
|
\protect\begin{tikzpicture}[x=0.11em, y=0.11em, xscale=0.015, yscale=-0.015, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[shift={(507,387)}]
|
||||||
|
\protect\path[fill=gitlab,line width=0.057pt]
|
||||||
|
(105.2000,24.9000) .. controls (102.1000,16.0000) and (89.5000,16.0000) ..
|
||||||
|
(86.3000,24.9000) -- (29.8000,199.7000) -- (161.7000,199.7000) .. controls
|
||||||
|
(161.7000,199.7000) and (105.2000,24.9000) .. (105.2000,24.9000) -- cycle
|
||||||
|
(0.9000,287.7000) .. controls (-1.7000,295.7000) and (1.2000,304.6000) ..
|
||||||
|
(8.0000,309.7000) -- (255.9000,493.7000) -- (29.7000,199.7000) -- cycle
|
||||||
|
(161.7000,199.7000) -- (161.7000,199.7000) -- (256.0000,493.7000) -- (350.3000,199.7000) -- cycle
|
||||||
|
(511.1000,287.7000) -- (482.3000,199.7000) -- (256.0000,493.7000) --
|
||||||
|
(503.9000,309.7000) .. controls (510.8000,304.6000) and (513.6000,295.7000) ..
|
||||||
|
(511.1000,287.7000) -- cycle(425.7000,24.9000) .. controls (422.6000,16.0000)
|
||||||
|
and (410.0000,16.0000) .. (406.8000,24.9000) -- (350.2000,199.7000) -- (482.2000,199.7000) -- cycle;
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\skypesocialsymbol} {
|
||||||
|
\renewcommand*{\skypesocialsymbol} {
|
||||||
|
\protect\raisebox{-0.15em}{
|
||||||
|
\protect\begin{tikzpicture}[y=0.08em, x=0.08em, xscale=0.020, yscale=-0.020, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[shift={(507,387)}]
|
||||||
|
\protect\path[fill=skype,even odd rule]
|
||||||
|
(487.6550,288.9690) .. controls (489.0610,278.5690) and (489.8700,267.9960) ..
|
||||||
|
(489.8700,257.2330) .. controls (489.8700,128.0770) and (384.5990,23.3610) ..
|
||||||
|
(254.7670,23.3610) .. controls (241.8630,23.3610) and (229.2120,24.4210) ..
|
||||||
|
(216.9010,26.4410) .. controls (194.8280,12.0570) and (168.5590,3.6740) ..
|
||||||
|
(140.2880,3.6740) .. controls (62.7660,3.6740) and (0.0000,66.4820) ..
|
||||||
|
(0.0000,143.9800) .. controls (0.0000,172.1780) and (8.2990,198.3740) ..
|
||||||
|
(22.5900,220.3690) .. controls (20.6650,232.3860) and (19.6810,244.6920) ..
|
||||||
|
(19.6810,257.2290) .. controls (19.6810,386.4050) and (124.8980,491.1100) ..
|
||||||
|
(254.7660,491.1100) .. controls (269.4230,491.1100) and (283.6930,489.6840) ..
|
||||||
|
(297.5620,487.1780) .. controls (319.1120,500.5470) and (344.4960,508.3260) ..
|
||||||
|
(371.7080,508.3260) .. controls (449.2100,508.3260) and (512.0010,445.5020) ..
|
||||||
|
(512.0010,368.0120) .. controls (511.9980,338.7190) and (503.0410,311.4840) ..
|
||||||
|
(487.6550,288.9690) -- cycle(276.7400,429.5960) .. controls (202.0340,433.4870) and (167.0750,416.9590) .. (135.0500,386.9050) .. controls (99.2850,353.3370) and (113.6520,315.0500) ..
|
||||||
|
(142.7900,313.1040) .. controls (171.9120,311.1590) and (189.3980,346.1160) ..
|
||||||
|
(204.9410,355.8400) .. controls (220.4650,365.5280) and (279.5340,387.6000) ..
|
||||||
|
(310.7350,351.9320) .. controls (344.7100,313.1040) and (288.1410,293.0120) ..
|
||||||
|
(246.6760,286.9300) .. controls (187.4730,278.1640) and (112.7260,246.1370) ..
|
||||||
|
(118.5410,183.0230) .. controls (124.3580,119.9490) and (172.1230,87.6090) ..
|
||||||
|
(222.3910,83.0470) .. controls (286.4680,77.2300) and (328.1820,92.7540) ..
|
||||||
|
(361.1760,120.9070) .. controls (399.3270,153.4360) and (378.6840,189.8010) ..
|
||||||
|
(354.3770,192.7270) .. controls (330.1660,195.6360) and (302.9730,139.2230) ..
|
||||||
|
(249.5860,138.3750) .. controls (194.5590,137.5110) and (157.3690,195.6360) ..
|
||||||
|
(225.3000,212.1590) .. controls (293.2660,228.6640) and (366.0500,235.4450) ..
|
||||||
|
(392.2610,297.5760) .. controls (418.4900,359.7130) and (351.5070,425.7010) ..
|
||||||
|
(276.7400,429.5960) -- cycle;
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\googlescholarsocialsymbol} {
|
||||||
|
\renewcommand*{\googlescholarsocialsymbol} {
|
||||||
|
\protect\raisebox{-0.12em}{
|
||||||
|
\protect\begin{tikzpicture}[y=2.0pt, x=2.0pt, yscale=-0.1, xscale=0.1, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[shift={(507,387)}]
|
||||||
|
\protect\path[fill=googlescholar] (25.0000,2.0000) .. controls (12.3095,2.0000) and (2.0000,12.3095)
|
||||||
|
.. (2.0000,25.0000) .. controls (2.0000,37.6905) and (12.3095,48.0000) ..
|
||||||
|
(25.0000,48.0000) .. controls (37.6905,48.0000) and (48.0000,37.6905) ..
|
||||||
|
(48.0000,25.0000) .. controls (48.0000,12.3095) and (37.6905,2.0000) ..
|
||||||
|
(25.0000,2.0000) -- cycle(25.0000,4.0000) .. controls (36.6095,4.0000) and
|
||||||
|
(46.0000,13.3905) .. (46.0000,25.0000) .. controls (46.0000,36.6095) and
|
||||||
|
(36.6095,46.0000) .. (25.0000,46.0000) .. controls (13.3905,46.0000) and
|
||||||
|
(4.0000,36.6095) .. (4.0000,25.0000) .. controls (4.0000,13.3905) and
|
||||||
|
(13.3905,4.0000) .. (25.0000,4.0000) -- cycle(21.0000,11.0000) --
|
||||||
|
(11.0000,20.0000) -- (17.7812,20.0000) .. controls (17.8012,22.8470) and
|
||||||
|
(19.9675,25.7305) .. (23.7695,25.7305) .. controls (24.1295,25.7305) and
|
||||||
|
(24.5297,25.6904) .. (24.9297,25.6504) .. controls (24.7497,26.1004) and
|
||||||
|
(24.5605,26.4701) .. (24.5605,27.0801) .. controls (24.5605,28.2301) and
|
||||||
|
(25.1404,28.9201) .. (25.6504,29.5801) .. controls (24.0204,29.6901) and
|
||||||
|
(20.9898,29.8795) .. (18.7598,31.2695) .. controls (16.6298,32.5595) and
|
||||||
|
(15.9805,34.4300) .. (15.9805,35.7500) .. controls (15.9805,38.4700) and
|
||||||
|
(18.5005,41.0000) .. (23.7305,41.0000) .. controls (29.9305,41.0000) and
|
||||||
|
(33.2207,37.5105) .. (33.2207,34.0605) .. controls (33.2207,31.5305) and
|
||||||
|
(31.7795,30.2799) .. (30.1895,28.9199) -- (28.9004,27.8906) .. controls
|
||||||
|
(28.5004,27.5706) and (27.9492,27.1203) .. (27.9492,26.3203) .. controls
|
||||||
|
(27.9492,25.5103) and (28.5007,24.9898) .. (28.9707,24.5098) .. controls
|
||||||
|
(30.4807,23.3098) and (32.0000,21.9602) .. (32.0000,19.2402) .. controls
|
||||||
|
(32.0000,18.1972) and (31.7562,17.3484) .. (31.4082,16.6504) --
|
||||||
|
(35.0000,13.5703) -- (35.0000,17.2773) .. controls (34.4050,17.6233) and
|
||||||
|
(34.0000,18.2610) .. (34.0000,19.0000) -- (34.0000,25.0000) .. controls
|
||||||
|
(34.0000,26.1040) and (34.8960,27.0000) .. (36.0000,27.0000) .. controls
|
||||||
|
(37.1040,27.0000) and (38.0000,26.1040) .. (38.0000,25.0000) --
|
||||||
|
(38.0000,19.0000) .. controls (38.0000,18.2620) and (37.5950,17.6243) ..
|
||||||
|
(37.0000,17.2773) -- (37.0000,12.0000) .. controls (37.0000,11.9570) and
|
||||||
|
(36.9806,11.9209) .. (36.9746,11.8789) -- (38.0000,11.0000) --
|
||||||
|
(21.0000,11.0000) -- cycle(24.2695,14.2402) .. controls (27.2695,14.2402) and
|
||||||
|
(28.8203,18.3500) .. (28.8203,21.0000) .. controls (28.8203,21.6500) and
|
||||||
|
(28.7399,22.8199) .. (27.9199,23.6699) .. controls (27.3399,24.2599) and
|
||||||
|
(26.3709,24.6992) .. (25.4609,24.6992) .. controls (22.3709,24.6992) and
|
||||||
|
(20.9492,20.6202) .. (20.9492,18.1602) .. controls (20.9492,17.2102) and
|
||||||
|
(21.1400,16.2209) .. (21.7500,15.4609) .. controls (22.3300,14.7109) and
|
||||||
|
(23.3395,14.2402) .. (24.2695,14.2402) -- cycle(26.0391,30.6094) .. controls
|
||||||
|
(26.4091,30.6094) and (26.5909,30.6104) .. (26.8809,30.6504) .. controls
|
||||||
|
(29.6209,32.6304) and (30.8008,33.6202) .. (30.8008,35.4902) .. controls
|
||||||
|
(30.8008,37.7602) and (28.9700,39.4609) .. (25.5000,39.4609) .. controls
|
||||||
|
(21.6400,39.4609) and (19.1602,37.5905) .. (19.1602,34.9805) .. controls
|
||||||
|
(19.1602,32.3705) and (21.4598,31.4992) .. (22.2598,31.1992) .. controls
|
||||||
|
(23.7698,30.6792) and (25.7191,30.6094) .. (26.0391,30.6094) -- cycle;
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\matrixsocialsymbol} {
|
||||||
|
\renewcommand*{\matrixsocialsymbol} {
|
||||||
|
\protect\raisebox{-0.12em}{
|
||||||
|
\protect\begin{tikzpicture}[y=1.8pt, x=1.8pt, yscale=-0.15, xscale=0.15, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[shift={(507,387)}]
|
||||||
|
\protect\path[fill=matrix]
|
||||||
|
(0.9360,0.7320) .. controls (0.9360,10.9053) and (0.9360,21.0787) ..
|
||||||
|
(0.9360,31.2520) .. controls (1.6673,31.2520) and (2.3987,31.2520) ..
|
||||||
|
(3.1300,31.2520) .. controls (3.3452,32.0075) and (2.8778,32.0803) ..
|
||||||
|
(2.2413,31.9840) .. controls (1.5258,31.9840) and (0.8104,31.9840) ..
|
||||||
|
(0.0950,31.9840) .. controls (0.0950,21.3240) and (0.0950,10.6640) ..
|
||||||
|
(0.0950,0.0040) .. controls (1.1063,0.0040) and (2.1177,0.0040) ..
|
||||||
|
(3.1290,0.0040) .. controls (3.3442,0.7598) and (2.8768,0.8319) ..
|
||||||
|
(2.2403,0.7344) .. controls (1.8055,0.7336) and (1.3708,0.7328) ..
|
||||||
|
(0.9360,0.7320) -- cycle(9.3860,10.4070) .. controls (9.4181,10.9043) and
|
||||||
|
(9.3236,11.5281) .. (9.4300,11.9510) .. controls (10.7306,9.8293) and
|
||||||
|
(14.1727,9.3918) .. (15.8298,11.2910) .. controls (16.3916,12.8310) and
|
||||||
|
(17.3334,10.0899) .. (18.5637,10.2414) .. controls (20.4575,9.7636) and
|
||||||
|
(23.0149,10.3893) .. (23.6011,12.4937) .. controls (24.0197,14.2344) and
|
||||||
|
(23.7678,16.0478) .. (23.8370,17.8238) .. controls (23.8370,19.1536) and
|
||||||
|
(23.8370,20.4833) .. (23.8370,21.8130) .. controls (22.7947,21.8130) and
|
||||||
|
(21.7523,21.8130) .. (20.7100,21.8130) .. controls (20.6777,19.2218) and
|
||||||
|
(20.7833,16.6250) .. (20.6389,14.0382) .. controls (20.4668,12.0762) and
|
||||||
|
(17.2764,12.0985) .. (16.8890,13.9332) .. controls (16.5424,15.7480) and
|
||||||
|
(16.7622,17.6175) .. (16.7000,19.4583) .. controls (16.7000,20.2432) and
|
||||||
|
(16.7000,21.0281) .. (16.7000,21.8130) .. controls (15.6573,21.8130) and
|
||||||
|
(14.6147,21.8130) .. (13.5720,21.8130) .. controls (13.5377,19.1909) and
|
||||||
|
(13.6502,16.5608) .. (13.4952,13.9452) .. controls (13.2700,12.0546) and
|
||||||
|
(10.3372,12.2098) .. (9.8050,13.8370) .. controls (9.3690,15.2175) and
|
||||||
|
(9.6378,16.6981) .. (9.5630,18.1268) .. controls (9.5630,19.3556) and
|
||||||
|
(9.5630,20.5843) .. (9.5630,21.8130) .. controls (8.5200,21.8130) and
|
||||||
|
(7.4770,21.8130) .. (6.4340,21.8130) .. controls (6.4340,18.0097) and
|
||||||
|
(6.4340,14.2063) .. (6.4340,10.4030) .. controls (7.4180,10.4043) and
|
||||||
|
(8.4020,10.4057) .. (9.3860,10.4070) -- cycle(30.0980,31.2470) .. controls
|
||||||
|
(30.0980,21.0737) and (30.0980,10.9003) .. (30.0980,0.7270) .. controls
|
||||||
|
(29.3667,0.7270) and (28.6353,0.7270) .. (27.9040,0.7270) .. controls
|
||||||
|
(27.6888,-0.0285) and (28.1562,-0.1013) .. (28.7927,-0.0050) .. controls
|
||||||
|
(29.5082,-0.0050) and (30.2236,-0.0050) .. (30.9390,-0.0050) .. controls
|
||||||
|
(30.9390,10.6550) and (30.9390,21.3150) .. (30.9390,31.9750) .. controls
|
||||||
|
(29.9273,31.9750) and (28.9157,31.9750) .. (27.9040,31.9750) .. controls
|
||||||
|
(27.6888,31.2192) and (28.1562,31.1471) .. (28.7927,31.2446) .. controls
|
||||||
|
(29.2278,31.2454) and (29.6629,31.2462) .. (30.0980,31.2470) -- cycle;
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\codebergsocialsymbol} {
|
||||||
|
\renewcommand*{\codebergsocialsymbol} {
|
||||||
|
\protect\raisebox{-0.12em}{
|
||||||
|
\protect\begin{tikzpicture}[y=0.8pt, x=0.8pt, yscale=-1.0, xscale=1.0, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[shift={(507, 387)}]
|
||||||
|
\protect\path[scale=0.265, opacity=0.500, line cap=butt, line join=miter, line width=0.779pt, miter limit=2.00]
|
||||||
|
(11249.8942,-1872.9296)arc(269.285:169.240:0.201313 and 0.150) --
|
||||||
|
(11258.5852,-1839.4433)arc(66.699:32.084:23.067) --
|
||||||
|
(11250.0698,-1872.8557)arc(329.460:269.346:0.201313 and 0.150) -- cycle;
|
||||||
|
|
||||||
|
\protect\path[scale=0.265, fill=codeberg, line width=0.426pt]
|
||||||
|
(11249.3743,-1883.6959)arc(269.785:180.000:23.067)arc(180.001:147.920:23.067)
|
||||||
|
-- (11249.1480,-1873.2412)arc(209.929:330.071:0.360097 and 0.269) --
|
||||||
|
(11269.0053,-1848.3766)arc(32.082:-0.002:23.067)arc(360.000:270.000:23.067)arc(270.108:269.892:23.067)
|
||||||
|
-- cycle;
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\simplexsocialsymbol} {
|
||||||
|
\renewcommand*{\simplexsocialsymbol} {
|
||||||
|
\protect\raisebox{-0.12em}{
|
||||||
|
\protect\begin{tikzpicture}[y=0.8pt, x=0.8pt, yscale=-1.0, xscale=1.0, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[shift={(507,387)}, rotate=45]
|
||||||
|
\protect\path[fill=simplex!80, scale=0.065]
|
||||||
|
(0,0) rectangle +(100,20)
|
||||||
|
(40,-60) rectangle +(20,120);
|
||||||
|
|
||||||
|
\protect\path[fill=simplex, scale=0.065]
|
||||||
|
(0,-60) rectangle +(160,20)
|
||||||
|
(40,-100) rectangle +(20,60)
|
||||||
|
(100,-100) rectangle +(20,160)
|
||||||
|
(100,0) rectangle +(60,20);
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\ifdefempty{\threemasocialsymbol} {
|
||||||
|
\renewcommand*{\threemasocialsymbol} {
|
||||||
|
\protect\raisebox{-0.12em}{
|
||||||
|
\protect\begin{tikzpicture}[y=0.8pt, x=0.8pt, yscale=-1.0, xscale=1.0, inner sep=0pt, outer sep=0pt]
|
||||||
|
\protect\begin{scope}[shift={(507,387)}]
|
||||||
|
\protect\path[fill=threema, scale=0.015]
|
||||||
|
% speech bubble
|
||||||
|
(137,25) ellipse (400 and 350)
|
||||||
|
% lock shackle
|
||||||
|
(244.5,-51) arc [start angle=0, end angle=-180, radius=107]
|
||||||
|
(199.5,-51) arc [start angle=0, end angle=-180, radius=62]
|
||||||
|
(199.5,-51) rectangle +(45,52)
|
||||||
|
(30.5,-51) rectangle +(45,52)
|
||||||
|
% lock body
|
||||||
|
(0, 0) rectangle +(274, 196);
|
||||||
|
% triangle
|
||||||
|
\protect\path[fill=threema, scale=0.015]
|
||||||
|
(-200,213) -- +(-41,168) -- +(157,120) -- cycle;
|
||||||
|
% three dots
|
||||||
|
\protect\path[fill=threema, scale=0.015]
|
||||||
|
(-94,553) circle (68)
|
||||||
|
(144,553) circle (68)
|
||||||
|
(390,553) circle (68);
|
||||||
|
\protect\end{scope}
|
||||||
|
\protect\end{tikzpicture}}
|
||||||
|
~}
|
||||||
|
}{}\par
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
%% end of file `moderncviconstikz.sty'.
|
||||||
1062
moderncvskillmatrix.sty
Normal file
1062
moderncvskillmatrix.sty
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvstylebanking.sty'.
|
%% start of file `moderncvstylebanking.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,23 +10,40 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvstylebanking}[2012/07/29 v1.1 modern curriculum vitae and letter style scheme: banking]
|
\ProvidesPackage{moderncvstylebanking}[2026-01-31 v2.5.1 modern curriculum vitae and letter style scheme: banking]
|
||||||
|
|
||||||
|
% body rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
|
||||||
|
\@initializecommand{\moderncvstylebodyoptions}{}
|
||||||
|
\DeclareOption{fullrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,fullrules}}
|
||||||
|
\DeclareOption{shortrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,shortrules}}
|
||||||
|
\DeclareOption{mixedrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,mixedrules}}
|
||||||
|
\DeclareOption{norules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,norules}}
|
||||||
|
|
||||||
|
% body section alignment options: "left" (default), "center" or "right"
|
||||||
|
\DeclareOption{left} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,left}}
|
||||||
|
\DeclareOption{center} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,center}}
|
||||||
|
\DeclareOption{right} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,right}}
|
||||||
|
|
||||||
|
% head options
|
||||||
|
\@initializecommand{\moderncvstyleheadoptions}{}
|
||||||
|
\@initializeif{\if@datainhead}\@datainheadtrue
|
||||||
|
\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
|
||||||
|
\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
|
||||||
|
|
||||||
|
% toggle use of symbol fonts.
|
||||||
|
\@initializeif{\if@symbols}\@symbolsfalse
|
||||||
|
\DeclareOption{symbols} {\@symbolstrue}
|
||||||
|
\DeclareOption{nosymbols} {\@symbolsfalse}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{mixedrules,left,symbols}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% required packages
|
% fonts & icons
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
% TeX Gyre Pagella font
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% package options
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% overall style definition
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% fonts
|
|
||||||
%\ifxetexorluatex
|
%\ifxetexorluatex
|
||||||
% \setmainfont{Tex-Gyre Pagella}
|
% \setmainfont{Tex-Gyre Pagella}
|
||||||
% \setsansfont{Tex-Gyre Pagella}
|
% \setsansfont{Tex-Gyre Pagella}
|
||||||
|
|
@ -43,242 +60,46 @@
|
||||||
%\fi
|
%\fi
|
||||||
|
|
||||||
% symbols
|
% symbols
|
||||||
\renewcommand*{\mobilesymbol}{\marvosymbol{72}~}
|
\if@symbols
|
||||||
\renewcommand*{\phonesymbol}{\marvosymbol{84}~}
|
\moderncvicons{symbols} % use symbols
|
||||||
\renewcommand*{\faxsymbol}{\marvosymbol{117}~}
|
\else
|
||||||
\renewcommand*{\emailsymbol}{\marvosymbol{66}~}
|
\moderncvicons{letters} % do not use symbols, use letters
|
||||||
\renewcommand*{\homepagesymbol}{{\Large\marvosymbol{205}}~}
|
\fi
|
||||||
|
|
||||||
% commands
|
|
||||||
\newcommand*{\maketitlesymbol}{%
|
|
||||||
{~~~{\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
|
|
||||||
% internal command to add an element to the footer
|
|
||||||
% it collects the elements in a temporary box, and checks when to flush the box
|
|
||||||
\newsavebox{\maketitlebox}%
|
|
||||||
\newsavebox{\maketitletempbox}%
|
|
||||||
\newlength{\maketitlewidth}%
|
|
||||||
\newlength{\maketitleboxwidth}%
|
|
||||||
% adds an element to the maketitle, separated by maketitlesymbol
|
|
||||||
% usage: \addtomaketitle[maketitlesymbol]{element}
|
|
||||||
\newcommand*{\addtomaketitle}[2][\maketitlesymbol]{%
|
|
||||||
\savebox{\maketitletempbox}{\usebox{\maketitlebox}#1#2}%
|
|
||||||
\settowidth{\maketitleboxwidth}{\usebox{\maketitletempbox}}%
|
|
||||||
\ifnum\maketitleboxwidth<\maketitlewidth%
|
|
||||||
\savebox{\maketitlebox}{\usebox{\maketitletempbox}}
|
|
||||||
\else%
|
|
||||||
\flushmaketitle{}\\%
|
|
||||||
\savebox{\maketitlebox}{#2}%
|
|
||||||
\savebox{\maketitletempbox}{#2}\fi}
|
|
||||||
% internal command to flush the maketitle
|
|
||||||
\newcommand*{\flushmaketitle}{%
|
|
||||||
\strut\usebox{\maketitlebox}%
|
|
||||||
\savebox{\maketitlebox}{}%
|
|
||||||
\savebox{\maketitletempbox}{}}
|
|
||||||
\renewcommand*{\maketitle}{%
|
|
||||||
\setlength{\maketitlewidth}{0.8\textwidth}%
|
|
||||||
\hfil%
|
|
||||||
\parbox{\maketitlewidth}{%
|
|
||||||
\centering%
|
|
||||||
% name (title is not visible)
|
|
||||||
\namestyle{\@firstname~\@familyname}\\%
|
|
||||||
% detailed information
|
|
||||||
\addressfont\color{color2}%
|
|
||||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomaketitle[]{\addresssymbol\@addressstreet}%
|
|
||||||
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomaketitle[~--~]{\@addresscity}}\flushmaketitle}% if \addresstreet is defined, \addresscity will always be defined but could be empty
|
|
||||||
\ifthenelse{\isundefined{\@mobile}}{}{\addtomaketitle[]{\mobilesymbol\@mobile}}%
|
|
||||||
\ifthenelse{\isundefined{\@phone}}{}{\addtomaketitle{\phonesymbol\@phone}}%
|
|
||||||
\ifthenelse{\isundefined{\@fax}}{}{\addtomaketitle{\faxsymbol\@fax}}%
|
|
||||||
\ifthenelse{\isundefined{\@email}}{}{\addtomaketitle{\emailsymbol\emaillink{\@email}}}%
|
|
||||||
\ifthenelse{\isundefined{\@homepage}}{}{\addtomaketitle{\homepagesymbol\httplink{\@homepage}}}%
|
|
||||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomaketitle{\@extrainfo}}%
|
|
||||||
\flushmaketitle}\\[2.5em]}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \maketitle
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% resume style definition
|
% Colors
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% fonts
|
% head and footer
|
||||||
\renewcommand*{\namefont}{\Huge\bfseries\upshape}
|
\colorlet{lastnamecolor}{color1}
|
||||||
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
|
\colorlet{namecolor}{lastnamecolor}
|
||||||
\renewcommand*{\addressfont}{\small\mdseries\upshape}
|
\colorlet{headrulecolor}{lastnamecolor!50}
|
||||||
\renewcommand*{\quotefont}{\large\slshape}
|
\colorlet{firstnamecolor}{lastnamecolor!60}
|
||||||
\renewcommand*{\sectionfont}{\Large\bfseries\upshape}
|
\colorlet{titlecolor}{color2!85}
|
||||||
\renewcommand*{\subsectionfont}{\large\upshape\fontseries{sb}\selectfont}
|
\colorlet{addresscolor}{color2}
|
||||||
\renewcommand*{\hintfont}{\bfseries}
|
\colorlet{quotecolor}{color1}
|
||||||
|
\colorlet{pictureframecolor}{color1}
|
||||||
% styles
|
% body
|
||||||
\newcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}}
|
\colorlet{bodyrulecolor}{color1}
|
||||||
\newcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
|
\colorlet{sectioncolor}{color1}
|
||||||
\newcommand*{\addressstyle}[1]{{\addressfont\textcolor{color1}{#1}}}
|
\colorlet{subsectioncolor}{color1}
|
||||||
\newcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
|
\colorlet{hintstylecolor}{color0}
|
||||||
\newcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
|
% letter
|
||||||
\newcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
|
\colorlet{letterclosingcolor}{color2}
|
||||||
\newcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
|
% skillmatrix
|
||||||
|
\colorlet{skillmatrixfullcolor}{color1}
|
||||||
% lengths
|
\colorlet{skillmatrixemptycolor}{color2!30}
|
||||||
\newlength{\quotewidth}
|
|
||||||
\newlength{\hintscolumnwidth}
|
|
||||||
\setlength{\hintscolumnwidth}{0.3\textwidth}%
|
|
||||||
\newlength{\separatorcolumnwidth}
|
|
||||||
\setlength{\separatorcolumnwidth}{0.025\textwidth}%
|
|
||||||
\newlength{\maincolumnwidth}
|
|
||||||
\newlength{\doubleitemcolumnwidth}
|
|
||||||
\newlength{\listitemsymbolwidth}
|
|
||||||
\settowidth{\listitemsymbolwidth}{\listitemsymbol}
|
|
||||||
\newlength{\listitemmaincolumnwidth}
|
|
||||||
\newlength{\listdoubleitemmaincolumnwidth}
|
|
||||||
|
|
||||||
% commands
|
|
||||||
\renewcommand*{\recomputecvlengths}{%
|
|
||||||
\setlength{\quotewidth}{0.65\textwidth}%
|
|
||||||
% main lenghts
|
|
||||||
\setlength{\maincolumnwidth}{\textwidth}%
|
|
||||||
% listitem lengths
|
|
||||||
\setlength{\listitemmaincolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
|
|
||||||
% doubleitem lengths
|
|
||||||
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
|
|
||||||
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
|
|
||||||
% listdoubleitem lengths
|
|
||||||
\setlength{\listdoubleitemmaincolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
|
|
||||||
\setlength{\listdoubleitemmaincolumnwidth}{0.5\listdoubleitemmaincolumnwidth}%
|
|
||||||
% fancyhdr lengths
|
|
||||||
\renewcommand{\headwidth}{\textwidth}%
|
|
||||||
% regular lengths
|
|
||||||
\setlength{\parskip}{0\p@}}
|
|
||||||
|
|
||||||
\renewcommand*{\makecvtitle}{%
|
|
||||||
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
|
||||||
\recomputecvlengths%
|
|
||||||
\maketitle%
|
|
||||||
% optional quote
|
|
||||||
\ifthenelse{\isundefined{\@quote}}%
|
|
||||||
{}%
|
|
||||||
{{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
|
|
||||||
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
|
|
||||||
|
|
||||||
\renewcommand*{\section}[1]{%
|
|
||||||
\par\addvspace{2.5ex}%
|
|
||||||
\phantomsection{}% reset the anchor for hyperrefs
|
|
||||||
\addcontentsline{toc}{section}{#1}%
|
|
||||||
\strut\sectionstyle{#1}%
|
|
||||||
{\color{color1}\hrule}%
|
|
||||||
\par\nobreak\addvspace{1ex}\@afterheading}
|
|
||||||
|
|
||||||
\newcommand{\subsectionfill}{\xleaders\hbox to 0.35em{\scriptsize.}\hfill}% different subsectionfills will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible
|
|
||||||
\renewcommand*{\subsection}[1]{%
|
|
||||||
\par\addvspace{1ex}%
|
|
||||||
\phantomsection{}%
|
|
||||||
\addcontentsline{toc}{subsection}{#1}%
|
|
||||||
\strut\subsectionstyle{#1}{\color{color1}{\subsectionfill}}%
|
|
||||||
\par\nobreak\addvspace{0.5ex}\@afterheading}
|
|
||||||
|
|
||||||
\renewcommand*{\cvitem}[3][.25em]{%
|
|
||||||
\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvdoubleitem}[5][.25em]{%
|
|
||||||
\begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvlistitem}[2][.25em]{%
|
|
||||||
\listitemsymbol#2%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
|
|
||||||
\cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}#2\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\ifthenelse{\equal{#3}{}}%
|
|
||||||
{}%
|
|
||||||
{\listitemsymbol\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}#3\end{minipage}}}}
|
|
||||||
|
|
||||||
\renewcommand*{\cventry}[7][.25em]{
|
|
||||||
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}%
|
|
||||||
{\bfseries #4} & {\bfseries #5} \\%
|
|
||||||
{\itshape #3\ifthenelse{\equal{#6}{}}{}{, #6}} & {\itshape #2}\\%
|
|
||||||
\end{tabular*}%
|
|
||||||
\ifx&%
|
|
||||||
\else{\\\vbox{\small#7}}\fi%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\newbox{\cvitemwithcommentmainbox}
|
|
||||||
\newlength{\cvitemwithcommentmainlength}
|
|
||||||
\newlength{\cvitemwithcommentcommentlength}
|
|
||||||
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
|
|
||||||
\savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}%
|
|
||||||
\setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
|
|
||||||
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
|
|
||||||
\begin{minipage}[t]{\cvitemwithcommentmainlength}\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\renewenvironment{thebibliography}[1]%
|
|
||||||
{%
|
|
||||||
\bibliographyhead{\refname}%
|
|
||||||
% \small%
|
|
||||||
\begin{list}{\bibliographyitemlabel}%
|
|
||||||
{%
|
|
||||||
\setlength{\topsep}{0pt}%
|
|
||||||
\setlength{\labelwidth}{0pt}%
|
|
||||||
\setlength{\labelsep}{0pt}%
|
|
||||||
\leftmargin\labelwidth%
|
|
||||||
\advance\leftmargin\labelsep%
|
|
||||||
\@openbib@code%
|
|
||||||
\usecounter{enumiv}%
|
|
||||||
\let\p@enumiv\@empty%
|
|
||||||
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
|
||||||
\sloppy\clubpenalty4000\widowpenalty4000%
|
|
||||||
% \sfcode`\.\@m%
|
|
||||||
% \sfcode `\=1000\relax%
|
|
||||||
}%
|
|
||||||
{%
|
|
||||||
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
|
|
||||||
\end{list}%
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% letter style definition
|
% header, body & footer
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% commands
|
\moderncvhead[\moderncvstyleheadoptions]{3}
|
||||||
\renewcommand*{\recomputeletterlengths}{
|
\moderncvbody[\moderncvstylebodyoptions]{3}
|
||||||
\recomputecvlengths%
|
|
||||||
\setlength{\parskip}{6\p@}}
|
|
||||||
|
|
||||||
\renewcommand*{\makelettertitle}{%
|
|
||||||
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
|
||||||
\recomputeletterlengths%
|
|
||||||
% sender block
|
|
||||||
\maketitle%
|
|
||||||
\par%
|
|
||||||
% recipient block
|
|
||||||
\begin{minipage}[t]{.5\textwidth}
|
|
||||||
\raggedright%
|
|
||||||
\addressfont%
|
|
||||||
{\bfseries\upshape\@recipientname}\\%
|
|
||||||
\@recipientaddress%
|
|
||||||
\end{minipage}
|
|
||||||
% date
|
|
||||||
\hfill % US style
|
|
||||||
% \\[1em] % UK style
|
|
||||||
\hbox{\today}\\[2em]% US informal style: "April 6, 2006"; UK formal style: "05/04/2006"
|
|
||||||
% opening
|
|
||||||
\raggedright%
|
|
||||||
\@opening\\[1.5em]%
|
|
||||||
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
|
||||||
% \ignorespacesafterend% not working
|
|
||||||
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
|
||||||
|
|
||||||
\renewcommand*{\makeletterclosing}{
|
|
||||||
\@closing\\[3em]%
|
|
||||||
{\bfseries \@firstname~\@familyname}%
|
|
||||||
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
|
||||||
\\%
|
|
||||||
\vfill%
|
|
||||||
{\color{color2}\itshape\enclname: \@enclosure}}}
|
|
||||||
|
|
||||||
|
\if@datainhead
|
||||||
|
% if data is shown in head, do not include the footer
|
||||||
|
\else
|
||||||
|
\moderncvfoot{1}
|
||||||
|
\fi
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvstylecasual.sty'.
|
%% start of file `moderncvstylecasual.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,171 +10,84 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvstylecasual}[2012/07/29 v1.1 modern curriculum vitae and letter style scheme: casual]
|
\ProvidesPackage{moderncvstylecasual}[2026-01-31 v2.5.1 modern curriculum vitae and letter style scheme: casual]
|
||||||
|
|
||||||
|
% head section alignment options: "left" (default) or "right"
|
||||||
|
\@initializecommand{\moderncvstyleheadoptions}{}
|
||||||
|
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
|
||||||
|
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
|
||||||
|
% head options alternate, details and no details
|
||||||
|
\DeclareOption{alternate}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,alternate}}
|
||||||
|
\@initializeif{\if@datainhead}\@datainheadfalse
|
||||||
|
\DeclareOption{details}{\@datainheadtrue\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
|
||||||
|
\DeclareOption{nodetails}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
|
||||||
|
|
||||||
|
|
||||||
|
% toggle use of symbol fonts.
|
||||||
|
\@initializeif{\if@symbols}\@symbolsfalse
|
||||||
|
\DeclareOption{symbols} {\@symbolstrue}
|
||||||
|
\DeclareOption{nosymbols} {\@symbolsfalse}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{right,symbols,nodetails}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% required packages
|
% fonts & icons
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
% Latin Modern fonts
|
||||||
|
%\ifxetexorluatex
|
||||||
|
% \setmainfont{Latin Modern Roman}
|
||||||
|
% \setsansfont{Latin Modern Sans}
|
||||||
|
% \setmathfont{Latin Modern Math}
|
||||||
|
%\else
|
||||||
|
% \IfFileExists{lmodern.sty}%
|
||||||
|
% {\RequirePackage{lmodern}}%
|
||||||
|
% {}
|
||||||
|
%\fi
|
||||||
|
|
||||||
|
% symbols
|
||||||
|
\if@symbols
|
||||||
|
\moderncvicons{symbols} % use symbols
|
||||||
|
\else
|
||||||
|
\moderncvicons{letters} % do not use symbols, use letters
|
||||||
|
\fi
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% package options
|
% Colors
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\RequirePackage{moderncvstyleclassic}
|
% head and footer
|
||||||
|
\colorlet{lastnamecolor}{color2}
|
||||||
|
\colorlet{namecolor}{lastnamecolor}
|
||||||
|
\colorlet{headrulecolor}{lastnamecolor!50}
|
||||||
|
\colorlet{firstnamecolor}{lastnamecolor!50}
|
||||||
|
\colorlet{titlecolor}{color2}
|
||||||
|
\colorlet{addresscolor}{color2}
|
||||||
|
\colorlet{quotecolor}{color1}
|
||||||
|
\colorlet{pictureframecolor}{color1}
|
||||||
|
% body
|
||||||
|
\colorlet{bodyrulecolor}{color1}
|
||||||
|
\colorlet{sectioncolor}{color1}
|
||||||
|
\colorlet{subsectioncolor}{color1}
|
||||||
|
\colorlet{hintstylecolor}{color0}
|
||||||
|
% letter
|
||||||
|
\colorlet{letterclosingcolor}{color2}
|
||||||
|
% skillmatrix
|
||||||
|
\colorlet{skillmatrixfullcolor}{color1}
|
||||||
|
\colorlet{skillmatrixemptycolor}{color2!30}
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% overall style definition
|
% header, body & footer
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% commands
|
\moderncvhead[\moderncvstyleheadoptions]{2}
|
||||||
% footer symbol used to separate footer elements
|
\moderncvbody{1}
|
||||||
\newcommand*{\footersymbol}{%
|
% include foot only if nodetails option is active since otherwise we have two times the information
|
||||||
{~~~{\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
|
% on the page
|
||||||
% internal command to add an element to the footer
|
\if@datainhead
|
||||||
% it collects the elements in a temporary box, and checks when to flush the box
|
% if data is shown in head, do not include the footer
|
||||||
\newsavebox{\footerbox}%
|
\else
|
||||||
\newsavebox{\footertempbox}%
|
\moderncvfoot{1}
|
||||||
\newlength{\footerwidth}%
|
\fi
|
||||||
\newlength{\footerboxwidth}%
|
|
||||||
\newif\if@firstfooterelement\@firstfooterelementtrue%
|
|
||||||
% adds an element to the footer, separated by footersymbol
|
|
||||||
% usage: \addtofooter[footersymbol]{element}
|
|
||||||
\newcommand*{\addtofooter}[2][\footersymbol]{%
|
|
||||||
\if@firstfooterelement%
|
|
||||||
\savebox{\footertempbox}{\usebox{\footerbox}#2}%
|
|
||||||
\else%
|
|
||||||
\savebox{\footertempbox}{\usebox{\footerbox}#1#2}\fi%
|
|
||||||
\settowidth{\footerboxwidth}{\usebox{\footertempbox}}%
|
|
||||||
\ifnum\footerboxwidth<\footerwidth%
|
|
||||||
\savebox{\footerbox}{\usebox{\footertempbox}}%
|
|
||||||
\@firstfooterelementfalse%
|
|
||||||
\else%
|
|
||||||
\flushfooter\\%
|
|
||||||
\savebox{\footerbox}{#2}%
|
|
||||||
\savebox{\footertempbox}{#2}%
|
|
||||||
\@firstfooterelementfalse\fi}
|
|
||||||
% internal command to flush the footer
|
|
||||||
\newcommand*{\flushfooter}{%
|
|
||||||
\strut\usebox{\footerbox}%
|
|
||||||
\savebox{\footerbox}{}%
|
|
||||||
\savebox{\footertempbox}{}
|
|
||||||
\setlength{\footerboxwidth}{0pt}}
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% resume style definition
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% fonts
|
|
||||||
\renewcommand*{\namefont}{\fontsize{38}{40}\mdseries\upshape}
|
|
||||||
\renewcommand*{\addressfont}{\normalsize\mdseries\slshape}
|
|
||||||
|
|
||||||
% commands
|
|
||||||
\renewcommand*{\makecvtitle}{%
|
|
||||||
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
|
||||||
\recomputecvlengths%
|
|
||||||
% ensure footer with personal information
|
|
||||||
\makecvfooter%
|
|
||||||
% optional picture
|
|
||||||
\newbox{\makecvtitlepicturebox}%
|
|
||||||
\savebox{\makecvtitlepicturebox}{%
|
|
||||||
\ifthenelse{\isundefined{\@photo}}%
|
|
||||||
{}%
|
|
||||||
{%
|
|
||||||
\setlength\fboxrule{\@photoframewidth}%
|
|
||||||
\ifdim\@photoframewidth=0pt%
|
|
||||||
\setlength{\fboxsep}{0pt}\fi%
|
|
||||||
{\color{color1}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}%
|
|
||||||
\usebox{\makecvtitlepicturebox}%
|
|
||||||
% name
|
|
||||||
\@initializelength{\makecvtitlepicturewidth}%
|
|
||||||
\settowidth{\makecvtitlepicturewidth}{\usebox{\makecvtitlepicturebox}}%
|
|
||||||
\parbox[b]{\textwidth-\makecvtitlepicturewidth}{%
|
|
||||||
\raggedleft\namefont{\color{color2!50}\@firstname} {\color{color2}\@familyname}}\\[-.35em]% alternate design: \MakeLowercase and no space
|
|
||||||
{\color{color2!50}\rule{\textwidth}{.25ex}}%
|
|
||||||
% optional title
|
|
||||||
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\raggedleft\titlestyle{\@title}}\\[2.5em]%
|
|
||||||
% optional quote
|
|
||||||
\ifthenelse{\isundefined{\@quote}}%
|
|
||||||
{}%
|
|
||||||
{{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
|
|
||||||
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle
|
|
||||||
|
|
||||||
\renewcommand*{\makecvfooter}{%
|
|
||||||
\setlength{\footerwidth}{0.8\textwidth}%
|
|
||||||
\fancypagestyle{plain}{%
|
|
||||||
\fancyfoot[c]{%
|
|
||||||
\parbox[b]{\footerwidth}{%
|
|
||||||
\centering%
|
|
||||||
\color{color2}\addressfont%
|
|
||||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtofooter[]{\addresssymbol\@addressstreet}%
|
|
||||||
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofooter[~--~]{\@addresscity}}\flushfooter\@firstfooterelementtrue\\}% if \addresstreet is defined, \addresscity will always be defined but could be empty
|
|
||||||
\ifthenelse{\isundefined{\@mobile}}{}{\addtofooter{\mobilesymbol\@mobile}}%
|
|
||||||
\ifthenelse{\isundefined{\@phone}}{}{\addtofooter{\phonesymbol\@phone}}%
|
|
||||||
\ifthenelse{\isundefined{\@fax}}{}{\addtofooter{\faxsymbol\@fax}}%
|
|
||||||
\ifthenelse{\isundefined{\@email}}{}{\addtofooter{\emailsymbol\emaillink{\@email}}}%
|
|
||||||
\ifthenelse{\isundefined{\@homepage}}{}{\addtofooter{\homepagesymbol\httplink{\@homepage}}}%
|
|
||||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofooter{\@extrainfo}}%
|
|
||||||
\ifthenelse{\lengthtest{\footerboxwidth=0pt}}{}{\flushfooter}% 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 style definition
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
\renewcommand*{\makelettertitle}{%
|
|
||||||
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
|
||||||
\recomputeletterlengths%
|
|
||||||
% ensure footer with personal information
|
|
||||||
\makeletterfooter%
|
|
||||||
% recipient block
|
|
||||||
\begin{minipage}[t]{.5\textwidth}
|
|
||||||
\raggedright%
|
|
||||||
\addressfont%
|
|
||||||
{\bfseries\upshape\@recipientname}\\%
|
|
||||||
\@recipientaddress%
|
|
||||||
\end{minipage}
|
|
||||||
% date
|
|
||||||
\hfill% US style
|
|
||||||
% \\[1em]% UK style
|
|
||||||
\hbox{\today}\\[2em]% US informal style: "April 6, 2006"; UK formal style: "05/04/2006"
|
|
||||||
% opening
|
|
||||||
\raggedright%
|
|
||||||
\@opening\\[1.5em]%
|
|
||||||
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
|
||||||
% \ignorespacesafterend% not working
|
|
||||||
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
|
||||||
|
|
||||||
\renewcommand*{\makeletterfooter}{%
|
|
||||||
\setlength{\footerwidth}{0.8\textwidth}%
|
|
||||||
\fancypagestyle{plain}{%
|
|
||||||
\fancyfoot[c]{%
|
|
||||||
\parbox[b]{\footerwidth}{%
|
|
||||||
\centering%
|
|
||||||
\addressfont\color{color2}%
|
|
||||||
\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~\@familyname}\\% the \strut is required to ensure the line is exactly \baselineskip tall
|
|
||||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtofooter[]{\addresssymbol\@addressstreet}%
|
|
||||||
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofooter[~--~]{\@addresscity}}\flushfooter\@firstfooterelementtrue\\}% if \addresstreet is defined, \addresscity will always be defined but could be empty
|
|
||||||
\ifthenelse{\isundefined{\@mobile}}{}{\addtofooter{\mobilesymbol\@mobile}}%
|
|
||||||
\ifthenelse{\isundefined{\@phone}}{}{\addtofooter{\phonesymbol\@phone}}%
|
|
||||||
\ifthenelse{\isundefined{\@fax}}{}{\addtofooter{\faxsymbol\@fax}}%
|
|
||||||
\ifthenelse{\isundefined{\@email}}{}{\addtofooter{\emailsymbol\emaillink{\@email}}}%
|
|
||||||
\ifthenelse{\isundefined{\@homepage}}{}{\addtofooter{\homepagesymbol\httplink{\@homepage}}}%
|
|
||||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofooter{\@extrainfo}}%
|
|
||||||
\ifthenelse{\lengthtest{\footerboxwidth=0pt}}{}{\flushfooter}% 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}}
|
|
||||||
|
|
||||||
\renewcommand*{\makeletterclosing}{
|
|
||||||
\@closing\\[3em]%
|
|
||||||
{\bfseries\@firstname~\@familyname}%
|
|
||||||
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
|
||||||
\\%
|
|
||||||
\vfil%
|
|
||||||
{\color{color2}\itshape\enclname: \@enclosure}}%
|
|
||||||
\vfil}
|
|
||||||
|
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvstyleclassic.sty'.
|
%% start of file `moderncvstyleclassic.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,290 +10,83 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvstyleclassic}[2012/07/29 v1.1 modern curriculum vitae and letter style scheme: classic]
|
\ProvidesPackage{moderncvstyleclassic}[2026-01-31 v2.5.1 modern curriculum vitae and letter style scheme: classic]
|
||||||
|
|
||||||
|
% head section alignment options: "left" (default) or "right"
|
||||||
|
\@initializecommand{\moderncvstyleheadoptions}{}
|
||||||
|
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
|
||||||
|
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
|
||||||
|
\DeclareOption{top}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,top}}
|
||||||
|
|
||||||
|
\@initializeif{\if@datainhead}\@datainheadtrue
|
||||||
|
\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
|
||||||
|
\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
|
||||||
|
|
||||||
|
% toggle use of symbol fonts.
|
||||||
|
\@initializeif{\if@symbols}\@symbolsfalse
|
||||||
|
\DeclareOption{symbols} {\@symbolstrue}
|
||||||
|
\DeclareOption{nosymbols} {\@symbolsfalse}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{left,symbols,details}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% required packages
|
% fonts & icons
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
% Latin Modern fonts
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% package options
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% overall style definition
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% fonts
|
|
||||||
%\ifxetexorluatex
|
%\ifxetexorluatex
|
||||||
% \setmainfont{Latin Modern Roman}
|
% \setmainfont{Latin Modern Roman}
|
||||||
% \setsansfont{Latin Modern Sans}
|
% \setsansfont{Latin Modern Sans}
|
||||||
% \setmathfont{Latin Modern Math}
|
% \setmathfont{Latin Modern Math}
|
||||||
%\else
|
%\else
|
||||||
\IfFileExists{lmodern.sty}%
|
% \IfFileExists{lmodern.sty}%
|
||||||
{\RequirePackage{lmodern}}%
|
% {\RequirePackage{lmodern}}%
|
||||||
{}
|
% {}
|
||||||
%\fi
|
%\fi
|
||||||
|
|
||||||
% symbols
|
% symbols
|
||||||
\renewcommand*{\mobilesymbol}{\marvosymbol{72}~}
|
\if@symbols
|
||||||
\renewcommand*{\phonesymbol}{\marvosymbol{84}~}
|
\moderncvicons{symbols} % use symbols
|
||||||
\renewcommand*{\faxsymbol}{\marvosymbol{117}~}
|
\else
|
||||||
\renewcommand*{\emailsymbol}{\marvosymbol{66}~}
|
\moderncvicons{letters} % do not use symbols, use letters
|
||||||
\renewcommand*{\homepagesymbol}{{\Large\marvosymbol{205}}~}
|
\fi
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% resume style definition
|
% Colors
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% fonts
|
% head and footer
|
||||||
\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
|
\colorlet{lastnamecolor}{color2}
|
||||||
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
|
\colorlet{namecolor}{lastnamecolor}
|
||||||
\renewcommand*{\addressfont}{\small\mdseries\slshape}
|
\colorlet{headrulecolor}{lastnamecolor!50}
|
||||||
\renewcommand*{\quotefont}{\large\slshape}
|
\colorlet{firstnamecolor}{lastnamecolor!50}
|
||||||
\renewcommand*{\sectionfont}{\Large\mdseries\upshape}
|
\colorlet{titlecolor}{color2}
|
||||||
\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
|
\colorlet{addresscolor}{color2}
|
||||||
\renewcommand*{\hintfont}{}
|
\colorlet{quotecolor}{color1}
|
||||||
|
\colorlet{pictureframecolor}{color1}
|
||||||
% styles
|
% body
|
||||||
\newcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
|
\colorlet{bodyrulecolor}{color1}
|
||||||
\newcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
|
\colorlet{sectioncolor}{color1}
|
||||||
\newcommand*{\addressstyle}[1]{{\addressfont\textcolor{color1}{#1}}}
|
\colorlet{subsectioncolor}{color1}
|
||||||
\newcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
|
\colorlet{hintstylecolor}{color0}
|
||||||
\newcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
|
% letter
|
||||||
\newcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
|
\colorlet{letterclosingcolor}{color2}
|
||||||
\newcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
|
% skillmatrix
|
||||||
|
\colorlet{skillmatrixfullcolor}{color1}
|
||||||
% lengths
|
\colorlet{skillmatrixemptycolor}{color2!30}
|
||||||
\newlength{\quotewidth}
|
|
||||||
\newlength{\hintscolumnwidth}
|
|
||||||
\setlength{\hintscolumnwidth}{0.175\textwidth}
|
|
||||||
\newlength{\separatorcolumnwidth}
|
|
||||||
\setlength{\separatorcolumnwidth}{0.025\textwidth}
|
|
||||||
\newlength{\maincolumnwidth}
|
|
||||||
\newlength{\doubleitemmaincolumnwidth}
|
|
||||||
\newlength{\listitemsymbolwidth}
|
|
||||||
\settowidth{\listitemsymbolwidth}{\listitemsymbol}
|
|
||||||
\newlength{\listitemmaincolumnwidth}
|
|
||||||
\newlength{\listdoubleitemmaincolumnwidth}
|
|
||||||
|
|
||||||
% commands
|
|
||||||
\renewcommand*{\recomputecvlengths}{%
|
|
||||||
\setlength{\quotewidth}{0.65\textwidth}%
|
|
||||||
% main lenghts
|
|
||||||
\setlength{\maincolumnwidth}{\textwidth-\separatorcolumnwidth-\hintscolumnwidth}%
|
|
||||||
% listitem lengths
|
|
||||||
\setlength{\listitemmaincolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
|
|
||||||
% doubleitem lengths
|
|
||||||
\setlength{\doubleitemmaincolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
|
|
||||||
\setlength{\doubleitemmaincolumnwidth}{0.5\doubleitemmaincolumnwidth}%
|
|
||||||
% listdoubleitem lengths
|
|
||||||
\setlength{\listdoubleitemmaincolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
|
|
||||||
\setlength{\listdoubleitemmaincolumnwidth}{0.5\listdoubleitemmaincolumnwidth}%
|
|
||||||
% fancyhdr lengths
|
|
||||||
\renewcommand{\headwidth}{\textwidth}%
|
|
||||||
% regular lengths
|
|
||||||
\setlength{\parskip}{0\p@}}
|
|
||||||
|
|
||||||
% optional maketitle width to force a certain width (if set to 0pt, the width is calculated automatically)
|
|
||||||
\newlength{\makecvtitlenamewidth}
|
|
||||||
\setlength{\makecvtitlenamewidth}{0pt}% dummy value
|
|
||||||
\renewcommand*{\makecvtitle}{%
|
|
||||||
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
|
||||||
\recomputecvlengths%
|
|
||||||
% optional detailed information box
|
|
||||||
\newbox{\makecvtitledetailsbox}%
|
|
||||||
\savebox{\makecvtitledetailsbox}{%
|
|
||||||
\addressfont\color{color2}%
|
|
||||||
\begin{tabular}[b]{@{}r@{}}%
|
|
||||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
|
||||||
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}}% if \addresstreet is defined, \addresscity will always be defined but could be empty
|
|
||||||
\ifthenelse{\isundefined{\@mobile}}{}{\makenewline\mobilesymbol\@mobile}%
|
|
||||||
\ifthenelse{\isundefined{\@phone}}{}{\makenewline\phonesymbol\@phone}%
|
|
||||||
\ifthenelse{\isundefined{\@fax}}{}{\makenewline\faxsymbol\@fax}%
|
|
||||||
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
|
||||||
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
|
|
||||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
|
|
||||||
\end{tabular}
|
|
||||||
}%
|
|
||||||
% optional picture box
|
|
||||||
\newbox{\makecvtitlepicturebox}%
|
|
||||||
\savebox{\makecvtitlepicturebox}{%
|
|
||||||
\ifthenelse{\isundefined{\@photo}}%
|
|
||||||
{}%
|
|
||||||
{%
|
|
||||||
\hspace*{\separatorcolumnwidth}%
|
|
||||||
\color{color1}%
|
|
||||||
\setlength{\fboxrule}{\@photoframewidth}%
|
|
||||||
\ifdim\@photoframewidth=0pt%
|
|
||||||
\setlength{\fboxsep}{0pt}\fi%
|
|
||||||
\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}%
|
|
||||||
% name and title
|
|
||||||
\newlength{\makecvtitledetailswidth}\settowidth{\makecvtitledetailswidth}{\usebox{\makecvtitledetailsbox}}%
|
|
||||||
\newlength{\makecvtitlepicturewidth}\settowidth{\makecvtitlepicturewidth}{\usebox{\makecvtitlepicturebox}}%
|
|
||||||
\ifthenelse{\lengthtest{\makecvtitlenamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvtitlenamewidth=0pt)
|
|
||||||
{\setlength{\makecvtitlenamewidth}{\textwidth-\makecvtitledetailswidth-\makecvtitlepicturewidth}}%
|
|
||||||
{}%
|
|
||||||
\begin{minipage}[b]{\makecvtitlenamewidth}%
|
|
||||||
\namestyle{\@firstname\ \@familyname}%
|
|
||||||
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
|
|
||||||
\end{minipage}%
|
|
||||||
\hfill%
|
|
||||||
% detailed information
|
|
||||||
\llap{\usebox{\makecvtitledetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvtitlenamewidth is forced
|
|
||||||
% optional photo
|
|
||||||
\usebox{\makecvtitlepicturebox}\\[2.5em]%
|
|
||||||
% optional quote
|
|
||||||
\ifthenelse{\isundefined{\@quote}}%
|
|
||||||
{}%
|
|
||||||
{{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
|
|
||||||
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvtitle
|
|
||||||
|
|
||||||
\newlength{\baseletterheight}
|
|
||||||
\settoheight{\baseletterheight}{\sectionstyle{o}}
|
|
||||||
\setlength{\baseletterheight}{\baseletterheight-0.95ex}
|
|
||||||
\renewcommand*{\section}[1]{%
|
|
||||||
\par\addvspace{2.5ex}%
|
|
||||||
\phantomsection{}% reset the anchor for hyperrefs
|
|
||||||
\addcontentsline{toc}{section}{#1}%
|
|
||||||
\parbox[t]{\hintscolumnwidth}{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}%
|
|
||||||
\hspace{\separatorcolumnwidth}%
|
|
||||||
\parbox[t]{\maincolumnwidth}{\strut\sectionstyle{#1}}%
|
|
||||||
\par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
|
|
||||||
|
|
||||||
\renewcommand*{\subsection}[1]{%
|
|
||||||
\par\addvspace{1ex}%
|
|
||||||
\phantomsection{}% reset the anchor for hyperrefs
|
|
||||||
\addcontentsline{toc}{subsection}{#1}%
|
|
||||||
\begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
|
|
||||||
\raggedleft\hintstyle{} &{\strut\subsectionstyle{#1}}%
|
|
||||||
\end{tabular}%
|
|
||||||
\par\nobreak\addvspace{0.5ex}\@afterheading}% to avoid a pagebreak after the heading
|
|
||||||
|
|
||||||
\renewcommand*{\cvitem}[3][.25em]{%
|
|
||||||
\begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
|
|
||||||
\raggedleft\hintstyle{#2} &{#3}%
|
|
||||||
\end{tabular}%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvdoubleitem}[5][.25em]{%
|
|
||||||
\cvitem[#1]{#2}{%
|
|
||||||
\begin{minipage}[t]{\doubleitemmaincolumnwidth}#3\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
|
|
||||||
\hspace*{\separatorcolumnwidth}%
|
|
||||||
\begin{minipage}[t]{\doubleitemmaincolumnwidth}#5\end{minipage}}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvlistitem}[2][.25em]{%
|
|
||||||
\cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemmaincolumnwidth}#2\end{minipage}}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
|
|
||||||
\cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}#2\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\ifthenelse{\equal{#3}{}}%
|
|
||||||
{}%
|
|
||||||
{\listitemsymbol\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}#3\end{minipage}}}}
|
|
||||||
|
|
||||||
\renewcommand*{\cventry}[7][.25em]{%
|
|
||||||
\cvitem[#1]{#2}{%
|
|
||||||
{\bfseries#3}%
|
|
||||||
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
|
|
||||||
\ifthenelse{\equal{#5}{}}{}{, #5}%
|
|
||||||
\ifthenelse{\equal{#6}{}}{}{, #6}%
|
|
||||||
.\strut%
|
|
||||||
\ifx&%
|
|
||||||
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
|
|
||||||
|
|
||||||
\newbox{\cvitemwithcommentmainbox}
|
|
||||||
\newlength{\cvitemwithcommentmainlength}
|
|
||||||
\newlength{\cvitemwithcommentcommentlength}
|
|
||||||
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
|
|
||||||
\savebox{\cvitemwithcommentmainbox}{{\bfseries#3}}%
|
|
||||||
\setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
|
|
||||||
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
|
|
||||||
\cvitem[#1]{#2}{%
|
|
||||||
\begin{minipage}[t]{\cvitemwithcommentmainlength}\bfseries#3\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
|
|
||||||
|
|
||||||
\renewenvironment{thebibliography}[1]%
|
|
||||||
{%
|
|
||||||
\bibliographyhead{\refname}%
|
|
||||||
% \small%
|
|
||||||
\begin{list}{\bibliographyitemlabel}%
|
|
||||||
{%
|
|
||||||
\setlength{\topsep}{0pt}%
|
|
||||||
\setlength{\labelwidth}{\hintscolumnwidth}%
|
|
||||||
\setlength{\labelsep}{\separatorcolumnwidth}%
|
|
||||||
\leftmargin\labelwidth%
|
|
||||||
\advance\leftmargin\labelsep%
|
|
||||||
\@openbib@code%
|
|
||||||
\usecounter{enumiv}%
|
|
||||||
\let\p@enumiv\@empty%
|
|
||||||
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
|
||||||
\sloppy\clubpenalty4000\widowpenalty4000%
|
|
||||||
% \sfcode`\.\@m%
|
|
||||||
% \sfcode `\=1000\relax%
|
|
||||||
}%
|
|
||||||
{%
|
|
||||||
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
|
|
||||||
\end{list}%
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% letter style definition
|
% header, body & footer
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% commands
|
\moderncvhead[\moderncvstyleheadoptions]{1}
|
||||||
\renewcommand*{\recomputeletterlengths}{%
|
\moderncvbody{1}
|
||||||
\recomputecvlengths%
|
% include foot only if nodetails option is active since otherwise we have two times the information
|
||||||
\setlength{\parskip}{6\p@}}
|
% on the page
|
||||||
|
\if@datainhead
|
||||||
\renewcommand*{\makelettertitle}{%
|
% if data is shown in head, do not include the footer
|
||||||
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
\else
|
||||||
\recomputeletterlengths%
|
\moderncvfoot{1}
|
||||||
% sender contact info
|
\fi
|
||||||
\hfill%
|
|
||||||
\begin{minipage}{.5\textwidth}%
|
|
||||||
\raggedleft%
|
|
||||||
\addressfont\textcolor{color2}{%
|
|
||||||
{\bfseries\upshape\@firstname~\@familyname}\@firstdetailselementfalse%
|
|
||||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
|
||||||
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}}%
|
|
||||||
\ifthenelse{\isundefined{\@mobile}}{}{\makenewline\mobilesymbol\@mobile}%
|
|
||||||
\ifthenelse{\isundefined{\@phone}}{}{\makenewline\phonesymbol\@phone}%
|
|
||||||
\ifthenelse{\isundefined{\@fax}}{}{\makenewline\faxsymbol\@fax}%
|
|
||||||
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
|
||||||
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
|
|
||||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}%
|
|
||||||
\end{minipage}\\[1em]
|
|
||||||
% recipient block
|
|
||||||
\begin{minipage}[t]{.5\textwidth}
|
|
||||||
\raggedright%
|
|
||||||
\addressfont%
|
|
||||||
{\bfseries\upshape\@recipientname}\\%
|
|
||||||
\@recipientaddress%
|
|
||||||
\end{minipage}
|
|
||||||
% date
|
|
||||||
\hfill% US style
|
|
||||||
% \\[1em]% UK style
|
|
||||||
\hbox{\today}\\[2em]% US informal style: "April 6, 2006"; UK formal style: "05/04/2006"
|
|
||||||
% opening
|
|
||||||
\raggedright%
|
|
||||||
\@opening\\[1.5em]%
|
|
||||||
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
|
||||||
% \ignorespacesafterend% not working
|
|
||||||
\hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
|
||||||
|
|
||||||
\renewcommand*{\makeletterclosing}{
|
|
||||||
\@closing\\[3em]%
|
|
||||||
{\bfseries \@firstname~\@familyname}%
|
|
||||||
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
|
||||||
\\%
|
|
||||||
\vfill%
|
|
||||||
{\color{color2}\itshape\enclname: \@enclosure}}}
|
|
||||||
|
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
|
||||||
63
moderncvstylecontemporary.sty
Normal file
63
moderncvstylecontemporary.sty
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
%% start of file `moderncvstylecontemporary.sty'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
|
||||||
|
%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me), 2024-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvstylecontemporary}[2026-01-31 v2.5.1 modern curriculum vitae and letter style scheme: contemporary]
|
||||||
|
|
||||||
|
% head section alignment options: "left" (default) or "right"
|
||||||
|
\@initializecommand{\moderncvstyleheadoptions}{}
|
||||||
|
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
|
||||||
|
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
|
||||||
|
\DeclareOption{qr} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,qr}}
|
||||||
|
\DeclareOption{noqr}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,noqr}}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{left,qr}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts & icons
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Latin Modern fonts
|
||||||
|
%\ifxetexorluatex
|
||||||
|
% \setmainfont{Latin Modern Roman}
|
||||||
|
% \setsansfont{Latin Modern Sans}
|
||||||
|
% \setmathfont{Latin Modern Math}
|
||||||
|
%\else
|
||||||
|
\IfFileExists{lmodern.sty}%
|
||||||
|
{\RequirePackage{lmodern}}%
|
||||||
|
{}
|
||||||
|
%\fi
|
||||||
|
|
||||||
|
% symbols
|
||||||
|
\definecolor{default-socialicon-color}{named}{headtext}
|
||||||
|
\moderncvicons{symbols}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% skillmatrix
|
||||||
|
\colorlet{bodyrulecolor}{color1}
|
||||||
|
\colorlet{skillmatrixfullcolor}{color1}
|
||||||
|
\colorlet{skillmatrixemptycolor}{color2!30}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% header, body & footer
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\moderncvhead[\moderncvstyleheadoptions]{7}
|
||||||
|
\moderncvbody{6}
|
||||||
|
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvstylecontemporary.sty'.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvstyleempty.sty'.
|
%% start of file `moderncvstyleempty.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,22 +10,61 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvstyleempty}[2012/07/29 v1.1 modern curriculum vitae scheme: empty]
|
\ProvidesPackage{moderncvstyleempty}[2026-01-31 v2.5.1 modern curriculum vitae scheme: empty]
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% required packages
|
% required packages
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% package options
|
% package options
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
% toggle use of symbol fonts.
|
||||||
|
\@initializeif{\if@symbols}\@symbolsfalse
|
||||||
|
\DeclareOption{symbols} {\@symbolstrue}
|
||||||
|
\DeclareOption{nosymbols} {\@symbolsfalse}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{symbols}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% style definition
|
% style definition
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% head and footer
|
||||||
|
\colorlet{lastnamecolor}{color2}
|
||||||
|
% \colorlet{namecolor}{lastnamecolor}
|
||||||
|
\colorlet{headrulecolor}{lastnamecolor!50}
|
||||||
|
\colorlet{firstnamecolor}{lastnamecolor!50}
|
||||||
|
\colorlet{titlecolor}{color2}
|
||||||
|
\colorlet{addresscolor}{color2}
|
||||||
|
\colorlet{quotecolor}{color1}
|
||||||
|
\colorlet{pictureframecolor}{color1}
|
||||||
|
% body
|
||||||
|
\colorlet{bodyrulecolor}{color1}
|
||||||
|
\colorlet{sectioncolor}{color1}
|
||||||
|
\colorlet{subsectioncolor}{color1}
|
||||||
|
\colorlet{hintstylecolor}{color0}
|
||||||
|
% letter
|
||||||
|
\colorlet{letterclosingcolor}{color2}
|
||||||
|
% skillmatrix
|
||||||
|
\colorlet{skillmatrixfullcolor}{color1}
|
||||||
|
\colorlet{skillmatrixemptycolor}{color2!30}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts & icons
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% symbols
|
||||||
|
\if@symbols
|
||||||
|
\moderncvicons{symbols} % use symbols
|
||||||
|
\else
|
||||||
|
\moderncvicons{letters} % do not use symbols, use letters
|
||||||
|
\fi
|
||||||
|
|
||||||
% see moderncv.cls for command declarations that needs to be implemented, e.g. \maketitle, \section, \subsections, \cvline, etc
|
% see moderncv.cls for command declarations that needs to be implemented, e.g. \maketitle, \section, \subsections, \cvline, etc
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
|
||||||
94
moderncvstylefancy.sty
Normal file
94
moderncvstylefancy.sty
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
%% start of file `moderncvstylefancy.sty'.
|
||||||
|
%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvstylefancy}[2026-01-31 v2.5.1 modern curriculum vitae and letter style scheme: fancy]
|
||||||
|
|
||||||
|
% headoptions
|
||||||
|
\@initializecommand{\moderncvstyleheadoptions}{}
|
||||||
|
\@initializeif{\if@datainhead}\@datainheadtrue
|
||||||
|
\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
|
||||||
|
\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
|
||||||
|
|
||||||
|
% toggle use of symbol fonts.
|
||||||
|
\@initializeif{\if@symbols}\@symbolsfalse
|
||||||
|
\DeclareOption{symbols} {\@symbolstrue}
|
||||||
|
\DeclareOption{nosymbols} {\@symbolsfalse}
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{symbols,details}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Colors
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% head and footer
|
||||||
|
\colorlet{lastnamecolor}{color1}
|
||||||
|
\colorlet{namecolor}{lastnamecolor}
|
||||||
|
\colorlet{headrulecolor}{color1}
|
||||||
|
\colorlet{firstnamecolor}{lastnamecolor!50}
|
||||||
|
\colorlet{titlecolor}{color2}
|
||||||
|
\colorlet{addresscolor}{color2}
|
||||||
|
\colorlet{quotecolor}{color1}
|
||||||
|
\colorlet{pictureframecolor}{color1}
|
||||||
|
% body
|
||||||
|
\colorlet{bodyrulecolor}{color1}
|
||||||
|
\colorlet{sectioncolor}{color1}
|
||||||
|
\colorlet{subsectioncolor}{color1}
|
||||||
|
\colorlet{hintstylecolor}{color0}
|
||||||
|
% letter
|
||||||
|
\colorlet{letterclosingcolor}{color2}
|
||||||
|
% skillmatrix
|
||||||
|
\colorlet{skillmatrixfullcolor}{color1}
|
||||||
|
\colorlet{skillmatrixemptycolor}{color2!30}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% fonts & icons
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% EB Garamond font
|
||||||
|
%\ifxetexorluatex
|
||||||
|
% \setmainfont{EB Garamond}
|
||||||
|
% \setsansfont{EB Garamond}
|
||||||
|
% \setmathfont{EB Garamond}
|
||||||
|
%\else
|
||||||
|
\IfFileExists{ebgaramond.sty}%
|
||||||
|
{\RequirePackage{ebgaramond}}%
|
||||||
|
{}
|
||||||
|
%\fi
|
||||||
|
|
||||||
|
|
||||||
|
% symbols
|
||||||
|
\if@symbols
|
||||||
|
\moderncvicons{symbols} % use symbols
|
||||||
|
\else
|
||||||
|
\moderncvicons{letters} % do not use symbols, use letters
|
||||||
|
\fi
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% header, body & footer
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\moderncvhead[\moderncvstyleheadoptions]{5}
|
||||||
|
\moderncvbody{5}
|
||||||
|
|
||||||
|
% include foot only if nodetails option is active since otherwise we have two times the information
|
||||||
|
% on the page
|
||||||
|
\if@datainhead
|
||||||
|
% if data is shown in head, do not include the footer
|
||||||
|
\else
|
||||||
|
\moderncvfoot{1}
|
||||||
|
\fi
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvstylefancy.sty'.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `moderncvstyleoldstyle.sty'.
|
%% start of file `moderncvstyleoldstyle.sty'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
|
|
@ -10,25 +10,28 @@
|
||||||
% identification
|
% identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
\ProvidesPackage{moderncvstyleoldstyle}[2012/07/29 v1.1 modern curriculum vitae and letter style scheme: oldstyle]
|
\ProvidesPackage{moderncvstyleoldstyle}[2026-01-31 v2.5.1 modern curriculum vitae and letter style scheme: oldstyle]
|
||||||
|
|
||||||
|
% headoptions
|
||||||
|
\@initializecommand{\moderncvstyleheadoptions}{}
|
||||||
|
\@initializeif{\if@datainhead}\@datainheadtrue
|
||||||
|
\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
|
||||||
|
\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
% toggle use of symbol fonts.
|
||||||
% required packages
|
\@initializeif{\if@symbols}\@symbolsfalse
|
||||||
%-------------------------------------------------------------------------------
|
\DeclareOption{symbols} {\@symbolstrue}
|
||||||
% change the layout of the page on the fly, for resume or letter layout
|
\DeclareOption{nosymbols} {\@symbolsfalse}
|
||||||
\RequirePackage{changepage}
|
|
||||||
|
|
||||||
|
\DeclareOption*{}% avoid choking on unknown options
|
||||||
|
\ExecuteOptions{symbols,details}
|
||||||
|
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% package options
|
% fonts & icons
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
% Kurier font
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% overall style definition
|
|
||||||
%-------------------------------------------------------------------------------
|
|
||||||
% fonts
|
|
||||||
%\ifxetexorluatex
|
%\ifxetexorluatex
|
||||||
% \setmainfont[Numbers={OldStyle,Proportional}, BoldFont={Kurier Bold}, ItalicFont={Kurier Light Italic}, BoldItalicFont={Kurier Bold Italic}]{Kurier Light}
|
% \setmainfont[Numbers={OldStyle,Proportional}, BoldFont={Kurier Bold}, ItalicFont={Kurier Light Italic}, BoldItalicFont={Kurier Bold Italic}]{Kurier Light}
|
||||||
% \setsansfont[Numbers={OldStyle,Proportional}, BoldFont={Kurier Bold}, ItalicFont={Kurier Light Italic}, BoldItalicFont={Kurier Bold Italic}]{Kurier Light}
|
% \setsansfont[Numbers={OldStyle,Proportional}, BoldFont={Kurier Bold}, ItalicFont={Kurier Light Italic}, BoldItalicFont={Kurier Bold Italic}]{Kurier Light}
|
||||||
|
|
@ -43,273 +46,49 @@
|
||||||
%\fi
|
%\fi
|
||||||
|
|
||||||
% symbols
|
% symbols
|
||||||
\renewcommand*{\listitemsymbol}{\labelitemi~}
|
\if@symbols
|
||||||
\renewcommand*{\addresssymbol}{}
|
\moderncvicons{symbols} % use marvosym symbols pdflatex is used
|
||||||
\renewcommand*{\mobilesymbol}{\textbf{M}~}
|
\else
|
||||||
\renewcommand*{\phonesymbol}{\textbf{T}~}
|
\moderncvicons{letters} % do not use symbols, use letters
|
||||||
\renewcommand*{\faxsymbol}{\textbf{F}~}
|
\fi
|
||||||
\renewcommand*{\emailsymbol}{\textbf{E}~}
|
|
||||||
\renewcommand*{\homepagesymbol}{}
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% resume style definition
|
% Colors
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% fonts
|
% head and footer
|
||||||
\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
|
\colorlet{lastnamecolor}{color2}
|
||||||
\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
|
\colorlet{namecolor}{lastnamecolor}
|
||||||
\renewcommand*{\addressfont}{\small\mdseries}
|
\colorlet{headrulecolor}{lastnamecolor!50}
|
||||||
\renewcommand*{\quotefont}{\large\itshape}
|
\colorlet{firstnamecolor}{lastnamecolor!50}
|
||||||
\renewcommand*{\sectionfont}{\Large\bfseries\upshape}
|
\colorlet{titlecolor}{color2}
|
||||||
\renewcommand*{\subsectionfont}{\large\bfseries\itshape}
|
\colorlet{addresscolor}{color2}
|
||||||
\renewcommand*{\hintfont}{\bfseries}
|
\colorlet{quotecolor}{color1}
|
||||||
|
\colorlet{pictureframecolor}{color1}
|
||||||
% styles
|
% body
|
||||||
\newcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
|
\colorlet{bodyrulecolor}{color1}
|
||||||
\newcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
|
\colorlet{sectioncolor}{color1}
|
||||||
\newcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
|
\colorlet{subsectioncolor}{color1}
|
||||||
\newcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
|
\colorlet{hintstylecolor}{color0}
|
||||||
\newcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
|
% letter
|
||||||
\newcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
|
\colorlet{letterclosingcolor}{color2}
|
||||||
\newcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
|
% skillmatrix
|
||||||
|
\colorlet{skillmatrixfullcolor}{color1}
|
||||||
% lengths
|
\colorlet{skillmatrixemptycolor}{color2!30}
|
||||||
\newlength{\quotewidth}
|
|
||||||
\newlength{\hintscolumnwidth}
|
|
||||||
\setlength{\hintscolumnwidth}{0.3\textwidth}%
|
|
||||||
\newlength{\separatorcolumnwidth}
|
|
||||||
\setlength{\separatorcolumnwidth}{0.025\textwidth}%
|
|
||||||
\newlength{\maincolumnwidth}
|
|
||||||
\newlength{\doubleitemcolumnwidth}
|
|
||||||
\newlength{\listitemsymbolwidth}
|
|
||||||
\settowidth{\listitemsymbolwidth}{\listitemsymbol}
|
|
||||||
\newlength{\listitemmaincolumnwidth}
|
|
||||||
\newlength{\listdoubleitemmaincolumnwidth}
|
|
||||||
|
|
||||||
% commands
|
|
||||||
\setlength{\marginparwidth}{0\p@}%
|
|
||||||
\setlength{\marginparsep}{0\p@}
|
|
||||||
\renewcommand*{\recomputecvlengths}{%
|
|
||||||
% regular lengths
|
|
||||||
\changepage{}{+\marginparwidth+\marginparsep}{}{}{}{}{}{}{}% if a letter was typeset before the resume, \marginparwidth and \marginparsep will be non-zero; otherwise, this has no effect
|
|
||||||
\setlength{\marginparwidth}{0\p@}%
|
|
||||||
\setlength{\marginparsep}{0\p@}
|
|
||||||
\setlength{\parskip}{0\p@}%
|
|
||||||
% maketitle lengths
|
|
||||||
\setlength{\quotewidth}{0.65\textwidth}%
|
|
||||||
% main lenghts
|
|
||||||
\setlength{\maincolumnwidth}{\textwidth-\hintscolumnwidth-\separatorcolumnwidth}%
|
|
||||||
% listitem lengths
|
|
||||||
\setlength{\listitemmaincolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
|
|
||||||
% doubleitem lengths
|
|
||||||
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
|
|
||||||
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
|
|
||||||
% listdoubleitem lengths
|
|
||||||
\setlength{\listdoubleitemmaincolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
|
|
||||||
\setlength{\listdoubleitemmaincolumnwidth}{0.5\listdoubleitemmaincolumnwidth}%
|
|
||||||
% fancyhdr lengths
|
|
||||||
\renewcommand{\headwidth}{\textwidth}}
|
|
||||||
|
|
||||||
\newcommand{\makecvinfo}[1]{%
|
|
||||||
\newbox{\makecvinfobox}%
|
|
||||||
\savebox{\makecvinfobox}{\parbox[t]{\hintscolumnwidth}{#1}}%
|
|
||||||
\newlength{\makecvinfoheight}%
|
|
||||||
\setlength{\makecvinfoheight}{\totalheightof{\usebox{\makecvinfobox}}}% the total height of the parbox is the sum of its height (\the\ht\makeinfobox) and its depth (\the\dp\makeinfobox); the \totalheightof command is provided by the "calc" package
|
|
||||||
\usebox{\makecvinfobox}\vspace{-\makecvinfoheight}%
|
|
||||||
\newlength{\leftcolumnwidth}%
|
|
||||||
\setlength{\leftcolumnwidth}{\hintscolumnwidth+\separatorcolumnwidth}%
|
|
||||||
\par\vspace{-\baselineskip}\vspace{-\parskip}\leftskip=\leftcolumnwidth}
|
|
||||||
|
|
||||||
\renewcommand*{\makecvtitle}{
|
|
||||||
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
|
||||||
\recomputecvlengths%
|
|
||||||
% optional picture box
|
|
||||||
\newbox{\makecvtitlepicturebox}%
|
|
||||||
\savebox{\makecvtitlepicturebox}{%
|
|
||||||
\ifthenelse{\isundefined{\@photo}}%
|
|
||||||
{}%
|
|
||||||
{%
|
|
||||||
\color{color1}%
|
|
||||||
\setlength\fboxrule{\@photoframewidth}%
|
|
||||||
\ifdim\@photoframewidth=0pt%
|
|
||||||
\setlength{\fboxsep}{0pt}\fi%
|
|
||||||
\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}%
|
|
||||||
% name and title
|
|
||||||
\newlength{\makecvtitlepicturewidth}\settowidth{\makecvtitlepicturewidth}{\usebox{\makecvtitlepicturebox}}%
|
|
||||||
\newlength{\makecvtitlenamewidth}\setlength{\makecvtitlenamewidth}{\textwidth-\makecvtitlepicturewidth}%
|
|
||||||
\begin{minipage}[b]{\makecvtitlenamewidth}%
|
|
||||||
\namestyle{\@firstname\ \@familyname}%
|
|
||||||
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
|
|
||||||
\end{minipage}%
|
|
||||||
% optional photo
|
|
||||||
\usebox{\makecvtitlepicturebox}\\[2.5em]%
|
|
||||||
% optional quote
|
|
||||||
\ifthenelse{\isundefined{\@quote}}%
|
|
||||||
{}%
|
|
||||||
{{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
|
|
||||||
% optional details
|
|
||||||
\makecvinfo{%
|
|
||||||
\addressfont\color{color2}%
|
|
||||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
|
||||||
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}}% if \addresstreet is defined, \addresscity will always be defined but could be empty
|
|
||||||
\ifthenelse{\isundefined{\@mobile}}{}{\makenewline\mobilesymbol\@mobile}%
|
|
||||||
\ifthenelse{\isundefined{\@phone}}{}{\makenewline\phonesymbol\@phone}%
|
|
||||||
\ifthenelse{\isundefined{\@fax}}{}{\makenewline\faxsymbol\@fax}%
|
|
||||||
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
|
||||||
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
|
|
||||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}}
|
|
||||||
|
|
||||||
\renewcommand*{\section}[1]{%
|
|
||||||
\par\addvspace{2.5ex}%
|
|
||||||
\phantomsection{}% reset the anchor for hyperrefs
|
|
||||||
\addcontentsline{toc}{section}{#1}%
|
|
||||||
\strut\sectionstyle{#1}%
|
|
||||||
\par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
|
|
||||||
|
|
||||||
\renewcommand*{\subsection}[1]{%
|
|
||||||
\par\addvspace{1ex}%
|
|
||||||
\phantomsection{}% reset the anchor for hyperrefs
|
|
||||||
\addcontentsline{toc}{subsection}{#1}%
|
|
||||||
\strut\subsectionstyle{#1}%
|
|
||||||
\par\nobreak\addvspace{0.5ex}\@afterheading}% to avoid a pagebreak after the heading
|
|
||||||
|
|
||||||
\renewcommand*{\cvitem}[3][.25em]{%
|
|
||||||
\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvdoubleitem}[5][.25em]{%
|
|
||||||
\begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvlistitem}[2][.25em]{%
|
|
||||||
\cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemmaincolumnwidth}#2\end{minipage}}}
|
|
||||||
|
|
||||||
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
|
|
||||||
\cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}#2\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\ifthenelse{\equal{#3}{}}%
|
|
||||||
{}%
|
|
||||||
{\listitemsymbol\begin{minipage}[t]{\listdoubleitemmaincolumnwidth}#3\end{minipage}}}}
|
|
||||||
|
|
||||||
\newbox{\cventryyearbox}
|
|
||||||
\newlength{\cventrytitleboxwidth}
|
|
||||||
\renewcommand*{\cventry}[7][.25em]{%
|
|
||||||
\savebox{\cventryyearbox}{%
|
|
||||||
\hspace*{2\separatorcolumnwidth}%
|
|
||||||
\hintstyle{#2}}%
|
|
||||||
\setlength{\cventrytitleboxwidth}{\widthof{\usebox{\cventryyearbox}}}%
|
|
||||||
\setlength{\cventrytitleboxwidth}{\maincolumnwidth-\cventrytitleboxwidth}%
|
|
||||||
\begin{minipage}{\maincolumnwidth}%
|
|
||||||
\parbox[t]{\cventrytitleboxwidth}{%
|
|
||||||
\strut%
|
|
||||||
{\bfseries#3}%
|
|
||||||
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
|
|
||||||
\ifthenelse{\equal{#5}{}}{}{, #5}%
|
|
||||||
\ifthenelse{\equal{#6}{}}{}{, #6}%
|
|
||||||
.\strut}%
|
|
||||||
\usebox{\cventryyearbox}%
|
|
||||||
\end{minipage}%
|
|
||||||
\ifx&%
|
|
||||||
\else{%
|
|
||||||
\newline{}%
|
|
||||||
\begin{minipage}[t]{\maincolumnwidth}%
|
|
||||||
\small%
|
|
||||||
#7%
|
|
||||||
\end{minipage}}\fi%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\newbox{\cvitemwithcommentmainbox}
|
|
||||||
\newlength{\cvitemwithcommentmainlength}
|
|
||||||
\newlength{\cvitemwithcommentcommentlength}
|
|
||||||
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
|
|
||||||
\savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}%
|
|
||||||
\setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
|
|
||||||
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
|
|
||||||
\begin{minipage}[t]{\cvitemwithcommentmainlength}\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3\end{minipage}%
|
|
||||||
\hfill% fill of \separatorcolumnwidth
|
|
||||||
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}%
|
|
||||||
\par\addvspace{#1}}
|
|
||||||
|
|
||||||
\renewenvironment{thebibliography}[1]%
|
|
||||||
{%
|
|
||||||
\bibliographyhead{\refname}%
|
|
||||||
% \small%
|
|
||||||
\begin{list}{\bibliographyitemlabel}%
|
|
||||||
{%
|
|
||||||
\setlength{\topsep}{0pt}%
|
|
||||||
\setlength{\labelwidth}{\hintscolumnwidth}%
|
|
||||||
\setlength{\labelsep}{\separatorcolumnwidth}%
|
|
||||||
\leftmargin\labelwidth%
|
|
||||||
\advance\leftmargin\labelsep%
|
|
||||||
\@openbib@code%
|
|
||||||
\usecounter{enumiv}%
|
|
||||||
\let\p@enumiv\@empty%
|
|
||||||
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
|
|
||||||
\sloppy\clubpenalty4000\widowpenalty4000%
|
|
||||||
% \sfcode`\.\@m%
|
|
||||||
% \sfcode `\=1000\relax%
|
|
||||||
}%
|
|
||||||
{%
|
|
||||||
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
|
|
||||||
\end{list}%
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% letter style definition
|
% header, body & footer
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% commands
|
\moderncvhead[\moderncvstyleheadoptions]{4}
|
||||||
%\newlength{\textwidthdelta}%
|
\moderncvbody{4}
|
||||||
\renewcommand*{\recomputeletterlengths}{%
|
% include foot only if nodetails option is active since otherwise we have two times the information
|
||||||
\recomputecvlengths%
|
% on the page
|
||||||
\setlength{\parskip}{6\p@}%
|
\if@datainhead
|
||||||
\leftskip=0pt%
|
% if data is shown in head, do not include the footer
|
||||||
% \setlength{\textwidthdelta}{+\marginparwidth+\marginparsep}%
|
\else
|
||||||
\setlength{\marginparwidth}{\hintscolumnwidth}%
|
\moderncvfoot{1}
|
||||||
\setlength{\marginparsep}{2\separatorcolumnwidth}%
|
\fi
|
||||||
% \addtolength{\textwidthdelta}{-\marginparwidth-\marginparsep}%
|
|
||||||
% \changepage{}{\textwidthdelta}{-\textwidthdelta}{}{}{}{}{}{}%\changepage{<textheight>}{<textwidth>}{<evensidemargin>}{<oddsidemargin>}{<columnsep>}{<topmargin>}{<headheight>}{<headsep>}{<footskip>}
|
|
||||||
\changepage{}{-\marginparwidth-\marginparsep}{}{}{}{}{}{}{}%\changepage{<textheight>}{<textwidth>}{<evensidemargin>}{<oddsidemargin>}{<columnsep>}{<topmargin>}{<headheight>}{<headsep>}{<footskip>}
|
|
||||||
}
|
|
||||||
|
|
||||||
\renewcommand*{\makelettertitle}{%
|
|
||||||
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
|
||||||
\recomputeletterlengths%
|
|
||||||
% recipient block
|
|
||||||
{\addressfont%
|
|
||||||
{\bfseries\upshape\@recipientname}\\%
|
|
||||||
\@recipientaddress}\\[1em]%
|
|
||||||
% date
|
|
||||||
\@date\\[2em]%
|
|
||||||
% opening
|
|
||||||
\@opening\\[1.5em]%
|
|
||||||
% sender contact info
|
|
||||||
\hspace{0pt}%
|
|
||||||
\marginpar{%
|
|
||||||
\addressfont\textcolor{color2}{%
|
|
||||||
{\bfseries\@firstname~\@familyname}\@firstdetailselementfalse%
|
|
||||||
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
|
|
||||||
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}}%
|
|
||||||
\ifthenelse{\isundefined{\@mobile}}{}{\makenewline\mobilesymbol\@mobile}%
|
|
||||||
\ifthenelse{\isundefined{\@phone}}{}{\makenewline\phonesymbol\@phone}%
|
|
||||||
\ifthenelse{\isundefined{\@fax}}{}{\makenewline\faxsymbol\@fax}%
|
|
||||||
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
|
|
||||||
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
|
|
||||||
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}}%
|
|
||||||
% ensure no extra spacing after \makelettertitle due to a possible blank line
|
|
||||||
% \ignorespacesafterend% not working
|
|
||||||
\par\vspace{-\baselineskip}\vspace{-\parskip}}
|
|
||||||
|
|
||||||
\renewcommand*{\makeletterclosing}{
|
|
||||||
\@closing\\[3em]%
|
|
||||||
{\bfseries\@firstname~\@familyname}%
|
|
||||||
\ifthenelse{\isundefined{\@enclosure}}{}{%
|
|
||||||
\\%
|
|
||||||
\vfill%
|
|
||||||
{\color{color2}\itshape\enclname: \@enclosure}}}
|
|
||||||
|
|
||||||
|
|
||||||
\endinput
|
\endinput
|
||||||
|
|
||||||
|
|
|
||||||
80
moderncvverticaltimeline.sty
Normal file
80
moderncvverticaltimeline.sty
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
%% start of file `moderncvverticaltimeline.sty'.
|
||||||
|
%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me), 2024-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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{moderncvverticaltimeline}[2026-01-31 v2.5.1 modern curriculum vitae vertical timeline]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% required packages
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\usetikzlibrary{babel}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% vertical timeline implementation
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\tikzset{
|
||||||
|
tl_milestone/.style={circle,inner sep=1.5pt,draw=color0!20,label={west:#1}},
|
||||||
|
tl_link/.style={thick,densely dotted,color0!20},
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcounter{tl@chainidx}\setcounter{tl@chainidx}{0}
|
||||||
|
\newcounter{tl@nodeidx}\setcounter{tl@nodeidx}{0}
|
||||||
|
|
||||||
|
% Mark the end of the current chain; any `\tl@milestone` issued afterward will be on a new timeline.
|
||||||
|
\def\tl@resetchain{%
|
||||||
|
\stepcounter{tl@chainidx}%
|
||||||
|
\setcounter{tl@nodeidx}{0}%
|
||||||
|
}
|
||||||
|
|
||||||
|
% Create a node in the current timeline and link it to the previous node; if the previous milestone
|
||||||
|
% is on the last shipped out page, draw a line that extends until the top margin. The argument is laid out as a label (default left).
|
||||||
|
\def\tl@milestone#1{%
|
||||||
|
\edef\@tl@prev{tl-\thetl@chainidx-\thetl@nodeidx}%
|
||||||
|
\stepcounter{tl@nodeidx}%
|
||||||
|
\edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}%
|
||||||
|
\tikz[remember picture,overlay] {
|
||||||
|
\node[tl_milestone={#1}] (\@tl@this) {};
|
||||||
|
\ifnum\thetl@nodeidx>1
|
||||||
|
\pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}}
|
||||||
|
\ifnum\pgf@y>0
|
||||||
|
\draw[tl_link] (\@tl@this) -- ([yshift=-1em] \@tl@this |- current page.north);
|
||||||
|
\else
|
||||||
|
\draw[tl_link] (\@tl@this) -- (\@tl@prev);
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\AddToHook{shipout/background}{%
|
||||||
|
% If there are follow-up milestones in the current timeline, draw a line that extends until the bottom margin
|
||||||
|
\edef\@tl@prev{tl-\thetl@chainidx-\number\numexpr\thetl@nodeidx-1}%
|
||||||
|
\edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}%
|
||||||
|
\tikz[remember picture,overlay] {
|
||||||
|
\ifnum\thetl@nodeidx>1
|
||||||
|
\pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}}
|
||||||
|
\ifnum\pgf@y>0
|
||||||
|
\draw[tl_link] (\@tl@prev) -- ([yshift=1em] \@tl@prev |- current page.south);
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\AtEndDocument{\tl@resetchain}
|
||||||
|
|
||||||
|
\let\@old@section=\section%
|
||||||
|
\RenewDocumentCommand{\section}{sm}{\tl@resetchain\@old@section{#1}}
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `moderncvverticaltimeline.sty'.
|
||||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
|
@ -1,5 +1,5 @@
|
||||||
%% start of file `publications.bib'.
|
%% start of file `publications.bib'.
|
||||||
%% Copyright 2006-2012 Xavier Danaux (xdanaux@gmail.com).
|
%% Copyright 2006-2012 Xavier Danaux (xdanaux at gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% This work may be distributed and/or modified under the
|
% This work may be distributed and/or modified under the
|
||||||
% conditions of the LaTeX Project Public License version 1.3c,
|
% conditions of the LaTeX Project Public License version 1.3c,
|
||||||
BIN
signature.png
Normal file
BIN
signature.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
300
template.tex
Normal file
300
template.tex
Normal file
|
|
@ -0,0 +1,300 @@
|
||||||
|
%% start of file `template.tex'.
|
||||||
|
%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
|
%
|
||||||
|
% 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/.
|
||||||
|
|
||||||
|
|
||||||
|
\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
|
||||||
|
|
||||||
|
\moderncvcolor{cerulean} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'; for contemporary style use 'cerulean'
|
||||||
|
% moderncv themes
|
||||||
|
\moderncvstyle[]{contemporary} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle', 'fancy' and 'contemporary'
|
||||||
|
% the 'contemporary' style optionally takes the `qr` (default) or `noqr` options
|
||||||
|
%\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name
|
||||||
|
%\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page
|
||||||
|
|
||||||
|
% adjust the page margins
|
||||||
|
\usepackage[hmargin=0.5in,vmargin=10pt]{geometry} % the 'contemporary' style looks better with reduced margins; uncomment the line below for increased margin
|
||||||
|
%\usepackage[scale=0.75]{geometry}
|
||||||
|
%\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates
|
||||||
|
%\setlength{\makecvheadnamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks...
|
||||||
|
%\setlength{\listitemsymbolspace}{10pt} % set custom spacing between list symbol and text item (influences \cvlistitem and \cvlistdoubleitem)
|
||||||
|
|
||||||
|
% the 'contemporary' style allows to append additional elements to the head background; uncomment and customize if needed
|
||||||
|
%\def\@moderncvheadBackground{
|
||||||
|
%}
|
||||||
|
|
||||||
|
% font loading
|
||||||
|
% for luatex and xetex, do not use inputenc and fontenc
|
||||||
|
% see https://tex.stackexchange.com/a/496643
|
||||||
|
\ifxetexorluatex
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\usepackage{unicode-math}
|
||||||
|
\defaultfontfeatures{Ligatures=TeX}
|
||||||
|
\setmainfont{Latin Modern Roman}
|
||||||
|
\setsansfont{Latin Modern Sans}
|
||||||
|
\setmonofont{Latin Modern Mono}
|
||||||
|
\setmathfont{Latin Modern Math}
|
||||||
|
|
||||||
|
% you may also consider Fira Sans Light for a extra modern look
|
||||||
|
%\setsansfont[ItalicFont={Fira Sans Light Italic},%
|
||||||
|
% BoldFont={Fira Sans},%
|
||||||
|
% BoldItalicFont={Fira Sans Italic}]%
|
||||||
|
% {Fira Sans Light}%
|
||||||
|
\else
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage{lmodern}
|
||||||
|
\fi
|
||||||
|
|
||||||
|
% document language
|
||||||
|
\usepackage[english]{babel} % FIXME: using spanish breaks moderncv
|
||||||
|
|
||||||
|
% personal data
|
||||||
|
\name{John}{Doe}
|
||||||
|
\title{Résumé title} % optional, remove / comment the line if not wanted
|
||||||
|
\born{4 July 1776} % optional, remove / comment the line if not wanted
|
||||||
|
\address{street and number}{postcode city}{country}% optional, remove / comment the line if not wanted; the "postcode city" and "country" arguments can be omitted or provided empty
|
||||||
|
\phone[mobile]{+1~(234)~567~890} % optional, remove / comment the line if not wanted; the optional "type" of the phone can be "mobile" (default), "fixed" or "fax"
|
||||||
|
\phone[fixed]{+2~(345)~678~901}
|
||||||
|
\phone[fax]{+3~(456)~789~012}
|
||||||
|
\email{john@doe.org} % optional, remove / comment the line if not wanted
|
||||||
|
\homepage{www.johndoe.com} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
% Social icons
|
||||||
|
\social[linkedin]{john.doe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[xing]{john\_doe} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
\social[github]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[gitlab]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[codeberg]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[bitbucket]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[stackoverflow]{0000000/johndoe} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
\social[skype]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[orcid]{0000-0000-000-000} % optional, remove / comment the line if not wanted
|
||||||
|
\social[researchgate]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[researcherid]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[googlescholar]{googlescholarid} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
\social[medium]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
\social[twitter]{ji\_doe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[mastodon]{mastodon.social/web/@user} % optional, remove / comment the line if not wanted
|
||||||
|
\social[telegram]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[whatsapp]{12345678901} % optional, remove / comment the line if not wanted
|
||||||
|
\social[signal]{12345678901} % optional, remove / comment the line if not wanted
|
||||||
|
\social[matrix]{@johndoe:matrix.org} % optional, remove / comment the line if not wanted
|
||||||
|
\social[discord]{jdoe\#0000} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
% YouTube links can take several forms, depending on how your account and channel are set up.
|
||||||
|
% See https://support.google.com/youtube/answer/6180214 for more information.
|
||||||
|
\social[youtube]{c/jdoeschannel} % optional, remove / comment the line if not wanted; Custom URL - can be shorted by removing 'c/'
|
||||||
|
\social[youtube]{channel/XXXXXX} % optional, remove / comment the line if not wanted; Channel URL (ID-based) - can not be shortened
|
||||||
|
\social[youtube]{user/jdoe} % optional, remove / comment the line if not wanted; Legacy username URL - if jdoe is not already claimed by a Custom URL, can be shortened by removing 'user/'
|
||||||
|
|
||||||
|
\social[twitch]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[tiktok]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[instagram]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
\social[soundcloud]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
\social[steam]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[xbox]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[playstation]{jdoe} % optional, remove / comment the line if not wanted
|
||||||
|
\social[battlenet]{jdoe\#0000} % optional, remove / comment the line if not wanted
|
||||||
|
\social[arxiv]{doe\_j\_1} % optional, remove / comment the line if not wanted
|
||||||
|
\social[inspire]{0000000} % optional, remove / comment the line if not wanted
|
||||||
|
\social[simplex]{0000000} % optional, remove / comment the line if not wanted
|
||||||
|
\social[threema]{0000000} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
|
||||||
|
\extrainfo{additional information} % optional, remove / comment the line if not wanted
|
||||||
|
\photo[64pt][2pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 2pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file
|
||||||
|
\quote{Some quote} % optional, remove / comment the line if not wanted
|
||||||
|
|
||||||
|
% bibliography adjustments (only useful if you make citations in your resume, or print a list of publications using BibTeX)
|
||||||
|
% to show numerical labels in the bibliography (default is to show no labels)
|
||||||
|
%\makeatletter\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}\makeatother
|
||||||
|
\renewcommand*{\bibliographyitemlabel}{[\arabic{enumiv}]}
|
||||||
|
% to redefine the bibliography heading string ("Publications")
|
||||||
|
%\renewcommand{\refname}{Articles}
|
||||||
|
|
||||||
|
% bibliography with multiple entries
|
||||||
|
%\usepackage{multibib}
|
||||||
|
%\newcites{book,misc}{{Books},{Others}}
|
||||||
|
%----------------------------------------------------------------------------------
|
||||||
|
% content
|
||||||
|
%----------------------------------------------------------------------------------
|
||||||
|
\begin{document}
|
||||||
|
%\begin{CJK*}{UTF8}{gbsn} % to typeset your resume in Chinese using CJK
|
||||||
|
%----- resume ---------------------------------------------------------
|
||||||
|
\makecvtitle
|
||||||
|
|
||||||
|
\section{Education} % for 'contemporary' style use optional argument for displaying an icon, e.g. \section[\faGraduationCap]{Education}
|
||||||
|
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} % arguments 3 to 6 can be left empty
|
||||||
|
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
|
||||||
|
|
||||||
|
\section{Master thesis}
|
||||||
|
\cvitem{title}{\emph{Title}}
|
||||||
|
\cvitem{supervisors}{Supervisors}
|
||||||
|
\cvitem{description}{Short thesis abstract}
|
||||||
|
|
||||||
|
\section{Experience}
|
||||||
|
\subsection{Vocational}
|
||||||
|
\cventry{year--year}{Job title}{Employer}{City}{}{General description no longer than 1--2 lines.\newline{}
|
||||||
|
Detailed achievements:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Achievement 1
|
||||||
|
\item Achievement 2 (with sub-achievements)
|
||||||
|
\begin{itemize}
|
||||||
|
\item Sub-achievement (a);
|
||||||
|
\item Sub-achievement (b), with sub-sub-achievements (don't do this!);
|
||||||
|
\begin{itemize}
|
||||||
|
\item Sub-sub-achievement i;
|
||||||
|
\item Sub-sub-achievement ii;
|
||||||
|
\item Sub-sub-achievement iii;
|
||||||
|
\end{itemize}
|
||||||
|
\item Sub-achievement (c);
|
||||||
|
\end{itemize}
|
||||||
|
\item Achievement 3
|
||||||
|
\item Achievement 4
|
||||||
|
\end{itemize}}
|
||||||
|
\cventry{year--year}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2\newline{}Description line 3}
|
||||||
|
\subsection{Miscellaneous}
|
||||||
|
\cventry{year--year}{Job title}{Employer}{City}{}{Description}
|
||||||
|
|
||||||
|
\section{Languages}
|
||||||
|
\cvitemwithcomment{Language 1}{Skill level}{Comment}
|
||||||
|
\cvitemwithcomment{Language 2}{Skill level}{Comment}
|
||||||
|
\cvitemwithcomment{Language 3}{Skill level}{Comment}
|
||||||
|
\cvitemwithcomment{Language 4}{Skill level}{Comment}
|
||||||
|
|
||||||
|
\section{Computer skills}
|
||||||
|
\cvdoubleitem{category 1}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
|
||||||
|
\cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ}
|
||||||
|
\cvdoubleitem{category 3}{XXX, YYY, ZZZ}{category 6}{XXX, YYY, ZZZ}
|
||||||
|
\cvtripleitem{category 4}{XYZ}{category 5}{XYZ}{category 6}{XYZ}
|
||||||
|
|
||||||
|
\section{Skill matrix}
|
||||||
|
\cvitem{Skill matrix}{Alternatively, provide a skill matrix to show off your skills}
|
||||||
|
%% Skill matrix as an alternative to rate one's skills, computer or other.
|
||||||
|
|
||||||
|
%% Adjusts width of skill matrix columns.
|
||||||
|
%% Usage \setcvskillcolumns[<width>][<factor>][<exp_width>]
|
||||||
|
%% <width>, <exp_width> should be lengths smaller than \textwidth, <factor> needs to be between 0 and 1.
|
||||||
|
%% Examples:
|
||||||
|
% \setcvskillcolumns[5em][][]% adjust first column. Same as \setcvskillcolumns[5em]
|
||||||
|
% \setcvskillcolumns[][0.45][]% adjust third (skill) column. Same as \setcvskillcolumns[][0.45]
|
||||||
|
% \setcvskillcolumns[][][\widthof{``Year''}]% adjust fourth (years) column.
|
||||||
|
% \setcvskillcolumns[][0.45][\widthof{``Year''}]%
|
||||||
|
% \setcvskillcolumns[\widthof{``Languag''}][0.48][]
|
||||||
|
% \setcvskillcolumns[\widthof{``Languag''}]%
|
||||||
|
|
||||||
|
%% Adjusts width of legend columns. Usage \setcvskilllegendcolumns[<width>][<factor>]
|
||||||
|
%% <factor> needs to be between 0 and 1. <width> should be a length smaller than \textwidth
|
||||||
|
%% Examples:
|
||||||
|
% \setcvskilllegendcolumns[][0.45]
|
||||||
|
% \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]
|
||||||
|
% \setcvskilllegendcolumns[0ex][0.46]% this is useful for the banking style
|
||||||
|
|
||||||
|
%% Add a legend if you are using \cvskill{<1-5>} command or \cvskillentry
|
||||||
|
%% Usage \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
|
||||||
|
% \cvskilllegend % insert default legend without lines
|
||||||
|
\cvskilllegend*[1em]{}% adjust post spacing
|
||||||
|
% \cvskilllegend*{Legend}% Alternatively add a description string
|
||||||
|
%% adjust the legend entries for other languages, here German
|
||||||
|
% \cvskilllegend[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte\,/\,Spezialist]{Legende}
|
||||||
|
|
||||||
|
%% Alternative legend style with the first three skill levels in one column
|
||||||
|
%% Usage \cvskillplainlegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
|
||||||
|
% \setcvskilllegendcolumns[][0.6]% works for classic, casual, banking
|
||||||
|
% \setcvskilllegendcolumns[][0.55]% works better for oldstyle and fancy
|
||||||
|
% \cvskillplainlegend{}
|
||||||
|
% \cvskillplainlegend[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende}
|
||||||
|
|
||||||
|
%% Add a head of the skill matrix table with descriptions.
|
||||||
|
%% Usage \cvskillhead[<post_padding>][<Level>][<Skill>][<Years>][<Comment>]%
|
||||||
|
\cvskillhead[-0.1em]% this inserts the standard legend in english and adjust padding
|
||||||
|
%% Adjust head of the skill matrix for other languages
|
||||||
|
% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung]
|
||||||
|
|
||||||
|
%% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
|
||||||
|
%% Example usages:
|
||||||
|
\cvskillentry*{Language:}{3}{Python}{2}{I'm so experienced in Python and have realised a million projects. At least.}
|
||||||
|
\cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man, I'm the best!}
|
||||||
|
\cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
|
||||||
|
\cvskillentry*{OS:}{3}{Linux}{2}{I only use Archlinux btw}% notice the use of the starred command and the optional
|
||||||
|
\cvskillentry*[1em]{Methods}{4}{SCRUM}{8}{SCRUM master for 5 years}
|
||||||
|
%% \cvskill{<0-5>} command
|
||||||
|
% \cvitem{\textbackslash{cvskill}:}{Skills can be visually expressed by the \textbackslash{cvskill} command, e.g. \cvskill{2}}
|
||||||
|
|
||||||
|
\section{Interests}
|
||||||
|
\cvitem{hobby 1}{Description}
|
||||||
|
\cvitem{hobby 2}{Description}
|
||||||
|
\cvitem{hobby 3}{Description}
|
||||||
|
|
||||||
|
\section{Extra 1}
|
||||||
|
\cvlistitem{Item 1}
|
||||||
|
\cvlistitem{Item 2}
|
||||||
|
\cvlistitem{Item 3. This item is particularly long and therefore normally spans over several lines. Did you notice the indentation when the line wraps?}
|
||||||
|
|
||||||
|
\section{Extra 2}
|
||||||
|
\cvlistdoubleitem{Item 1}{Item 4}
|
||||||
|
\cvlistdoubleitem{Item 2}{Item 5\cite{book2}}
|
||||||
|
\cvlistdoubleitem{Item 3}{Item 6. Like item 3 in the single column list before, this item is particularly long to wrap over several lines.}
|
||||||
|
|
||||||
|
\section{References}
|
||||||
|
\begin{cvcolumns}
|
||||||
|
\cvcolumn{Category 1}{\begin{itemize}\item Person 1\item Person 2\item Person 3\end{itemize}}
|
||||||
|
\cvcolumn{Category 2}{Amongst others:\begin{itemize}\item Person 1, and\item Person 2\end{itemize}(more upon request)}
|
||||||
|
\cvcolumn[0.5]{All the rest \& some more}{\textit{That} person, and \textbf{those} also (all available upon request).}
|
||||||
|
\end{cvcolumns}
|
||||||
|
|
||||||
|
% Publications from a BibTeX file without multibib
|
||||||
|
% for numerical labels: \renewcommand{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}% CONSIDER MERGING WITH PREAMBLE PART
|
||||||
|
% to redefine the heading string ("Publications"): \renewcommand{\refname}{Articles}
|
||||||
|
\nocite{*}
|
||||||
|
\bibliographystyle{plain}
|
||||||
|
\bibliography{publications} % 'publications' is the name of a BibTeX file
|
||||||
|
|
||||||
|
% Publications from a BibTeX file using the multibib package
|
||||||
|
%\section{Publications}
|
||||||
|
%\nocitebook{book1,book2}
|
||||||
|
%\bibliographystylebook{plain}
|
||||||
|
%\bibliographybook{publications} % 'publications' is the name of a BibTeX file
|
||||||
|
%\nocitemisc{misc1,misc2,misc3}
|
||||||
|
%\bibliographystylemisc{plain}
|
||||||
|
%\bibliographymisc{publications} % 'publications' is the name of a BibTeX file
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
%----- letter ---------------------------------------------------------
|
||||||
|
% recipient data
|
||||||
|
\recipient{Company Recruitment team}{Company, Inc.\\123 somestreet\\some city}
|
||||||
|
\date{January 01, 1984}
|
||||||
|
\subject{Job application}
|
||||||
|
\opening{Dear Sir or Madam,}
|
||||||
|
\closing{Yours faithfully,}
|
||||||
|
\signature{0.9}{signature.png} % optional, remove / comment the line if not wanted: first argument goes to \includegraphics > scale
|
||||||
|
\enclosure[Attached]{curriculum vit\ae{}} % use an optional argument to use a string other than "Enclosure", or redefine \enclname
|
||||||
|
\makelettertitle
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ullamcorper neque sit amet lectus facilisis sed luctus nisl iaculis. Vivamus at neque arcu, sed tempor quam. Curabitur pharetra tincidunt tincidunt. Morbi volutpat feugiat mauris, quis tempor neque vehicula volutpat. Duis tristique justo vel massa fermentum accumsan. Mauris ante elit, feugiat vestibulum tempor eget, eleifend ac ipsum. Donec scelerisque lobortis ipsum eu vestibulum. Pellentesque vel massa at felis accumsan rhoncus.
|
||||||
|
|
||||||
|
Suspendisse commodo, massa eu congue tincidunt, elit mauris pellentesque orci, cursus tempor odio nisl euismod augue. Aliquam adipiscing nibh ut odio sodales et pulvinar tortor laoreet. Mauris a accumsan ligula. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse vulputate sem vehicula ipsum various nec tempus dui dapibus. Phasellus et est urna, ut auctor erat. Sed tincidunt odio id odio aliquam mattis. Donec sapien nulla, feugiat eget adipiscing sit amet, lacinia ut dolor. Phasellus tincidunt, leo a fringilla consectetur, felis diam aliquam urna, vitae aliquet lectus orci nec velit. Vivamus dapibus various blandit.
|
||||||
|
|
||||||
|
Duis sit amet magna ante, at sodales diam. Aenean consectetur porta risus et sagittis. Ut interdum, enim various pellentesque tincidunt, magna libero sodales tortor, ut fermentum nunc metus a ante. Vivamus odio leo, tincidunt eu luctus ut, sollicitudin sit amet metus. Nunc sed orci lectus. Ut sodales magna sed velit volutpat sit amet pulvinar diam venenatis.
|
||||||
|
|
||||||
|
Albert Einstein discovered that $e=mc^2$ in 1905.
|
||||||
|
|
||||||
|
\[ e=\lim_{n \to \infty} \left(1+\frac{1}{n}\right)^n \]
|
||||||
|
|
||||||
|
\makeletterclosing
|
||||||
|
|
||||||
|
%\clearpage\end{CJK*} % if you are typesetting your resume in Chinese using CJK; the \clearpage is required for fancyhdr to work correctly with CJK, though it kills the page numbering by making \lastpage undefined
|
||||||
|
\end{document}
|
||||||
|
|
||||||
|
|
||||||
|
%% end of file `template.tex'.
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
%% start of file `tweaklist.sty'.
|
%% start of file `tweaklist.sty'.
|
||||||
%% Original by Jakob Schiotz, downloaded from http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty; not found on ctan.
|
%% Original by Jakob Schiotz, downloaded from http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty; not found on ctan.
|
||||||
%% Modified by Xavier Danaux (xdanaux@gmail.com).
|
%% Modified by Xavier Danaux (xdanaux@gmail.com), 2020-2026 moderncv maintainers (github.com/moderncv).
|
||||||
%
|
%
|
||||||
% The tweaklist.sty package redefines the itemize, enumerate and description packages, so that all parameters can be adjusted.
|
% The tweaklist.sty package redefines the itemize, enumerate and description packages, so that all parameters can be adjusted.
|
||||||
% This was done by copying the original definitions, and adding "hook commands" that are executed when entering the environment.
|
% This was done by copying the original definitions, and adding "hook commands" that are executed when entering the environment.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue