Compare commits
13 Commits
v0.14.1-be
...
featlancer
Author | SHA1 | Date | |
---|---|---|---|
bb1cb0888f | |||
bdf1485cbe | |||
04cc09a54c | |||
04842537bd | |||
3cbbc36818 | |||
f06f82a34f | |||
01cfdb00e0 | |||
cdbb030389 | |||
cfef0a43a8 | |||
a9f002e89a | |||
3d2b6318ed | |||
c7db59a5b9 | |||
e2a04958b0 |
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
# It is pitch black. You are likely to be eaten by a grue.
|
# It is pitch black. You are likely to be eaten by a grue.
|
||||||
informatic-new/
|
informatic-new/
|
||||||
|
assets/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fresh-themes",
|
"name": "fresh-themes",
|
||||||
"version": "0.14.1-beta",
|
"version": "0.15.1-beta",
|
||||||
"description": "Multiformat themes and templates for your résumé / CV.",
|
"description": "Multiformat themes and templates for your résumé / CV.",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
<w:rPr>
|
<w:rPr>
|
||||||
<w:rStyle w:val="FromTo"/>
|
<w:rStyle w:val="FromTo"/>
|
||||||
</w:rPr>
|
</w:rPr>
|
||||||
<w:t>{{formatDate safe.start 'YYYY' }} — {{formatDate safe.end 'YYYY'}}</w:t>
|
<w:t>{{dateRange . 'YYYY'}}</w:t>
|
||||||
</w:r>
|
</w:r>
|
||||||
</w:p>
|
</w:p>
|
||||||
{{#either area studyType }}
|
{{#either area studyType }}
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
<w:rPr>
|
<w:rPr>
|
||||||
<w:rStyle w:val="FromTo"/>
|
<w:rStyle w:val="FromTo"/>
|
||||||
</w:rPr>
|
</w:rPr>
|
||||||
<w:t>{{formatDate safe.date 'YYYY-MM'}}</w:t>
|
<w:t>{{date date}}</w:t>
|
||||||
</w:r>
|
</w:r>
|
||||||
</w:p>
|
</w:p>
|
||||||
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="000A3AF0" wsp:rsidRDefault="00C146CA" wsp:rsidP="00C146CA">
|
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="000A3AF0" wsp:rsidRDefault="00C146CA" wsp:rsidP="00C146CA">
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
<w:rPr>
|
<w:rPr>
|
||||||
<w:rStyle w:val="FromTo"/>
|
<w:rStyle w:val="FromTo"/>
|
||||||
</w:rPr>
|
</w:rPr>
|
||||||
<w:t>{{formatDate safe.start 'MMM YYYY'}} — {{formatDate safe.end 'MMM YYYY'}}</w:t>
|
<w:t>{{dateRange . 'MMM YYYY'}}</w:t>
|
||||||
</w:r>
|
</w:r>
|
||||||
</w:p>
|
</w:p>
|
||||||
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="000A3AF0" wsp:rsidRDefault="00C146CA" wsp:rsidP="00C146CA">
|
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="000A3AF0" wsp:rsidRDefault="00C146CA" wsp:rsidP="00C146CA">
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
<w:rPr>
|
<w:rPr>
|
||||||
<w:rStyle w:val="FromTo"/>
|
<w:rStyle w:val="FromTo"/>
|
||||||
</w:rPr>
|
</w:rPr>
|
||||||
<w:t>{{formatDate safe.date 'YYYY-MM'}}</w:t>
|
<w:t>{{date date}}</w:t>
|
||||||
</w:r>
|
</w:r>
|
||||||
</w:p>
|
</w:p>
|
||||||
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="000A3AF0" wsp:rsidRDefault="00C146CA" wsp:rsidP="00C146CA">
|
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="000A3AF0" wsp:rsidRDefault="00C146CA" wsp:rsidP="00C146CA">
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<w:rPr>
|
<w:rPr>
|
||||||
<w:rStyle w:val="FromTo"/>
|
<w:rStyle w:val="FromTo"/>
|
||||||
</w:rPr>
|
</w:rPr>
|
||||||
<w:t>{{formatDate safe.date 'YYYY'}}</w:t>
|
<w:t>{{date date 'YYYY'}}</w:t>
|
||||||
</w:r>
|
</w:r>
|
||||||
</w:p>
|
</w:p>
|
||||||
{{#if summary}}
|
{{#if summary}}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
{{#> body-interests }}
|
{{#> body-interests }}
|
||||||
<div>
|
<div>
|
||||||
<h3><em>{{{ name }}}</em></h3>
|
<h3><em>{{{ name }}}</em></h3>
|
||||||
<span class="tenure">{{formatDate safe.date 'YYYY' }}</span>
|
<span class="tenure">{{date date 'YYYY' }}</span>
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
{{> highlights }}
|
{{> highlights }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
{{#> body-reading }}
|
{{#> body-reading }}
|
||||||
<div>
|
<div>
|
||||||
<h3><em>{{#if url}}<a href="{{{ url }}}">{{{ title }}}</a>{{else}}{{{ title }}}{{/if}}</em>{{#if author}}, {{{ author }}}{{/if}}</h3>
|
<h3><em>{{#if url}}<a href="{{{ url }}}">{{{ title }}}</a>{{else}}{{{ title }}}{{/if}}</em>{{#if author}}, {{{ author }}}{{/if}}</h3>
|
||||||
<span class="tenure">{{formatDate safe.date 'YYYY'}}</span>
|
<span class="tenure">{{date date 'YYYY'}}</span>
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
</div>
|
</div>
|
||||||
{{/body-reading}}
|
{{/body-reading}}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
{{#> body-recognition }}
|
{{#> body-recognition }}
|
||||||
<div>
|
<div>
|
||||||
<h3><em>{{ title }}</em>, {{{link from url }}}</h3>
|
<h3><em>{{ title }}</em>, {{{link from url }}}</h3>
|
||||||
<span class="tenure">{{formatDate safe.date 'YYYY' }}</span>
|
<span class="tenure">{{date date 'YYYY' }}</span>
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
{{> highlights }}
|
{{> highlights }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
{{ title }}
|
{{ title }}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</h3>
|
</h3>
|
||||||
<span class="tenure">{{formatDate safe.date 'YYYY-MM'}}</span>
|
<span class="tenure">{{date date 'YYYY-MM'}}</span>
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
{{> highlights }}
|
{{> highlights }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
{{#> body-speaking }}
|
{{#> body-speaking }}
|
||||||
<div>
|
<div>
|
||||||
<h3><em>{{{ title }}}</em>, {{{ event }}}</h3>
|
<h3><em>{{{ title }}}</em>, {{{ event }}}</h3>
|
||||||
<span class="tenure">{{formatDate safe.date 'YYYY' }}</span>
|
<span class="tenure">{{date date 'YYYY' }}</span>
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
{{> highlights }}
|
{{> highlights }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<h3><em>{{#if url}}<a href="{{{ url }}}">{{{ title }}}</a>{{else}}{{{ title }}}{{/if}}</em>,
|
<h3><em>{{#if url}}<a href="{{{ url }}}">{{{ title }}}</a>{{else}}{{{ title }}}{{/if}}</em>,
|
||||||
{{ publisher.name }}</h3>
|
{{ publisher.name }}</h3>
|
||||||
<span class="tenure">{{formatDate safe.date 'YYYY'}}</span>
|
<span class="tenure">{{date date 'YYYY'}}</span>
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
{{> highlights }}
|
{{> highlights }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
{{#each r.employment.history }}
|
{{#each r.employment.history }}
|
||||||
{{#if url}}
|
{{#if url}}
|
||||||
### *{{{ position }}}*, [{{{ employer }}}]({{{ url }}}) ({{formatDate safe.start 'YYYY-MM' }} — {{formatDate safe.end 'YYYY-MM' }})
|
### *{{{ position }}}*, [{{{ employer }}}]({{{ url }}}) ({{dateRange .}})
|
||||||
{{else}}
|
{{else}}
|
||||||
### *{{{ position }}}*, {{{ employer }}} ({{formatDate safe.start 'YYYY-MM' }} — {{formatDate safe.end 'YYYY-MM' }})
|
### *{{{ position }}}*, {{{ employer }}} ({{dateRange .}})
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
{{#each r.projects }}
|
{{#each r.projects }}
|
||||||
{{#if url }}
|
{{#if url }}
|
||||||
### *{{{camelCase role }}}*, [{{{ title }}}]({{{ url }}}) ({{formatDate safe.start 'YYYY-MM' }} — {{formatDate safe.end 'YYYY-MM' }})
|
### *{{{camelCase role }}}*, [{{{ title }}}]({{{ url }}}) ({{dateRange .}})
|
||||||
{{else}}
|
{{else}}
|
||||||
### *{{{camelCase role }}}*, {{{ title }}} ({{formatDate safe.start 'YYYY-MM' }} — {{formatDate safe.end 'YYYY-MM' }})
|
### *{{{camelCase role }}}*, {{{ title }}} ({{dateRange .}})
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{{ description }}}
|
{{{ description }}}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
{{#each r.recognition}}
|
{{#each r.recognition}}
|
||||||
### {{{ title }}}{{#if from}}, {{{ from }}}{{/if}}
|
### {{{ title }}}{{#if from}}, {{{ from }}}{{/if}}
|
||||||
{{~#has 'safe.date'}} ({{formatDate safe.date 'MMM YYYY' }}){{/has}}
|
{{~#if date}} ({{date date 'MMM YYYY' }}){{/if}}
|
||||||
{{~#if summary}}
|
{{~#if summary}}
|
||||||
|
|
||||||
{{{ summary }}}{{/if}}
|
{{{ summary }}}{{/if}}
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
{{#each r.samples }}
|
{{#each r.samples }}
|
||||||
{{#if url}}
|
{{#if url}}
|
||||||
### [{{{ title }}}]({{{ url }}}) ({{formatDate safe.date 'YYYY-MM' }})
|
### [{{{ title }}}]({{{ url }}}) ({{date date}})
|
||||||
{{else}}
|
{{else}}
|
||||||
### {{{ title }}} ({{formatDate safe.date}})
|
### {{{ title }}} ({{date date}})
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
## {{{sectionTitle "SPEAKING"}}}
|
## {{{sectionTitle "SPEAKING"}}}
|
||||||
|
|
||||||
{{#each r.speaking}}
|
{{#each r.speaking}}
|
||||||
### *{{{ title }}}*, {{{ event }}} ({{formatDate safe.date 'YYYY'}})
|
### *{{{ title }}}*, {{{ event }}} ({{date date 'YYYY'}})
|
||||||
|
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
{{#if highlights}}
|
{{#if highlights}}
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
{{#each r.writing}}
|
{{#each r.writing}}
|
||||||
{{#if url}}
|
{{#if url}}
|
||||||
### [{{{ title }}}]({{{ url }}}) ({{formatDate safe.date 'YYYY-MM' }})
|
### [{{{ title }}}]({{{ url }}}) ({{date date}})
|
||||||
{{else}}
|
{{else}}
|
||||||
### {{{ title }}} ({{formatDate safe.date 'YYYY-MM' }})
|
### {{{ title }}} ({{date date}})
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if summary }}{{{ summary }}}
|
{{#if summary }}{{{ summary }}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if date}}{{{ date }}}
|
{{#if date}}{{{date date }}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
{{#each r.recognition}}
|
{{#each r.recognition}}
|
||||||
{{{ title }}}{{#if from}}, {{{ from }}}{{/if}}
|
{{{ title }}}{{#if from}}, {{{ from }}}{{/if}}
|
||||||
{{~#has 'safe.date'}} ({{formatDate safe.date 'MMM YYYY' }}){{/has}}
|
{{~#if date}} ({{date date 'MMM YYYY' }}){{/if}}
|
||||||
{{~#if summary}}
|
{{~#if summary}}
|
||||||
|
|
||||||
{{{ summary }}}{{/if}}
|
{{{ summary }}}{{/if}}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{{{sectionTitle "SAMPLES"}}} ------------------------------------------------------------------------
|
{{{sectionTitle "SAMPLES"}}} ------------------------------------------------------------------------
|
||||||
|
|
||||||
{{#each r.samples }}
|
{{#each r.samples }}
|
||||||
{{{ title }}} ({{formatDate safe.date 'YYYY-MM'}})
|
{{{ title }}} ({{date date}})
|
||||||
|
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
{{#if highlights}}
|
{{#if highlights}}
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
{{{sectionTitle "SKILLS"}}} -------------------------------------------------------------------------
|
{{{sectionTitle "SKILLS"}}} -------------------------------------------------------------------------
|
||||||
|
|
||||||
{{#each r.skills.sets}}
|
{{#each r.skills.sets}}
|
||||||
- {{{ name }}}: {{#each skills}}{{{ this }}} {{/each}}
|
- {{{ name }}}: {{#each skills}}{{{ . }}} {{/each}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{/section}}
|
{{/section}}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
## {{{sectionTitle "SPEAKING"}}} ------------------------------------------------------------------------
|
## {{{sectionTitle "SPEAKING"}}} ------------------------------------------------------------------------
|
||||||
|
|
||||||
{{#each r.speaking}}
|
{{#each r.speaking}}
|
||||||
*{{{ title }}}*, {{{ event }}} ({{formatDate safe.date 'YYYY'}})
|
*{{{ title }}}*, {{{ event }}} ({{date date 'YYYY'}})
|
||||||
|
|
||||||
{{{ summary }}}
|
{{{ summary }}}
|
||||||
{{#if highlights}}
|
{{#if highlights}}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{{{sectionTitle "WRITING"}}} ------------------------------------------------------------------------
|
{{{sectionTitle "WRITING"}}} ------------------------------------------------------------------------
|
||||||
|
|
||||||
{{#each r.writing}}
|
{{#each r.writing}}
|
||||||
{{{ title }}}{{#has 'safe.date'}} ({{formatDate safe.date 'YYYY-MM' }}){{/has}}
|
{{{ title }}}{{#if date}} ({{date date}}){{/if}}
|
||||||
{{#if summary}}{{{ summary }}}
|
{{#if summary}}{{{ summary }}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
@ -7,3 +7,4 @@ FRESH resume themes live here, one per folder.
|
|||||||
- [`compact`](compact): A compact theme.
|
- [`compact`](compact): A compact theme.
|
||||||
- [`positive`](positive): A theme that partakes of that which is positive.
|
- [`positive`](positive): A theme that partakes of that which is positive.
|
||||||
- [`awesome`][awesome]: A LaTeX theme based on Awesome-CV.
|
- [`awesome`][awesome]: A LaTeX theme based on Awesome-CV.
|
||||||
|
- [`modern-lancer`](modern-lancer): A theme based on modern with some tweaks for freelancers.
|
||||||
|
20
themes/awesome/src/latex/.gitignore
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
### TeX ###
|
||||||
|
## Core latex/pdflatex auxiliary files:
|
||||||
|
*.aux
|
||||||
|
*.lof
|
||||||
|
*.log
|
||||||
|
*.lot
|
||||||
|
*.fls
|
||||||
|
*.out
|
||||||
|
*.toc
|
||||||
|
|
||||||
|
## Intermediate documents:
|
||||||
|
*.dvi
|
||||||
|
*-converted-to.*
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
|
### Editor ###
|
||||||
|
## Vim & Emacs temp files:
|
||||||
|
.*sw[op]
|
||||||
|
*~
|
||||||
|
|
3
themes/awesome/src/latex/Makefile
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
test:
|
||||||
|
cd examples/ ; for f in *.tex; do xelatex $$f; done
|
59
themes/awesome/src/latex/README.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# Awesome CV
|
||||||
|
*A template-friendly fork of Byungjin Park's [Awesome-CV][awe] resume template.*
|
||||||
|
|
||||||
|
This fork replaces each occurrence of hard-coded resume data in the original
|
||||||
|
Awesome-CV project with an expandable template tag, allowing you to generate a
|
||||||
|
personalized copy of Awesome-CV without hand-editing the `.tex` files.
|
||||||
|
|
||||||
|
Otherwise, it's identical to the original.
|
||||||
|
|
||||||
|
## Use
|
||||||
|
|
||||||
|
When expanded with [Underscore.js][und] and a [FRESH resume][fre] object (JSON),
|
||||||
|
this project yields an Awesome-CV template, in LaTeX, but with your resume data.
|
||||||
|
You can then use a tool like `xelatex` or similar to generate the final PDF.
|
||||||
|
|
||||||
|
**Step 1**: Use a FRESH-aware template expansion tool like [HackMyResume][hmr]
|
||||||
|
to generate the personalized LaTeX:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hackmyresume build resume.json -t awesome
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2**: Use conventional LaTeX tools to generate a PDF or other destination
|
||||||
|
format from the (personalized) Awesome-CV LaTeX files:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
xelatex examples/resume.tex
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 3**: When you need to update your resume, update the source JSON, and
|
||||||
|
re-generate destination formats as needed.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- This project is intermittently synced with the upstream master to get the
|
||||||
|
benefit of any new changes or tweaks.
|
||||||
|
|
||||||
|
- The template tags are based on the Underscore.js template syntax but with a
|
||||||
|
modified set of template delimiters that reduce conflicts with LaTeX
|
||||||
|
metacharacters such as `{` or `%`.
|
||||||
|
|
||||||
|
- Underscore.js was chosen because its minimalistic template engine supports
|
||||||
|
custom delimiters (Handlebars [doesn't][hb350], except [unofficially][un]) and
|
||||||
|
allows execution of arbitrary JavaScript in the template.
|
||||||
|
|
||||||
|
- This project indirectly drives the `awesome` theme in HackMyResume and
|
||||||
|
FluentCV. Technically the latter is a fork of this project, which itself is a
|
||||||
|
fork of the original Awesome-CV for LaTeX.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
See the original project for license information.
|
||||||
|
|
||||||
|
[awe]: https://github.com/posquit0/Awesome-CV
|
||||||
|
[hmr]: http://please.hackmyresume.com
|
||||||
|
[fre]: http://freshstandard.org
|
||||||
|
[und]: http://underscorejs.org/#template
|
||||||
|
[hb350]: https://github.com/wycats/handlebars.js/issues/350
|
||||||
|
[un]: https://github.com/jonschlinkert/handlebars-delimiters
|
@ -1,12 +1,27 @@
|
|||||||
%% Start of file `awesome-cv.cls'.
|
%% Start of file `awesome-cv.cls'.
|
||||||
%% Copyright 2015 Claud D. Park <posquit0.bj@gmail.com>
|
% Awesome CV Class File
|
||||||
|
%
|
||||||
|
% This class has been downloaded from:
|
||||||
|
% https://github.com/posquit0/Awesome-CV
|
||||||
|
%
|
||||||
|
% Author:
|
||||||
|
% Claud D. Park <posquit0.bj@gmail.com>
|
||||||
|
% http://www.posquit0.com
|
||||||
|
%
|
||||||
|
% Notes:
|
||||||
|
% 1) This class file defines the structure and layout of the template file (cv.tex, resume.tex).
|
||||||
|
% 2) It has been written in such a way that under most circumstances you
|
||||||
|
% should not need to edit it.
|
||||||
|
%
|
||||||
|
% Class license:
|
||||||
|
% LPPL v1.3c (http://www.latex-project.org/lppl)
|
||||||
%
|
%
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Identification
|
% Identification
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\ProvidesClass{awesome-cv}[2015/11/19 v1.1.0 Awesome Curriculum Vitae Class]
|
\ProvidesClass{awesome-cv}[2016/01/30 v1.5 Awesome Curriculum Vitae Class]
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
|
|
||||||
|
|
||||||
@ -21,7 +36,7 @@
|
|||||||
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
|
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
|
||||||
\DeclareOption{final}{\setlength\overfullrule{0pt}}
|
\DeclareOption{final}{\setlength\overfullrule{0pt}}
|
||||||
% Inherit options of article
|
% Inherit options of article
|
||||||
\DeclareOption*{
|
\DeclareOption*{%
|
||||||
\PassOptionsToClass{\CurrentOption}{article}
|
\PassOptionsToClass{\CurrentOption}{article}
|
||||||
}
|
}
|
||||||
\ProcessOptions\relax
|
\ProcessOptions\relax
|
||||||
@ -49,32 +64,26 @@
|
|||||||
\RequirePackage{xifthen}
|
\RequirePackage{xifthen}
|
||||||
% Needed to use a toolbox of programming tools
|
% Needed to use a toolbox of programming tools
|
||||||
\RequirePackage{etoolbox}
|
\RequirePackage{etoolbox}
|
||||||
|
% Needed to change line spacing in specific environment
|
||||||
|
\RequirePackage{setspace}
|
||||||
% Needed to manage fonts
|
% Needed to manage fonts
|
||||||
\ifxetex
|
\RequirePackage[quiet]{fontspec}
|
||||||
\RequirePackage[quiet]{fontspec}
|
% To support LaTeX quoting style
|
||||||
% To support LaTeX quoting style
|
\defaultfontfeatures{Ligatures=TeX}
|
||||||
\defaultfontfeatures{Ligatures=TeX}
|
|
||||||
\else
|
|
||||||
\RequirePackage[T1]{fontenc}
|
|
||||||
% Replace by the encoding you are using
|
|
||||||
\RequirePackage[utf8]{inputenc}
|
|
||||||
\fi
|
|
||||||
% Needed to manage math fonts
|
% Needed to manage math fonts
|
||||||
\RequirePackage[math-style=TeX,vargreek-shape=unicode]{unicode-math}
|
\RequirePackage[math-style=TeX,vargreek-shape=unicode]{unicode-math}
|
||||||
% Needed to use icons from font-awesome
|
% Needed to use icons from font-awesome
|
||||||
% (https://github.com/furl/latex-fontawesome)
|
% (https://github.com/posquit0/latex-fontawesome)
|
||||||
\RequirePackage{fontawesome}
|
\RequirePackage{fontawesome}
|
||||||
% Needed to deal a paragraphs
|
% Needed to deal a paragraphs
|
||||||
\RequirePackage{parskip}
|
\RequirePackage{parskip}
|
||||||
% Needed to deal hyperlink
|
% Needed to deal hyperlink
|
||||||
\RequirePackage{hyperref}
|
\RequirePackage[hidelinks]{hyperref}
|
||||||
\hypersetup{
|
\hypersetup{%
|
||||||
pdftitle={},
|
pdftitle={},
|
||||||
pdfauthor={},
|
pdfauthor={},
|
||||||
pdfsubject={},
|
pdfsubject={},
|
||||||
pdfkeywords={},
|
pdfkeywords={}
|
||||||
colorlinks=false,
|
|
||||||
allbordercolors=white
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -94,7 +103,7 @@
|
|||||||
\geometry{left=2.0cm, top=1.5cm, right=2.0cm, bottom=2.0cm, footskip=.5cm}
|
\geometry{left=2.0cm, top=1.5cm, right=2.0cm, bottom=2.0cm, footskip=.5cm}
|
||||||
|
|
||||||
%% Header & Footer
|
%% Header & Footer
|
||||||
% Set offset to each header and offset
|
% Set offset to each header and footer
|
||||||
\fancyhfoffset{0em}
|
\fancyhfoffset{0em}
|
||||||
% Remove head rule
|
% Remove head rule
|
||||||
\renewcommand{\headrulewidth}{0pt}
|
\renewcommand{\headrulewidth}{0pt}
|
||||||
@ -135,21 +144,13 @@
|
|||||||
\definecolor{awesome-darknight}{HTML}{131A28}
|
\definecolor{awesome-darknight}{HTML}{131A28}
|
||||||
\colorlet{awesome}{awesome-red}
|
\colorlet{awesome}{awesome-red}
|
||||||
|
|
||||||
|
% Boolean value to switch section color highlighting
|
||||||
|
\newbool{acvSectionColorHighlight}
|
||||||
|
\setbool{acvSectionColorHighlight}{true}
|
||||||
|
|
||||||
% Awesome section color
|
% Awesome section color
|
||||||
\newcounter{colorCounter}
|
|
||||||
\def\@sectioncolor#1#2#3{%
|
\def\@sectioncolor#1#2#3{%
|
||||||
{%
|
\ifbool{acvSectionColorHighlight}{{\color{awesome}#1#2#3}}{#1#2#3}%
|
||||||
\color{%
|
|
||||||
\ifcase\value{colorCounter}%
|
|
||||||
awesome\or%
|
|
||||||
awesome\or%
|
|
||||||
awesome\or%
|
|
||||||
awesome\or%
|
|
||||||
awesome\else%
|
|
||||||
awesome\fi%
|
|
||||||
} #1#2#3%
|
|
||||||
}%
|
|
||||||
\stepcounter{colorCounter}%
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -198,6 +199,15 @@
|
|||||||
BoldItalicFont=*-SemiboldIt
|
BoldItalicFont=*-SemiboldIt
|
||||||
]{SourceSansPro}
|
]{SourceSansPro}
|
||||||
|
|
||||||
|
% Set main font
|
||||||
|
\setmainfont[
|
||||||
|
Path=\@fontdir,
|
||||||
|
UprightFont=*-Regular,
|
||||||
|
ItalicFont=*-It,
|
||||||
|
BoldFont=*-Bold,
|
||||||
|
BoldItalicFont=*-BoldIt
|
||||||
|
]{SourceSansPro}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Configuration for styles
|
% Configuration for styles
|
||||||
@ -213,6 +223,7 @@
|
|||||||
\newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}}
|
\newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}}
|
||||||
\newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
|
\newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
|
||||||
\newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}}
|
\newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}}
|
||||||
|
\newcommand*{\paragraphstyle}{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{graytext}}
|
||||||
|
|
||||||
% For elements of entry
|
% For elements of entry
|
||||||
\newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
|
\newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
|
||||||
@ -238,6 +249,16 @@
|
|||||||
\newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
|
\newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
|
||||||
\newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}}
|
\newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}}
|
||||||
|
|
||||||
|
% For elements of the cover letter
|
||||||
|
\newcommand*{\lettersectionstyle}[1]{{\fontsize{14pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
|
||||||
|
\newcommand*{\recipientaddressstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\scshape\color{graytext} #1}}
|
||||||
|
\newcommand*{\recipienttitlestyle}[1]{{\fontsize{11pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
|
||||||
|
\newcommand*{\lettertitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\bfseries\color{darktext} \underline{#1}}}
|
||||||
|
\newcommand*{\letterdatestyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
|
||||||
|
\newcommand*{\lettertextstyle}{\fontsize{10pt}{1.4em}\bodyfontlight\upshape\color{graytext}}
|
||||||
|
\newcommand*{\letternamestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
|
||||||
|
\newcommand*{\letterenclosurestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\slshape\color{lighttext} #1}}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Commands for personal information
|
% Commands for personal information
|
||||||
@ -277,31 +298,87 @@
|
|||||||
% Usage: \github{<github-nick>}
|
% Usage: \github{<github-nick>}
|
||||||
\newcommand*{\github}[1]{\def\@github{#1}}
|
\newcommand*{\github}[1]{\def\@github{#1}}
|
||||||
|
|
||||||
|
% Defines writer's stackoverflow profile (optional)
|
||||||
|
% Usage: \stackoverflow{<so userid>}{<so username>}
|
||||||
|
% e.g.https://stackoverflow.com/users/123456/sam-smith
|
||||||
|
% would be \stackoverflow{123456}{sam-smith}
|
||||||
|
\newcommand*{\stackoverflow}[2]{\def\@stackoverflowid{#1}\def\@stackoverflowname{#2}}
|
||||||
|
|
||||||
% Defines writer's linked-in (optional)
|
% Defines writer's linked-in (optional)
|
||||||
% Usage: \linkedin{<linked-in-nick>}
|
% Usage: \linkedin{<linked-in-nick>}
|
||||||
\newcommand*{\linkedin}[1]{\def\@linkedin{#1}}
|
\newcommand*{\linkedin}[1]{\def\@linkedin{#1}}
|
||||||
|
|
||||||
% Defines writer's skype (optional)
|
|
||||||
% Usage: \skype{<skype account>}
|
|
||||||
\newcommand*{\skype}[1]{\def\@skype{#1}}
|
|
||||||
|
|
||||||
% Defines writer's twitter (optional)
|
% Defines writer's twitter (optional)
|
||||||
% Usage: \twitter{<twitter handle>}
|
% Usage: \twitter{<twitter handle>}
|
||||||
\newcommand*{\twitter}[1]{\def\@twitter{#1}}
|
\newcommand*{\twitter}[1]{\def\@twitter{#1}}
|
||||||
|
|
||||||
|
% Defines writer's skype (optional)
|
||||||
|
% Usage: \skype{<skype account>}
|
||||||
|
\newcommand*{\skype}[1]{\def\@skype{#1}}
|
||||||
|
|
||||||
|
% Defines writer's reddit (optional)
|
||||||
|
% Usage: \reddit{<reddit account>}
|
||||||
|
\newcommand*{\reddit}[1]{\def\@reddit{#1}}
|
||||||
|
|
||||||
|
% Defines writer's extra informations (optional)
|
||||||
|
% Usage: \extrainfo{<extra informations>}
|
||||||
|
\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
|
||||||
|
|
||||||
% Defines writer's quote (optional)
|
% Defines writer's quote (optional)
|
||||||
% Usage: \quote{<quote>}
|
% Usage: \quote{<quote>}
|
||||||
\renewcommand*{\quote}[1]{\def\@quote{#1}}
|
\renewcommand*{\quote}[1]{\def\@quote{#1}}
|
||||||
|
|
||||||
|
% Defines recipient's information (cover letter only)
|
||||||
|
% Usage: \recipient{<recipient name>}{<recipient address>}
|
||||||
|
% Usage: \recipientname{<recipient name>}
|
||||||
|
% Usage: \recipientaddress{<recipient address>}
|
||||||
|
\newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
|
||||||
|
\newcommand*{\recipientname}[1]{\def\@recipientname{#1}}
|
||||||
|
\newcommand*{\recipientaddress}[1]{\def\@recipientaddress{#1}}
|
||||||
|
|
||||||
|
% Defines the title for letter (cover letter only, optional)
|
||||||
|
% Usage: \lettertitle{<title>}
|
||||||
|
\newcommand*{\lettertitle}[1]{\def\@lettertitle{#1}}
|
||||||
|
|
||||||
|
% Defines the date for letter (cover letter only)
|
||||||
|
% Usage: \letterdate{<date>}
|
||||||
|
\newcommand*{\letterdate}[1]{\def\@letterdate{#1}}
|
||||||
|
|
||||||
|
% Defines a message of opening for letter (cover letter only)
|
||||||
|
% Usage: \letteropening{<message>}
|
||||||
|
\newcommand*{\letteropening}[1]{\def\@letteropening{#1}}
|
||||||
|
|
||||||
|
% Defines a message of closing for letter (cover letter only)
|
||||||
|
% Usage: \letterclosing{<message>}
|
||||||
|
\newcommand*{\letterclosing}[1]{\def\@letterclosing{#1}}
|
||||||
|
|
||||||
|
% Defines an enclosure for letter (cover letter only, optional)
|
||||||
|
% Usage: \letterenclosure[<enclosure name>]{<enclosure>}
|
||||||
|
\newcommand*{\letterenclname}[1][Enclosure]{\def\@letterenclname{#1}}
|
||||||
|
\newcommand*{\letterenclosure}[2][]{%
|
||||||
|
% if an optional argument is provided, use it to redefine \enclname
|
||||||
|
\ifthenelse{\equal{#1}{}}{}{\def\@letterenclname{#1}}
|
||||||
|
\def\@letterenclosure{#2}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Commands for extra
|
% Commands for extra
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Define separator for social informations in header
|
%% Define helper macros a user can change easily
|
||||||
% Usage: \headersocialsep{<separator>}
|
% Header
|
||||||
% Default: \quad\textbar\quad
|
\newcommand{\acvHeaderNameDelim}{\space}
|
||||||
\newcommand*{\headersocialsep}[1][\quad\textbar\quad]{\def\@headersocialsep{#1}}
|
\newcommand{\acvHeaderAfterNameSkip}{.4mm}
|
||||||
\headersocialsep
|
\newcommand{\acvHeaderAfterPositionSkip}{.4mm}
|
||||||
|
\newcommand{\acvHeaderAfterAddressSkip}{-.5mm}
|
||||||
|
\newcommand{\acvHeaderIconSep}{\space}
|
||||||
|
\newcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
|
||||||
|
\newcommand{\acvHeaderAfterSocialSkip}{6mm}
|
||||||
|
\newcommand{\acvHeaderAfterQuoteSkip}{5mm}
|
||||||
|
|
||||||
|
% Others
|
||||||
|
\newcommand{\acvSectionTopSkip}{3mm}
|
||||||
|
\newcommand{\acvEntryTopSkip}{2.5mm}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
@ -312,7 +389,7 @@
|
|||||||
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
|
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
|
||||||
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
|
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
|
||||||
|
|
||||||
% Use to draw horizontal line with specific tickness
|
% Use to draw horizontal line with specific thickness
|
||||||
\def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@}
|
\def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@}
|
||||||
|
|
||||||
% Use to execute conditional statements by checking empty string
|
% Use to execute conditional statements by checking empty string
|
||||||
@ -324,159 +401,150 @@
|
|||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Define a header for CV
|
% Define a header for CV
|
||||||
% Usage: \makecvheader
|
% Usage: \makecvheader
|
||||||
\newcommand*{\makecvheader}{
|
\newcommand*{\makecvheader}{%
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\headerfirstnamestyle{
|
\headerfirstnamestyle{\@firstname}\headerlastnamestyle{{}\acvHeaderNameDelim\@lastname}%
|
||||||
\@firstname
|
\\[\acvHeaderAfterNameSkip]%
|
||||||
}\headerlastnamestyle{
|
\ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\[\acvHeaderAfterPositionSkip]}}%
|
||||||
\@lastname
|
\ifthenelse{\isundefined{\@address}}{}{\headeraddressstyle{\@address\\[\acvHeaderAfterAddressSkip]}}%
|
||||||
}
|
\headersocialstyle{%
|
||||||
\\
|
\newbool{isstart}%
|
||||||
\vspace{0.4mm}
|
\setbool{isstart}{true}%
|
||||||
\ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\}}
|
\ifthenelse{\isundefined{\@mobile}}%
|
||||||
\vspace{0.4mm}
|
{}%
|
||||||
\ifthenelse{\isundefined{\@address}}{}{\headeraddressstyle{\@address\\}}
|
{%
|
||||||
\vspace{-0.5mm}
|
\faMobile\acvHeaderIconSep\@mobile%
|
||||||
\headersocialstyle{
|
\setbool{isstart}{false}%
|
||||||
\newbool{isstart}
|
}%
|
||||||
\setbool{isstart}{true}
|
\ifthenelse{\isundefined{\@email}}%
|
||||||
\ifthenelse{\isundefined{\@mobile}}
|
{}%
|
||||||
{}
|
{%
|
||||||
{
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
\faMobile\ \@mobile
|
\href{mailto:\@email}{\faEnvelope\acvHeaderIconSep\@email}%
|
||||||
\setbool{isstart}{false}
|
}%
|
||||||
}
|
\ifthenelse{\isundefined{\@homepage}}%
|
||||||
\ifthenelse{\isundefined{\@email}}
|
{}%
|
||||||
{}
|
{%
|
||||||
{
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
\ifbool{isstart}
|
\href{http://\@homepage}{\faHome\acvHeaderIconSep\@homepage}%
|
||||||
{
|
}%
|
||||||
\setbool{istart}{false}
|
\ifthenelse{\isundefined{\@github}}%
|
||||||
}
|
{}%
|
||||||
{\@headersocialsep}
|
{%
|
||||||
\href{mailto:\@email}{\faEnvelope\ \@email}
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
}
|
\href{https://github.com/\@github}{\faGithubSquare\acvHeaderIconSep\@github}%
|
||||||
\ifthenelse{\isundefined{\@homepage}}
|
}%
|
||||||
{}
|
\ifthenelse{\isundefined{\@stackoverflowid}}%
|
||||||
{
|
{}%
|
||||||
\ifbool{isstart}
|
{%
|
||||||
{
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
\setbool{istart}{false}
|
\href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\acvHeaderIconSep\@stackoverflowname}%
|
||||||
}
|
}%
|
||||||
{\@headersocialsep}
|
\ifthenelse{\isundefined{\@linkedin}}%
|
||||||
\href{http://\@homepage}{\faHome\ \@homepage}
|
{}%
|
||||||
}
|
{%
|
||||||
\ifthenelse{\isundefined{\@github}}
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
{}
|
\href{https://www.linkedin.com/in/\@linkedin}{\faLinkedinSquare\acvHeaderIconSep\@linkedin}%
|
||||||
{
|
}%
|
||||||
\ifbool{isstart}
|
\ifthenelse{\isundefined{\@twitter}}%
|
||||||
{
|
{}%
|
||||||
\setbool{istart}{false}
|
{%
|
||||||
}
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
{\@headersocialsep}
|
\href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}%
|
||||||
\href{https://github.com/\@github}{\faGithubSquare\ \@github}
|
}%
|
||||||
}
|
\ifthenelse{\isundefined{\@skype}}%
|
||||||
\ifthenelse{\isundefined{\@linkedin}}
|
{}%
|
||||||
{}
|
{%
|
||||||
{
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
\ifbool{isstart}
|
\faSkype\acvHeaderIconSep\@skype%
|
||||||
{
|
}%
|
||||||
\setbool{istart}{false}
|
\ifthenelse{\isundefined{\@reddit}}%
|
||||||
}
|
{}%
|
||||||
{\@headersocialsep}
|
{%
|
||||||
\href{https://www.linkedin.com/in/\@linkedin}{\faLinkedinSquare\ \@linkedin}
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
}
|
\href{https://www.reddit.com/user/\@reddit}{\faReddit\acvHeaderIconSep\@reddit}%
|
||||||
\ifthenelse{\isundefined{\@twitter}}
|
}%
|
||||||
{}
|
\ifthenelse{\isundefined{\@extrainfo}}%
|
||||||
{
|
{}%
|
||||||
\ifbool{isstart}
|
{%
|
||||||
{
|
\ifbool{isstart}{\setbool{istart}{false}}{\acvHeaderSocialSep}%
|
||||||
\setbool{istart}{false}
|
\@extrainfo%
|
||||||
}
|
}%
|
||||||
{\@headersocialsep}
|
} \\[\acvHeaderAfterSocialSkip]%
|
||||||
\href{https://twitter.com/\@twitter}{\faTwitter\ \@twitter}
|
\ifthenelse{\isundefined{\@quote}}%
|
||||||
}
|
{}%
|
||||||
\ifthenelse{\isundefined{\@skype}}
|
{\headerquotestyle{\@quote\\}\vspace{\acvHeaderAfterQuoteSkip}}%
|
||||||
{}
|
\end{center}%
|
||||||
{
|
|
||||||
\ifbool{isstart}
|
|
||||||
{
|
|
||||||
\setbool{istart}{false}
|
|
||||||
}
|
|
||||||
{\@headersocialsep}
|
|
||||||
\faSkype\ \@skype
|
|
||||||
}
|
|
||||||
} \\
|
|
||||||
\ifthenelse{\isundefined{\@quote}}
|
|
||||||
{}
|
|
||||||
{\vspace{6.0mm}\headerquotestyle{\@quote\\}\vspace{5.0mm}}
|
|
||||||
\end{center}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define a footer for CV
|
% Define a footer for CV
|
||||||
% Usage: \makecvfooter{<left>}{<center>}{<right>}
|
% Usage: \makecvfooter{<left>}{<center>}{<right>}
|
||||||
\newcommand*{\makecvfooter}[3]{
|
\newcommand*{\makecvfooter}[3]{%
|
||||||
\fancyfoot{}
|
\fancyfoot{}
|
||||||
\fancyfoot[L]{
|
\fancyfoot[L]{\footerstyle{#1}}
|
||||||
\footerstyle{#1}
|
\fancyfoot[C]{\footerstyle{#2}}
|
||||||
}
|
\fancyfoot[R]{\footerstyle{#3}}
|
||||||
\fancyfoot[C]{
|
|
||||||
\footerstyle{#2}
|
|
||||||
}
|
|
||||||
\fancyfoot[R]{
|
|
||||||
\footerstyle{#3}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define a section for CV
|
% Define a section for CV
|
||||||
% Usage: \cvsection{<section-title>}
|
% Usage: \cvsection{<section-title>}
|
||||||
\newcommand{\cvsection}[1]{
|
\newcommand{\cvsection}[1]{%
|
||||||
\par\addvspace{1.5ex}
|
\vspace{\acvSectionTopSkip}
|
||||||
\phantomsection{}
|
|
||||||
\sectionstyle{#1}
|
\sectionstyle{#1}
|
||||||
|
\phantomsection
|
||||||
\color{gray}\vhrulefill{0.9pt}
|
\color{gray}\vhrulefill{0.9pt}
|
||||||
\par\nobreak\addvspace{1ex}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define a subsection for CV
|
% Define a subsection for CV
|
||||||
% Usage: \cvsubsection{<subsection-title>}
|
% Usage: \cvsubsection{<subsection-title>}
|
||||||
\newcommand{\cvsubsection}[1]{
|
\newcommand{\cvsubsection}[1]{%
|
||||||
\phantomsection{}
|
|
||||||
\subsectionstyle{#1}
|
\subsectionstyle{#1}
|
||||||
|
\phantomsection
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% Define a paragraph for CV
|
||||||
|
\newenvironment{cvparagraph}{%
|
||||||
|
\vspace{-3mm}
|
||||||
|
\paragraphstyle
|
||||||
|
}{%
|
||||||
|
\vspace{1mm}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
% Define an environment for cventry
|
% Define an environment for cventry
|
||||||
\newenvironment{cventries}{
|
\newenvironment{cventries}{%
|
||||||
\begin{center}
|
\begin{center}
|
||||||
}{
|
}{%
|
||||||
\end{center}
|
\end{center}
|
||||||
}
|
}
|
||||||
% Define an entry of cv information
|
% Define an entry of cv information
|
||||||
% Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>}
|
% Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>}
|
||||||
\newcommand*{\cventry}[5]{
|
\newcommand*{\cventry}[5]{%
|
||||||
|
\vspace{\acvEntryTopSkip}
|
||||||
|
\vspace{-2.0mm}
|
||||||
\setlength\tabcolsep{0pt}
|
\setlength\tabcolsep{0pt}
|
||||||
\setlength{\extrarowheight}{0pt}
|
\setlength{\extrarowheight}{0pt}
|
||||||
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}}
|
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
|
||||||
\ifempty{#2#3}
|
\ifempty{#2#3}
|
||||||
{\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
{\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
||||||
{\entrytitlestyle{#2} & \entrylocationstyle{#3} \\
|
{\entrytitlestyle{#2} & \entrylocationstyle{#3} \\
|
||||||
\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
||||||
\multicolumn{2}{L{17cm}}{\descriptionstyle{#5}} \\
|
\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}
|
||||||
\end{tabular*}
|
\end{tabular*}%
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define an environment for cvsubentry
|
% Define an environment for cvsubentry
|
||||||
\newenvironment{cvsubentries}{
|
\newenvironment{cvsubentries}{%
|
||||||
\begin{center}
|
\begin{center}
|
||||||
}{
|
}{%
|
||||||
\end{center}
|
\end{center}
|
||||||
}
|
}
|
||||||
% Define a subentry of cv information
|
% Define a subentry of cv information
|
||||||
% Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>}
|
% Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>}
|
||||||
\newcommand*{\cvsubentry}[4]{
|
\newcommand*{\cvsubentry}[4]{%
|
||||||
\setlength\tabcolsep{0pt}
|
\setlength\tabcolsep{0pt}
|
||||||
\setlength{\extrarowheight}{0pt}
|
\setlength{\extrarowheight}{0pt}
|
||||||
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}}
|
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
|
||||||
\setlength\leftskip{0.2cm}
|
\setlength\leftskip{0.2cm}
|
||||||
\subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}}
|
\subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}}
|
||||||
{\subentrydatestyle{#3}}{}
|
{\subentrydatestyle{#3}}{}
|
||||||
@ -490,48 +558,98 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
% Define an environment for cvhonor
|
% Define an environment for cvhonor
|
||||||
\newenvironment{cvhonors}{
|
\newenvironment{cvhonors}{%
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\setlength\tabcolsep{0pt}
|
\setlength\tabcolsep{0pt}
|
||||||
\setlength{\extrarowheight}{0pt}
|
\setlength{\extrarowheight}{0pt}
|
||||||
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{13.0cm} R{2.5cm}}
|
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{\textwidth - 4.0cm} R{2.5cm}}
|
||||||
}{
|
}{%
|
||||||
\end{tabular*}
|
\end{tabular*}
|
||||||
\end{center}
|
\end{center}
|
||||||
}
|
}
|
||||||
% Define a line of cv information(honor, award or something else)
|
% Define a line of cv information(honor, award or something else)
|
||||||
% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
|
% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
|
||||||
\newcommand*{\cvhonor}[4]{
|
\newcommand*{\cvhonor}[4]{%
|
||||||
\honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3}
|
\honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} \\
|
||||||
\\
|
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define an environment for cvskill
|
% Define an environment for cvskill
|
||||||
\newenvironment{cvskills}{
|
\newenvironment{cvskills}{%
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\setlength\tabcolsep{1ex}
|
\setlength\tabcolsep{1ex}
|
||||||
\setlength{\extrarowheight}{0pt}
|
\setlength{\extrarowheight}{0pt}
|
||||||
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{15.2cm}}
|
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{\textwidth * \real{0.9}}}
|
||||||
}{
|
}{%
|
||||||
\end{tabular*}
|
\end{tabular*}
|
||||||
\end{center}
|
\end{center}
|
||||||
}
|
}
|
||||||
% Define a line of cv information(skill)
|
% Define a line of cv information(skill)
|
||||||
% Usage: \cvskill{<type>}{<skillset>}
|
% Usage: \cvskill{<type>}{<skillset>}
|
||||||
\newcommand*{\cvskill}[2]{
|
\newcommand*{\cvskill}[2]{%
|
||||||
\skilltypestyle{#1} & \skillsetstyle{#2}
|
\skilltypestyle{#1} & \skillsetstyle{#2} \\
|
||||||
\\
|
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define an environment for cvitems(for cventry)
|
% Define an environment for cvitems(for cventry)
|
||||||
\newenvironment{cvitems}{
|
\newenvironment{cvitems}{%
|
||||||
\vspace{-4mm}
|
\vspace{-4.0mm}
|
||||||
\begin{justify}
|
\begin{justify}
|
||||||
\begin{itemize}[leftmargin=2ex, nosep, noitemsep]
|
\begin{itemize}[leftmargin=2ex, nosep, noitemsep]
|
||||||
\setlength{\parskip}{0pt}
|
\setlength{\parskip}{0pt}
|
||||||
\renewcommand{\labelitemi}{\bullet}
|
\renewcommand{\labelitemi}{\bullet}
|
||||||
}{
|
}{%
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{justify}
|
\end{justify}
|
||||||
\vspace{-2mm}
|
\vspace{-4.0mm}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Commands for elements of Cover Letter
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Define an environment for cvletter
|
||||||
|
\newenvironment{cvletter}{%
|
||||||
|
\lettertextstyle
|
||||||
|
}{%
|
||||||
|
}
|
||||||
|
|
||||||
|
% Define a section for the cover letter
|
||||||
|
% Usage: \lettersection{<section-title>}
|
||||||
|
\newcommand{\lettersection}[1]{%
|
||||||
|
\par\addvspace{2.5ex}
|
||||||
|
\phantomsection{}
|
||||||
|
\lettersectionstyle{#1}
|
||||||
|
\color{gray}\vhrulefill{0.9pt}
|
||||||
|
\par\nobreak\addvspace{0.4ex}
|
||||||
|
}
|
||||||
|
|
||||||
|
% Define a title of the cover letter
|
||||||
|
% Usage: \makelettertitle
|
||||||
|
\newcommand*{\makelettertitle}{%
|
||||||
|
\vspace{8.4mm}
|
||||||
|
\setlength\tabcolsep{0pt}
|
||||||
|
\setlength{\extrarowheight}{0pt}
|
||||||
|
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
|
||||||
|
\recipienttitlestyle{\@recipientname} & \letterdatestyle{\@letterdate}
|
||||||
|
\end{tabular*}
|
||||||
|
\begin{singlespace}
|
||||||
|
\recipientaddressstyle{\@recipientaddress} \\\\
|
||||||
|
\end{singlespace}
|
||||||
|
\ifthenelse{\isundefined{\@lettertitle}}
|
||||||
|
{}
|
||||||
|
{\lettertitlestyle{\@lettertitle} \\}
|
||||||
|
\lettertextstyle{\@letteropening}
|
||||||
|
}
|
||||||
|
|
||||||
|
% Define a closing of the cover letter
|
||||||
|
% Usage: \makeletterclosing
|
||||||
|
\newcommand*{\makeletterclosing}{%
|
||||||
|
\vspace{3.4mm}
|
||||||
|
\lettertextstyle{\@letterclosing} \\\\
|
||||||
|
\letternamestyle{\@firstname\ \@lastname}
|
||||||
|
\ifthenelse{\isundefined{\@letterenclosure}}
|
||||||
|
{\\}
|
||||||
|
{%
|
||||||
|
\\\\\\
|
||||||
|
\letterenclosurestyle{\@letterenclname: \@letterenclosure} \\
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
themes/awesome/src/latex/examples/coverletter-0.png
Normal file
After Width: | Height: | Size: 110 KiB |
BIN
themes/awesome/src/latex/examples/coverletter-1.png
Normal file
After Width: | Height: | Size: 127 KiB |
BIN
themes/awesome/src/latex/examples/coverletter.pdf
Normal file
129
themes/awesome/src/latex/examples/coverletter.tex
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
%!TEX TS-program = xelatex
|
||||||
|
%!TEX encoding = UTF-8 Unicode
|
||||||
|
% Awesome CV LaTeX Template for Cover Letter
|
||||||
|
%
|
||||||
|
% This template has been downloaded from:
|
||||||
|
% https://github.com/posquit0/Awesome-CV
|
||||||
|
%
|
||||||
|
% Authors:
|
||||||
|
% Claud D. Park <posquit0.bj@gmail.com>
|
||||||
|
% Lars Richter <mail@ayeks.de>
|
||||||
|
%
|
||||||
|
% Template license:
|
||||||
|
% CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONFIGURATIONS
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% A4 paper size by default, use 'letterpaper' for US letter
|
||||||
|
\documentclass[11pt, a4paper]{awesome-cv}
|
||||||
|
|
||||||
|
% Configure page margins with geometry
|
||||||
|
% \geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
||||||
|
|
||||||
|
% Specify the location of the included fonts
|
||||||
|
\fontdir[fonts/]
|
||||||
|
|
||||||
|
% Color for highlights
|
||||||
|
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||||
|
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||||
|
\colorlet{awesome}{awesome-red}
|
||||||
|
% Uncomment if you would like to specify your own color
|
||||||
|
% \definecolor{awesome}{HTML}{CA63A8}
|
||||||
|
|
||||||
|
% Colors for text
|
||||||
|
% Uncomment if you would like to specify your own color
|
||||||
|
% \definecolor{darktext}{HTML}{414141}
|
||||||
|
% \definecolor{text}{HTML}{333333}
|
||||||
|
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||||
|
% \definecolor{lighttext}{HTML}{999999}
|
||||||
|
|
||||||
|
% Set false if you don't want to highlight section with awesome color
|
||||||
|
\setbool{acvSectionColorHighlight}{true}
|
||||||
|
|
||||||
|
% If you would like to change the social information separator from a pipe (|) to something else
|
||||||
|
\renewcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% PERSONAL INFORMATION
|
||||||
|
% Comment any of the lines below if they are not required
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\name{[~ print(h.initialWords( r.name )) ~]}{[[ h.lastWord( r.name ) ]]}
|
||||||
|
\position{[[ r.info.label ]]}
|
||||||
|
\address{[[ r.location.address ]]}
|
||||||
|
|
||||||
|
\mobile{[[ r.contact.phone ]]}
|
||||||
|
\email{[[ r.contact.email ]]}
|
||||||
|
\homepage{[[ r.contact.website ]]}
|
||||||
|
[~ if (r.hasProfile('github') { ~]\github{[[ r.getProfile('github').user ]]}[~ } ~]
|
||||||
|
[~ if (r.hasProfile('linkedin') { ~]\linkedin{[[ r.getProfile('github').user ]]}[~ } ~]
|
||||||
|
% \stackoverflow{SO-id}{SO-name}
|
||||||
|
% \twitter{@twit}
|
||||||
|
% \skype{skype-id}
|
||||||
|
% \reddit{reddit-id}
|
||||||
|
% \extrainfo{extra informations}
|
||||||
|
|
||||||
|
[~ if (r.info.quote) { ~]\quote{``[[ r.info.quote ]]"}[~ } ~]
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% LETTER INFORMATION
|
||||||
|
% All of the below lines must be filled out
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% The company being applied to
|
||||||
|
\recipient
|
||||||
|
{Company Recruitment Team}
|
||||||
|
{Google Inc.\\1600 Amphitheatre Parkway\\Mountain View, CA 94043}
|
||||||
|
% The date on the letter, default is the date of compilation
|
||||||
|
\letterdate{\today}
|
||||||
|
% The title of the letter
|
||||||
|
\lettertitle{Job Application for Software Engineer}
|
||||||
|
% How the letter is opened
|
||||||
|
\letteropening{Dear Mr./Ms./Dr. LastName,}
|
||||||
|
% How the letter is closed
|
||||||
|
\letterclosing{Sincerely,}
|
||||||
|
% Any enclosures with the letter
|
||||||
|
\letterenclosure[Attached]{Curriculum Vitae}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
% Print the header with above personal informations
|
||||||
|
\makecvheader
|
||||||
|
|
||||||
|
% Print the footer with 3 arguments(<left>, <center>, <right>)
|
||||||
|
% Leave any of these blank if they are not needed
|
||||||
|
\makecvfooter
|
||||||
|
{\today}
|
||||||
|
{[[ r.name ]]~~~·~~~Cover Letter}
|
||||||
|
{}
|
||||||
|
|
||||||
|
% Print the title with above letter informations
|
||||||
|
\makelettertitle
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% LETTER CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\begin{cvletter}
|
||||||
|
|
||||||
|
\lettersection{About Me}
|
||||||
|
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.
|
||||||
|
|
||||||
|
\lettersection{Why Google?}
|
||||||
|
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.
|
||||||
|
|
||||||
|
\lettersection{Why Me?}
|
||||||
|
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.
|
||||||
|
|
||||||
|
\end{cvletter}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% Print the signature and enclosures with above letter informations
|
||||||
|
\makeletterclosing
|
||||||
|
|
||||||
|
\end{document}
|
BIN
themes/awesome/src/latex/examples/cv.pdf
Normal file
@ -1,83 +1,101 @@
|
|||||||
%!TEX TS-program = xelatex
|
%!TEX TS-program = xelatex
|
||||||
%!TEX encoding = UTF-8 Unicode
|
%!TEX encoding = UTF-8 Unicode
|
||||||
% Copyright 2015 Claud D. Park <posquit0.bj@gmail.com>
|
% Awesome CV LaTeX Template for CV/Resume
|
||||||
|
%
|
||||||
|
% This template has been downloaded from:
|
||||||
|
% https://github.com/posquit0/Awesome-CV
|
||||||
|
%
|
||||||
|
% Author:
|
||||||
|
% Claud D. Park <posquit0.bj@gmail.com>
|
||||||
% http://www.posquit0.com
|
% http://www.posquit0.com
|
||||||
%
|
%
|
||||||
|
% Template license:
|
||||||
|
% CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)
|
||||||
|
%
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
% Configuration
|
%-------------------------------------------------------------------------------
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
% CONFIGURATIONS
|
||||||
%%% Themes: Awesome-CV
|
%-------------------------------------------------------------------------------
|
||||||
|
% A4 paper size by default, use 'letterpaper' for US letter
|
||||||
\documentclass[11pt, a4paper]{awesome-cv}
|
\documentclass[11pt, a4paper]{awesome-cv}
|
||||||
|
|
||||||
%%% Override a directory location for fonts(default: 'fonts/')
|
% Configure page margins with geometry
|
||||||
|
\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
||||||
|
|
||||||
|
% Specify the location of the included fonts
|
||||||
\fontdir[fonts/]
|
\fontdir[fonts/]
|
||||||
|
|
||||||
%%% Configure a directory location for sections
|
% Color for highlights
|
||||||
\newcommand*{\sectiondir}{cv/}
|
|
||||||
|
|
||||||
%%% Override color
|
|
||||||
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||||
% awesome-nephritis, awesome-concrete, awesome-darknight
|
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||||
%% Color for highlight
|
|
||||||
% Define your custom color if you don't like awesome colors
|
|
||||||
\colorlet{awesome}{awesome-red}
|
\colorlet{awesome}{awesome-red}
|
||||||
%\definecolor{awesome}{HTML}{CA63A8}
|
% Uncomment if you would like to specify your own color
|
||||||
%% Colors for text
|
% \definecolor{awesome}{HTML}{CA63A8}
|
||||||
%\definecolor{darktext}{HTML}{414141}
|
|
||||||
%\definecolor{text}{HTML}{414141}
|
|
||||||
%\definecolor{graytext}{HTML}{414141}
|
|
||||||
%\definecolor{lighttext}{HTML}{414141}
|
|
||||||
|
|
||||||
%%% Override a separator for social informations in header(default: ' | ')
|
% Colors for text
|
||||||
%\headersocialsep[\quad\textbar\quad]
|
% Uncomment if you would like to specify your own color
|
||||||
|
% \definecolor{darktext}{HTML}{414141}
|
||||||
|
% \definecolor{text}{HTML}{333333}
|
||||||
|
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||||
|
% \definecolor{lighttext}{HTML}{999999}
|
||||||
|
|
||||||
|
% Set false if you don't want to highlight section with awesome color
|
||||||
|
\setbool{acvSectionColorHighlight}{true}
|
||||||
|
|
||||||
|
% If you would like to change the social information separator from a pipe (|) to something else
|
||||||
|
\renewcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%-------------------------------------------------------------------------------
|
||||||
% 3rd party packages
|
% PERSONAL INFORMATION
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
% Comment any of the lines below if they are not required
|
||||||
%%% Needed to divide into several files
|
%-------------------------------------------------------------------------------
|
||||||
\usepackage{import}
|
\name{[~ print(h.initialWords( r.name )) ~]}{[[ h.lastWord( r.name ) ]]}
|
||||||
|
\position{[[ r.info.label ]]}
|
||||||
|
\address{[[ r.location.address ]]}
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
% Personal Data
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
%%% Essentials
|
|
||||||
\name{[[ _.initial(r.name.split(' ')).join(' ') ]] }{[[ _.last(r.name.split(' ')) ]]}
|
|
||||||
\address{[[ r.location.address.replace(/\n/g, ', ') ]]}
|
|
||||||
\mobile{[[ r.contact.phone ]]}
|
\mobile{[[ r.contact.phone ]]}
|
||||||
%%% Social
|
|
||||||
\email{[[ r.contact.email ]]}
|
\email{[[ r.contact.email ]]}
|
||||||
\homepage{[[ r.contact.website ]]}
|
\homepage{[[ r.contact.website ]]}
|
||||||
[~ if(r.hasProfile('github')) { ~]\github{[[ r.getProfile('github').user ]]}[~ } ~]
|
[~ if (r.hasProfile('github')) { ~]\github{[[ r.getProfile('github').user ]]}[~ } ~]
|
||||||
[~ if(r.hasProfile('linkedin')) { ~]\linkedin{[[ r.getProfile('linkedin').user ]]}[~ } ~]
|
[~ if (r.hasProfile('linkedin')) { ~]\linkedin{[[ r.getProfile('github').user ]]}[~ } ~]
|
||||||
%%% Optionals
|
% \stackoverflow{SO-id}{SO-name}
|
||||||
\position{[[ r.info.characterClass ]]{\enskip\cdotp\enskip}[[ r.info.label ]]}
|
% \twitter{@twit}
|
||||||
[~ if( r.info.quote ) { ~]\quote{``[[ r.info.quote ]]"}[~ } ~]
|
% \skype{skype-id}
|
||||||
|
% \reddit{reddit-id}
|
||||||
|
% \extrainfo{extra informations}
|
||||||
|
|
||||||
|
[~ if (r.info.quote) { ~]\quote{``[[ r.info.quote ]]"}[~ } ~]
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%-------------------------------------------------------------------------------
|
||||||
% Content
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
%%% Make a footer for CV with three arguments(<left>, <center>, <right>)
|
% Print the header with above personal informations
|
||||||
|
\makecvheader
|
||||||
|
|
||||||
|
% Print the footer with 3 arguments(<left>, <center>, <right>)
|
||||||
|
% Leave any of these blank if they are not needed
|
||||||
\makecvfooter
|
\makecvfooter
|
||||||
{\today}
|
{\today}
|
||||||
{[[ r.name ]]~~~·~~~Curriculum Vitae}
|
{[[ r.name ]]~~~·~~~Curriculum Vitae}
|
||||||
{\thepage}
|
{\thepage}
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
%%% Make a header for CV using personal data
|
|
||||||
\makecvheader
|
|
||||||
|
|
||||||
%%% Import contents
|
%-------------------------------------------------------------------------------
|
||||||
\import{\sectiondir}{education.tex}
|
% CV/RESUME CONTENT
|
||||||
\import{\sectiondir}{skills.tex}
|
% Each section is imported separately, open each file in turn to modify content
|
||||||
\import{\sectiondir}{experience.tex}
|
%-------------------------------------------------------------------------------
|
||||||
\import{\sectiondir}{extracurricular.tex}
|
\input{cv/education.tex}
|
||||||
\import{\sectiondir}{honors.tex}
|
\input{cv/skills.tex}
|
||||||
\import{\sectiondir}{presentation.tex}
|
\input{cv/experience.tex}
|
||||||
\import{\sectiondir}{writing.tex}
|
\input{cv/extracurricular.tex}
|
||||||
\import{\sectiondir}{committees.tex}
|
\input{cv/honors.tex}
|
||||||
|
\input{cv/presentation.tex}
|
||||||
|
\input{cv/writing.tex}
|
||||||
|
\input{cv/committees.tex}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -1,12 +1,23 @@
|
|||||||
[~ if( r.committees && r.committees.length ) { ~]
|
[~ if (r.governance && r.governance.length) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Program Committees}
|
\cvsection{Program Committees}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
[~ _.each(r.committees, function(com) { ~]
|
[~ _.each( r.governance, function(gov) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{[[ com.position ]]}
|
{[[ gov.role ]]} % Position
|
||||||
{[[ com.organization ]]}
|
{[[ gov.organization ]]} % Committee
|
||||||
{[[ com.location ]]}
|
{[[ gov.location ]]} % Location
|
||||||
{[[ com.safe.date ]]}
|
{[[ h.date(gov.start) ]]} % Date(s)
|
||||||
[~ }); ~]
|
|
||||||
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cvhonors}
|
\end{cvhonors}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,20 +1,28 @@
|
|||||||
[~ if( r.education && r.education.history && r.education.history.length) { ~]
|
[~ if (r.education && r.education.history && r.education.history.length) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Education}
|
\cvsection{Education}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each(r.education.history, function(edu) { ~]
|
[~ _.each( r.education.history, function(edu) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ edu.studyType ]], [[ edu.area ]]}
|
{[[ edu.title ]]} % Degree
|
||||||
{[[ edu.institution ]]}
|
{[[ edu.institution ]]} % Institution
|
||||||
{[[ edu.location ]]}
|
{[[ edu.location ]]} % Location
|
||||||
{[[ edu.safe.start ]] - [[ edu.safe.end ]]}
|
{[[ h.dateRange( edu ) ]]} % Date(s)
|
||||||
[~ if( edu.highlights && edu.highlights.length ) {
|
{[~ if( edu.highlights && edu.highlights.length ) { ~]
|
||||||
~]{
|
\begin{cvitems} % Description(s) bullet points
|
||||||
\begin{cvitems}
|
[[ h.pad( edu.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ]]
|
||||||
[~ _.each(edu.highlights, function(high) { ~]
|
|
||||||
\item {[[ high ]]}
|
|
||||||
[~ }); ~]
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}[~ } else { ~]{ }[~ } ~]
|
[~ } ~]}
|
||||||
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,18 +1,28 @@
|
|||||||
[~ if( r.employment && r.employment.history && r.employment.history.length ) { ~]
|
[~ if (r.employment && r.employment.history && r.employment.history.length ) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Experience}
|
\cvsection{Experience}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each(r.employment.history, function(emp) { ~]
|
[~ _.each( r.employment.history, function(job) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ emp.position ]]}
|
{[[ job.position ]]} % Job title
|
||||||
{[[ emp.employer ]]}
|
{[[ job.employer ]]} % Organization
|
||||||
{[[ emp.location ]]}
|
{[[ job.location ]]} % Location
|
||||||
{[[ emp.safe.start ]] - [[ emp.safe.end ]]}
|
{[[ h.dateRange( job ) ]]} % Date(s)
|
||||||
[~ if( emp.highlights && emp.highlights.length ) {
|
{[~ if (job.highlights && job.highlights.length ) { ~]
|
||||||
~]{
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
\begin{cvitems}[~ _.each( emp.highlights, function(high) { ~]
|
[[ h.pad( job.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ]]
|
||||||
\item {[[ high.replace(/#/g, '\\#') ]]}[~ }); ~]
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}[~ } ~]
|
[~ } ~]}
|
||||||
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,19 +1,28 @@
|
|||||||
[~ if( r.extracurricular && r.extracurricular.length ) { ~]
|
[~ if (r.extracurricular && r.extracurricular.length) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Extracurricular Activity}
|
\cvsection{Extracurricular Activity}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each( r.extracurricular, function(ex) { ~]
|
[~ _.each( r.extracurricular, function(cur) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ ex.title ]]}
|
{[[ cur.title ]]} % Affiliation/role
|
||||||
{[[ ex.activity ]]}
|
{[[ cur.activity ]]} % Organization/group
|
||||||
{[[ ex.location ]]}
|
{[[ cur.location ]]} % Location
|
||||||
{[[ ex.safe.start ]] - [[ ex.safe.end ]]}
|
{[[ h.dateRange(cur) ]]} % Date(s)
|
||||||
[~ if( ex.highlights && ex.highlights.length ) {
|
{[~ if (cur.highlights && cur.highlights.length ) { ~]
|
||||||
~]{
|
\begin{cvitems} % Description(s) of experience/contributions/knowledge
|
||||||
\begin{cvitems}
|
[[ h.pad( cur.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ]]
|
||||||
[~ _.each(ex.highlights, function(high) {
|
\end{cvitems}
|
||||||
~]\item {[[high]]}
|
[~ } ~]}
|
||||||
[~ }); ~]\end{cvitems}
|
|
||||||
}[~ } else { ~]{ }[~ } ~]
|
[~ }); ~]
|
||||||
[~ }); ~]
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,52 +1,52 @@
|
|||||||
[~ if( r.recognition && r.recognition.length ) { ~]
|
[~ if ( r.recognition && r.recognition.length ) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Honors \& Awards}
|
\cvsection{Honors \& Awards}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SUBSECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsubsection{International}
|
\cvsubsection{International}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
[~ _.each(r.recognition, function(rec) { ~]
|
[~ _.each( r.recognition, function(rgn) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{[[ rec.title ]]}
|
{[[ rgn.title ]]} % Award
|
||||||
{[[ rec.event ]]}
|
{[[ rgn.from ]]} % Event
|
||||||
{[[ rec.location ]]}
|
{[[ rgn.location ]]} % Location
|
||||||
{[[ rec.safe.date ]]}
|
{[[ h.date(rgn.date) ]]} % Date(s)
|
||||||
[~ }); ~]
|
|
||||||
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cvhonors}
|
\end{cvhonors}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SUBSECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsubsection{Domestic}
|
\cvsubsection{Domestic}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
|
[~ _.each( r.recognition, function(rgn) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{3rd Place}
|
{[[ rgn.title ]]} % Award
|
||||||
{WITHCON Hacking Competition Final}
|
{[[ rgn.from ]]} % Event
|
||||||
{Seoul, S.Korea}
|
{[[ rgn.location ]]} % Location
|
||||||
{2015}
|
{[[ h.date(rgn.date) ]]} % Date(s)
|
||||||
\cvhonor
|
|
||||||
{Silver Prize}
|
[~ }); ~]
|
||||||
{KISA HDCON Hacking Competition Final}
|
%---------------------------------------------------------
|
||||||
{Seoul, S.Korea}
|
|
||||||
{2013}
|
|
||||||
\cvhonor
|
|
||||||
{2nd Award}
|
|
||||||
{HUST Hacking Festival}
|
|
||||||
{S.Korea}
|
|
||||||
{2013}
|
|
||||||
\cvhonor
|
|
||||||
{3rd Award}
|
|
||||||
{HUST Hacking Festival}
|
|
||||||
{S.Korea}
|
|
||||||
{2010}
|
|
||||||
\cvhonor
|
|
||||||
{3rd Award}
|
|
||||||
{Holyshield 3rd Hacking Festival}
|
|
||||||
{S.Korea}
|
|
||||||
{2012}
|
|
||||||
\cvhonor
|
|
||||||
{2nd Award}
|
|
||||||
{Holyshield 3rd Hacking Festival}
|
|
||||||
{S.Korea}
|
|
||||||
{2011}
|
|
||||||
\cvhonor
|
|
||||||
{5th Place}
|
|
||||||
{PADOCON Hacking Competition Final}
|
|
||||||
{Seoul, S.Korea}
|
|
||||||
{2011}
|
|
||||||
\end{cvhonors}
|
\end{cvhonors}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,20 +1,28 @@
|
|||||||
[~ if( r.speaking && r.speaking.length) { ~]
|
[~ if (r.speaking && r.speaking.length) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Presentation}
|
\cvsection{Presentation}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each(r.speaking, function(pres) { ~]
|
[~ _.each( r.speaking, function(spk) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ pres.title ]]}
|
{[[ spk.title ]]} % Role
|
||||||
{[[ pres.event ]]}
|
{[[ spk.event ]])} % Event
|
||||||
{[[ pres.location ]]}
|
{[[ spk.location ]]} % Location
|
||||||
{[[ pres.safe.date ]]}
|
{[[ h.date(spk.date) ]]} % Date(s)
|
||||||
[~ if (pres.highlights && pres.highlights.length) {
|
{[~ if (r.speaking && r.speaking.length) { ~]
|
||||||
~]{
|
\begin{cvitems} % Description(s)
|
||||||
\begin{cvitems}
|
[[ h.pad( spk.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ]]
|
||||||
[~ _.each(pres.highlights, function( high) {
|
|
||||||
~]\item {[[ high ]]}[~ }); ~]
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}
|
[~ } ~]}
|
||||||
[~ } else { ~]{ }[~ } ~]
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,15 +1,34 @@
|
|||||||
[~ if( r.skills && r.skills.sets && r.skills.sets.length ) { ~]
|
[~ if(( r.skills && r.skills.sets && r.skills.sets.length ) ||
|
||||||
|
( r.languages && r.languages.length ) ) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Skills}
|
\cvsection{Skills}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvskills}
|
\begin{cvskills}
|
||||||
[~ _.each(r.skills.sets, function(set) { ~]
|
|
||||||
|
[~ if (r.skills && r.skills.sets && r.skills.sets.length ) { ~]
|
||||||
|
[~ _.each( r.skills.sets, function(sks) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cvskill
|
\cvskill
|
||||||
{[[ set.name ]]}
|
{[[ sks.name ]]} % Category
|
||||||
{[[ set.skills.join(', ') ]]}
|
{[~ print( sks.skills.join(', ') ) ~]} % Skills
|
||||||
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
[~ if( r.languages && r.languages.length ) { ~]
|
|
||||||
\cvskill
|
|
||||||
{Languages}
|
|
||||||
{[[ r.languages.map( function(lang) { return lang.language } ).join(', ') ]]}
|
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
|
||||||
|
[~ if (r.languages && r.languages.length ) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvskill
|
||||||
|
{Languages} % Category
|
||||||
|
{[~ print( _.map( r.languages, function(lang) { return lang.language; }).join(', ')) ~]} % Skills
|
||||||
|
|
||||||
|
[~ } ~]
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cvskills}
|
\end{cvskills}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,21 +1,28 @@
|
|||||||
[~ if( r.writing && r.writing.length ) { ~]
|
[~ if (r.writing && r.writing.length ) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Writing}
|
\cvsection{Writing}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each(r.writing, function(wri) { ~]
|
[~ _.each( r.writing, function(wri) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ wri.publisher ]]}
|
{[~ print( wri.publisher ? wri.publisher.name : 'Unknown' ) ~]} % Role
|
||||||
{[[ wri.title ]]}
|
{[[ wri.title ]]} % Title
|
||||||
{[[ wri.url ]]}
|
{[[ wri.url ]]} % Location
|
||||||
{[[ wri.safe.date ]] - PRESENT}
|
{[[ h.date(wri.date) ]]} % Date(s)
|
||||||
[~ if( wri.highlights && wri.highlights.length ) { ~]
|
{[~ if (wri.highlights && wri.highlights.length) { ~]
|
||||||
{
|
\begin{cvitems} % Description(s)
|
||||||
\begin{cvitems}
|
[~ print( h.pad( wri.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ) ~]
|
||||||
[~ _.each(wri.highlights, function(high) { ~]
|
|
||||||
\item {[[ high ]]}
|
|
||||||
[~ }); ~]
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}
|
[~ } ~]}
|
||||||
[~ } else { ~]{ }[~ } ~]
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
BIN
themes/awesome/src/latex/examples/resume-0.png
Normal file
After Width: | Height: | Size: 186 KiB |
BIN
themes/awesome/src/latex/examples/resume-1.png
Normal file
After Width: | Height: | Size: 145 KiB |
BIN
themes/awesome/src/latex/examples/resume.pdf
Normal file
@ -1,82 +1,101 @@
|
|||||||
%!TEX TS-program = xelatex
|
%!TEX TS-program = xelatex
|
||||||
%!TEX encoding = UTF-8 Unicode
|
%!TEX encoding = UTF-8 Unicode
|
||||||
% Copyright 2015 Claud D. Park <posquit0.bj@gmail.com>
|
% Awesome CV LaTeX Template for CV/Resume
|
||||||
|
%
|
||||||
|
% This template has been downloaded from:
|
||||||
|
% https://github.com/posquit0/Awesome-CV
|
||||||
|
%
|
||||||
|
% Author:
|
||||||
|
% Claud D. Park <posquit0.bj@gmail.com>
|
||||||
% http://www.posquit0.com
|
% http://www.posquit0.com
|
||||||
%
|
%
|
||||||
|
% Template license:
|
||||||
|
% CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)
|
||||||
|
%
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
% Configuration
|
%-------------------------------------------------------------------------------
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
% CONFIGURATIONS
|
||||||
%%% Themes: Awesome-CV
|
%-------------------------------------------------------------------------------
|
||||||
|
% A4 paper size by default, use 'letterpaper' for US letter
|
||||||
\documentclass[11pt, a4paper]{awesome-cv}
|
\documentclass[11pt, a4paper]{awesome-cv}
|
||||||
|
|
||||||
%%% Override a directory location for fonts(default: 'fonts/')
|
% Configure page margins with geometry
|
||||||
|
\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
||||||
|
|
||||||
|
% Specify the location of the included fonts
|
||||||
\fontdir[fonts/]
|
\fontdir[fonts/]
|
||||||
|
|
||||||
%%% Configure a directory location for sections
|
% Color for highlights
|
||||||
\newcommand*{\sectiondir}{resume/}
|
|
||||||
|
|
||||||
%%% Override color
|
|
||||||
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||||
% awesome-nephritis, awesome-concrete, awesome-darknight
|
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||||
%% Color for highlight
|
|
||||||
% Define your custom color if you don't like awesome colors
|
|
||||||
\colorlet{awesome}{awesome-red}
|
\colorlet{awesome}{awesome-red}
|
||||||
%\definecolor{awesome}{HTML}{CA63A8}
|
% Uncomment if you would like to specify your own color
|
||||||
%% Colors for text
|
% \definecolor{awesome}{HTML}{CA63A8}
|
||||||
%\definecolor{darktext}{HTML}{414141}
|
|
||||||
%\definecolor{text}{HTML}{414141}
|
|
||||||
%\definecolor{graytext}{HTML}{414141}
|
|
||||||
%\definecolor{lighttext}{HTML}{414141}
|
|
||||||
|
|
||||||
%%% Override a separator for social informations in header(default: ' | ')
|
% Colors for text
|
||||||
%\headersocialsep[\quad\textbar\quad]
|
% Uncomment if you would like to specify your own color
|
||||||
|
% \definecolor{darktext}{HTML}{414141}
|
||||||
|
% \definecolor{text}{HTML}{333333}
|
||||||
|
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||||
|
% \definecolor{lighttext}{HTML}{999999}
|
||||||
|
|
||||||
|
% Set false if you don't want to highlight section with awesome color
|
||||||
|
\setbool{acvSectionColorHighlight}{true}
|
||||||
|
|
||||||
|
% If you would like to change the social information separator from a pipe (|) to something else
|
||||||
|
\renewcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%-------------------------------------------------------------------------------
|
||||||
% 3rd party packages
|
% PERSONAL INFORMATION
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
% Comment any of the lines below if they are not required
|
||||||
%%% Needed to divide into several files
|
%-------------------------------------------------------------------------------
|
||||||
\usepackage{import}
|
\name{[~ print(h.initialWords( r.name )) ~]}{[[ h.lastWord( r.name ) ]]}
|
||||||
|
\position{[[ r.info.label ]]}
|
||||||
|
\address{[[ r.location.address ]]}
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
% Personal Data
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
%%% Essentials
|
|
||||||
\name{[[ _.initial(r.name.split(' ')).join(' ') ]] }{[[ _.last(r.name.split(' ')) ]]}
|
|
||||||
\address{[[ r.location.address.replace(/\n/g, ', ') ]]}
|
|
||||||
\mobile{[[ r.contact.phone ]]}
|
\mobile{[[ r.contact.phone ]]}
|
||||||
%%% Social
|
|
||||||
\email{[[ r.contact.email ]]}
|
\email{[[ r.contact.email ]]}
|
||||||
\homepage{[[ r.contact.website ]]}
|
\homepage{[[ r.contact.website ]]}
|
||||||
[~ if(r.hasProfile('github')) { ~]\github{[[ r.getProfile('github').user ]]}[~ } ~]
|
[~ if (r.hasProfile('github')) { ~]\github{[[ r.getProfile('github').user ]]}[~ } ~]
|
||||||
[~ if(r.hasProfile('linkedin')) { ~]\linkedin{[[ r.getProfile('linkedin').user ]]}[~ } ~]
|
[~ if (r.hasProfile('linkedin')) { ~]\linkedin{[[ r.getProfile('github').user ]]}[~ } ~]
|
||||||
%%% Optionals
|
% \stackoverflow{SO-id}{SO-name}
|
||||||
\position{[[ r.info.characterClass ]]{\enskip\cdotp\enskip}[[ r.info.label ]]}
|
% \twitter{@twit}
|
||||||
[~ if( r.info.quote ) { ~]\quote{``[[ r.info.quote ]]"}[~ } ~]
|
% \skype{skype-id}
|
||||||
|
% \reddit{reddit-id}
|
||||||
|
% \extrainfo{extra informations}
|
||||||
|
|
||||||
|
[~ if (r.info.quote) { ~]\quote{``[[ r.info.quote ]]"}[~ } ~]
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%-------------------------------------------------------------------------------
|
||||||
% Content
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
%%% Make a footer for CV with three arguments(<left>, <center>, <right>)
|
% Print the header with above personal informations
|
||||||
|
\makecvheader
|
||||||
|
|
||||||
|
% Print the footer with 3 arguments(<left>, <center>, <right>)
|
||||||
|
% Leave any of these blank if they are not needed
|
||||||
\makecvfooter
|
\makecvfooter
|
||||||
{\today}
|
{\today}
|
||||||
{[[ r.name ]]~~~·~~~Résumé}
|
{[[ r.name ]]~~~·~~~Résumé}
|
||||||
{\thepage}
|
{\thepage}
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
%%% Make a header for CV with personal data
|
|
||||||
\makecvheader
|
|
||||||
|
|
||||||
%%% Import contents
|
%-------------------------------------------------------------------------------
|
||||||
\import{\sectiondir}{education.tex}
|
% CV/RESUME CONTENT
|
||||||
\import{\sectiondir}{experience.tex}
|
% Each section is imported separately, open each file in turn to modify content
|
||||||
\import{\sectiondir}{extracurricular.tex}
|
%-------------------------------------------------------------------------------
|
||||||
\import{\sectiondir}{honors.tex}
|
% \input{resume/summary.tex}
|
||||||
\import{\sectiondir}{presentation.tex}
|
\input{resume/education.tex}
|
||||||
\import{\sectiondir}{writing.tex}
|
\input{resume/experience.tex}
|
||||||
\import{\sectiondir}{committees.tex}
|
\input{resume/extracurricular.tex}
|
||||||
|
\input{resume/honors.tex}
|
||||||
|
\input{resume/presentation.tex}
|
||||||
|
\input{resume/writing.tex}
|
||||||
|
\input{resume/committees.tex}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -1,12 +1,23 @@
|
|||||||
[~ if( r.committees && r.committees.length ) { ~]
|
[~ if (r.governance && r.governance.length) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Program Committees}
|
\cvsection{Program Committees}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
[~ _.each(r.committees, function(com) { ~]
|
[~ _.each( r.governance, function(gov) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{[[ com.position ]]}
|
{[[ gov.role ]]} % Position
|
||||||
{[[ com.organization ]]}
|
{[[ gov.organization ]]} % Committee
|
||||||
{[[ com.location ]]}
|
{[[ gov.location ]]} % Location
|
||||||
{[[ com.safe.date ]]}
|
{[[ h.date(gov.start) ]]} % Date(s)
|
||||||
[~ }); ~]
|
|
||||||
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cvhonors}
|
\end{cvhonors}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,20 +1,28 @@
|
|||||||
[~ if( r.education && r.education.history && r.education.history.length) { ~]
|
[~ if (r.education && r.education.history && r.education.history.length) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Education}
|
\cvsection{Education}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each(r.education.history, function(edu) { ~]
|
[~ _.each( r.education.history, function(edu) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ edu.studyType ]], [[ edu.area ]]}
|
{[[ edu.title ]]} % Degree
|
||||||
{[[ edu.institution ]]}
|
{[[ edu.institution ]]} % Institution
|
||||||
{[[ edu.location ]]}
|
{[[ edu.location ]]} % Location
|
||||||
{[[ edu.safe.start ]] - [[ edu.safe.end ]]}
|
{[[ h.dateRange( edu ) ]]} % Date(s)
|
||||||
[~ if( edu.highlights && edu.highlights.length ) {
|
{[~ if( edu.highlights && edu.highlights.length ) { ~]
|
||||||
~]{
|
\begin{cvitems} % Description(s) bullet points
|
||||||
\begin{cvitems}
|
[[ h.pad( edu.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ]]
|
||||||
[~ _.each(edu.highlights, function(high) { ~]
|
|
||||||
\item {[[ high ]]}
|
|
||||||
[~ }); ~]
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}[~ } else { ~]{ }[~ } ~]
|
[~ } ~]}
|
||||||
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,18 +1,28 @@
|
|||||||
[~ if( r.employment && r.employment.history && r.employment.history.length ) { ~]
|
[~ if (r.employment && r.employment.history && r.employment.history.length ) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Experience}
|
\cvsection{Experience}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each(r.employment.history, function(emp) { ~]
|
[~ _.each( r.employment.history, function(job) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ emp.position ]]}
|
{[[ job.position ]]} % Job title
|
||||||
{[[ emp.employer ]]}
|
{[[ job.employer ]]} % Organization
|
||||||
{[[ emp.location ]]}
|
{[[ job.location ]]} % Location
|
||||||
{[[ emp.safe.start ]] - [[ emp.safe.end ]]}
|
{[[ h.dateRange( job ) ]]} % Date(s)
|
||||||
[~ if( emp.highlights && emp.highlights.length ) {
|
{[~ if (job.highlights && job.highlights.length ) { ~]
|
||||||
~]{
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
\begin{cvitems}[~ _.each( emp.highlights, function(high) { ~]
|
[[ h.pad( job.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ]]
|
||||||
\item {[[ high.replace(/#/g, '\\#') ]]}[~ }); ~]
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}[~ } ~]
|
[~ } ~]}
|
||||||
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,19 +1,28 @@
|
|||||||
[~ if( r.extracurricular && r.extracurricular.length ) { ~]
|
[~ if (r.extracurricular && r.extracurricular.length) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Extracurricular Activity}
|
\cvsection{Extracurricular Activity}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each( r.extracurricular, function(ex) { ~]
|
[~ _.each( r.extracurricular, function(cur) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ ex.title ]]}
|
{[[ cur.title ]]} % Affiliation/role
|
||||||
{[[ ex.activity ]]}
|
{[[ cur.activity ]]} % Organization/group
|
||||||
{[[ ex.location ]]}
|
{[[ cur.location ]]} % Location
|
||||||
{[[ ex.safe.start ]] - [[ ex.safe.end ]]}
|
{[[ h.dateRange(cur) ]]} % Date(s)
|
||||||
[~ if( ex.highlights && ex.highlights.length ) {
|
{[~ if (cur.highlights && cur.highlights.length ) { ~]
|
||||||
~]{
|
\begin{cvitems} % Description(s) of experience/contributions/knowledge
|
||||||
\begin{cvitems}
|
[[ h.pad( cur.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ]]
|
||||||
[~ _.each(ex.highlights, function(high) {
|
\end{cvitems}
|
||||||
~]\item {[[high]]}
|
[~ } ~]}
|
||||||
[~ }); ~]\end{cvitems}
|
|
||||||
}[~ } else { ~]{ }[~ } ~]
|
[~ }); ~]
|
||||||
[~ }); ~]
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,52 +1,52 @@
|
|||||||
[~ if( r.recognition && r.recognition.length ) { ~]
|
[~ if ( r.recognition && r.recognition.length ) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Honors \& Awards}
|
\cvsection{Honors \& Awards}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SUBSECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsubsection{International}
|
\cvsubsection{International}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
[~ _.each(r.recognition, function(rec) { ~]
|
[~ _.each( r.recognition, function(rgn) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{[[ rec.title ]]}
|
{[[ rgn.title ]]} % Award
|
||||||
{[[ rec.event ]]}
|
{[[ rgn.from ]]} % Event
|
||||||
{[[ rec.location ]]}
|
{[[ rgn.location ]]} % Location
|
||||||
{[[ rec.safe.date ]]}
|
{[[ h.date(rgn.date) ]]} % Date(s)
|
||||||
[~ }); ~]
|
|
||||||
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cvhonors}
|
\end{cvhonors}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SUBSECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsubsection{Domestic}
|
\cvsubsection{Domestic}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
|
[~ _.each( r.recognition, function(rgn) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{3rd Place}
|
{[[ rgn.title ]]} % Award
|
||||||
{WITHCON Hacking Competition Final}
|
{[[ rgn.from ]]} % Event
|
||||||
{Seoul, S.Korea}
|
{[[ rgn.location ]]} % Location
|
||||||
{2015}
|
{[[ h.date(rgn.date) ]]} % Date(s)
|
||||||
\cvhonor
|
|
||||||
{Silver Prize}
|
[~ }); ~]
|
||||||
{KISA HDCON Hacking Competition Final}
|
%---------------------------------------------------------
|
||||||
{Seoul, S.Korea}
|
|
||||||
{2013}
|
|
||||||
\cvhonor
|
|
||||||
{2nd Award}
|
|
||||||
{HUST Hacking Festival}
|
|
||||||
{S.Korea}
|
|
||||||
{2013}
|
|
||||||
\cvhonor
|
|
||||||
{3rd Award}
|
|
||||||
{HUST Hacking Festival}
|
|
||||||
{S.Korea}
|
|
||||||
{2010}
|
|
||||||
\cvhonor
|
|
||||||
{3rd Award}
|
|
||||||
{Holyshield 3rd Hacking Festival}
|
|
||||||
{S.Korea}
|
|
||||||
{2012}
|
|
||||||
\cvhonor
|
|
||||||
{2nd Award}
|
|
||||||
{Holyshield 3rd Hacking Festival}
|
|
||||||
{S.Korea}
|
|
||||||
{2011}
|
|
||||||
\cvhonor
|
|
||||||
{5th Place}
|
|
||||||
{PADOCON Hacking Competition Final}
|
|
||||||
{Seoul, S.Korea}
|
|
||||||
{2011}
|
|
||||||
\end{cvhonors}
|
\end{cvhonors}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
@ -1,20 +1,28 @@
|
|||||||
[~ if( r.speaking && r.speaking.length) { ~]
|
[~ if (r.speaking && r.speaking.length) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Presentation}
|
\cvsection{Presentation}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each(r.speaking, function(pres) { ~]
|
[~ _.each( r.speaking, function(spk) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ pres.title ]]}
|
{[[ spk.title ]]} % Role
|
||||||
{[[ pres.event ]]}
|
{[[ spk.event ]])} % Event
|
||||||
{[[ pres.location ]]}
|
{[[ spk.location ]]} % Location
|
||||||
{[[ pres.safe.date ]]}
|
{[[ h.date(spk.date) ]]} % Date(s)
|
||||||
[~ if (pres.highlights && pres.highlights.length) {
|
{[~ if (r.speaking && r.speaking.length) { ~]
|
||||||
~]{
|
\begin{cvitems} % Description(s)
|
||||||
\begin{cvitems}
|
[[ h.pad( spk.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ]]
|
||||||
[~ _.each(pres.highlights, function( high) {
|
|
||||||
~]\item {[[ high ]]}[~ }); ~]
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}
|
[~ } ~]}
|
||||||
[~ } else { ~]{ }[~ } ~]
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
14
themes/awesome/src/latex/examples/resume/summary.tex
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[~ if( r.info && r.info.brief ) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\cvsection{Summary}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\begin{cvparagraph}
|
||||||
|
[[ r.info.brief ]]
|
||||||
|
\end{cvparagraph}
|
||||||
|
[~ } ~]
|
@ -1,21 +1,28 @@
|
|||||||
[~ if( r.writing && r.writing.length ) { ~]
|
[~ if (r.writing && r.writing.length ) { ~]
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\cvsection{Writing}
|
\cvsection{Writing}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
[~ _.each(r.writing, function(wri) { ~]
|
[~ _.each( r.writing, function(wri) { ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{[[ wri.publisher ]]}
|
{[~ print( wri.publisher ? wri.publisher.name : 'Unknown' ) ~]} % Role
|
||||||
{[[ wri.title ]]}
|
{[[ wri.title ]]} % Title
|
||||||
{[[ wri.url ]]}
|
{[[ wri.url ]]} % Location
|
||||||
{[[ wri.safe.date ]] - PRESENT}
|
{[[ h.date(wri.date) ]]} % Date(s)
|
||||||
[~ if( wri.highlights && wri.highlights.length ) { ~]
|
{[~ if (wri.highlights && wri.highlights.length) { ~]
|
||||||
{
|
\begin{cvitems} % Description(s)
|
||||||
\begin{cvitems}
|
[~ print( h.pad( wri.highlights.map( function(h) { return '\\item {' + h + '}' }), -8 ) ) ~]
|
||||||
[~ _.each(wri.highlights, function(high) { ~]
|
|
||||||
\item {[[ high ]]}
|
|
||||||
[~ }); ~]
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}
|
[~ } ~]}
|
||||||
[~ } else { ~]{ }[~ } ~]
|
|
||||||
[~ }); ~]
|
[~ }); ~]
|
||||||
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
[~ } ~]
|
[~ } ~]
|
||||||
|
BIN
themes/awesome/src/latex/fonts/FontAwesome.ttf
Normal file
@ -11,6 +11,7 @@
|
|||||||
"comment": "\\[\\#([\\s\\S]+?)\\#\\]"
|
"comment": "\\[\\#([\\s\\S]+?)\\#\\]"
|
||||||
},
|
},
|
||||||
"leaf": true,
|
"leaf": true,
|
||||||
|
"explicit": true,
|
||||||
"formats": {
|
"formats": {
|
||||||
"latex": {
|
"latex": {
|
||||||
"transform": [
|
"transform": [
|
||||||
@ -22,6 +23,7 @@
|
|||||||
"src/latex/examples/resume/extracurricular.tex",
|
"src/latex/examples/resume/extracurricular.tex",
|
||||||
"src/latex/examples/resume/honors.tex",
|
"src/latex/examples/resume/honors.tex",
|
||||||
"src/latex/examples/resume/presentation.tex",
|
"src/latex/examples/resume/presentation.tex",
|
||||||
|
"src/latex/examples/resume/summary.tex",
|
||||||
"src/latex/examples/resume/writing.tex",
|
"src/latex/examples/resume/writing.tex",
|
||||||
"src/latex/examples/cv/committees.tex",
|
"src/latex/examples/cv/committees.tex",
|
||||||
"src/latex/examples/cv/education.tex",
|
"src/latex/examples/cv/education.tex",
|
||||||
@ -33,10 +35,11 @@
|
|||||||
"src/latex/examples/cv/writing.tex"
|
"src/latex/examples/cv/writing.tex"
|
||||||
],
|
],
|
||||||
"symLinks": {
|
"symLinks": {
|
||||||
"src/latex/examples/awesome-cv.cls": "../awesome-cv.cls",
|
"latex/examples/awesome-cv.cls": "../awesome-cv.cls",
|
||||||
"src/latex/examples/fontawesome.sty": "../fontawesome.sty",
|
"latex/examples/fontawesome.sty": "../fontawesome.sty",
|
||||||
"src/latex/examples/fonts": "../fonts"
|
"latex/examples/fonts": "../fonts"
|
||||||
}
|
},
|
||||||
|
"exclude": ["fontawesome.sty","README.md","package.json"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"message": "Don't forget to run 'xelatex <myresume.tex>' in the generated latex/examples folder to complete your resume build! For more info, see the theme README at https://github.com/fluentdesk/fresh-themes/blob/master/themes/awesome/README.md."
|
"message": "Don't forget to run 'xelatex <myresume.tex>' in the generated latex/examples folder to complete your resume build! For more info, see the theme README at https://github.com/fluentdesk/fresh-themes/blob/master/themes/awesome/README.md."
|
||||||
|
39
themes/modern-lancer/README.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
Theme: Modern-Lancer
|
||||||
|
===============
|
||||||
|
A contemporary technical résumé theme with tweaks for freelancers. Features colored progress bars
|
||||||
|
representing skill levels and Font Awesome icons for section headers.
|
||||||
|
Adds a picture and projects to the standard modern theme.
|
||||||
|
Also adds social info to contact data for Github/Bitbucket and the like, puts an image to the right,
|
||||||
|
renames the employment section to work, adds a section for languages and extracurricular.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Use
|
||||||
|
|
||||||
|
Note: In order to display colored progress bars as in the below image, your resume should include a `level` annotation for each skill:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "JavaScript",
|
||||||
|
"level": "master",
|
||||||
|
"skills": [
|
||||||
|
"Node.js", "Angular.js", "jQuery", "Bootstrap", "React.js", "Backbone.js"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Database",
|
||||||
|
"level": "intermediate",
|
||||||
|
"skills": [
|
||||||
|
"MySQL", "PostgreSQL", "NoSQL", "ORM", "Hibernate"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Valid values for `level` are `master`, `advanced`, `intermediate`, `beginner`,
|
||||||
|
or a number between 1 and 10.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT. See [LICENSE.md][lic] for details.
|
||||||
|
|
||||||
|
[lic]: https://github.com/fluentdesk/fresh-themes/blob/master/LICENSE.md
|
BIN
themes/modern-lancer/anon.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
themes/modern-lancer/modern.png
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
themes/modern-lancer/src/_img/fa-building.png
Normal file
After Width: | Height: | Size: 761 B |
BIN
themes/modern-lancer/src/_img/fa-child.png
Normal file
After Width: | Height: | Size: 489 B |
BIN
themes/modern-lancer/src/_img/fa-code.png
Normal file
After Width: | Height: | Size: 640 B |
BIN
themes/modern-lancer/src/_img/fa-mortar-board.png
Normal file
After Width: | Height: | Size: 845 B |
BIN
themes/modern-lancer/src/_img/fa-pencil.png
Normal file
After Width: | Height: | Size: 512 B |
BIN
themes/modern-lancer/src/_img/fa-person.png
Normal file
After Width: | Height: | Size: 594 B |
BIN
themes/modern-lancer/src/_img/fa-trophy.png
Normal file
After Width: | Height: | Size: 706 B |
525
themes/modern-lancer/src/modern-doc.xml
Normal file
@ -0,0 +1,525 @@
|
|||||||
|
{{! <!--
|
||||||
|
|
||||||
|
Welcome to the annotated DOC template of the MODERN theme. This is the
|
||||||
|
template used to generate the output DOC (MS Word) format of your resume when
|
||||||
|
you choose the "modern" theme in HackMyResume or FluentCV.
|
||||||
|
|
||||||
|
These comments will be stripped when the resume is generated.
|
||||||
|
|
||||||
|
FRESH themes are just plain text documents with a bit of template magic
|
||||||
|
built in via Handlebars or Underscore (in this case, Handlebars). Here we're
|
||||||
|
buildng a DOC version of the theme, so we'll create an otherwise normal .DOC
|
||||||
|
document in Word XML 2003 format with WordProcessingML (an XML dialect), then
|
||||||
|
inject data into it using special tags. Where does the data come from? From
|
||||||
|
our FRESH or JSON Resume-format resume, represented in this template through
|
||||||
|
the "r" and "RAW" objects.
|
||||||
|
|
||||||
|
r.some-propery
|
||||||
|
r.some-method
|
||||||
|
RAW.some-other-propery
|
||||||
|
|
||||||
|
So let's begin with a standard <xml> tag and WordProcessingML prelude.
|
||||||
|
|
||||||
|
--> }}
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?mso-application progid="Word.Document"?>
|
||||||
|
<w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">
|
||||||
|
<w:ignoreSubtree w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/>
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
|
||||||
|
An MS Word document consists of a series of optional and required sections
|
||||||
|
for things like document properties, font information, and document styles.
|
||||||
|
FRESH provides predefined partials for all of these that you can use, or
|
||||||
|
you can always create your own custom markup. Here, we'll go ahead and pull
|
||||||
|
in predefined versions for these Word 2003 XML sections:
|
||||||
|
|
||||||
|
<o:DocumentProperties>
|
||||||
|
<w:fonts>
|
||||||
|
<w:lists>
|
||||||
|
|
||||||
|
To do that, we'll use the Handlebars partial syntax and pull in the
|
||||||
|
sections one after the other.
|
||||||
|
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{> doc-properties }}
|
||||||
|
{{> doc-fonts }}
|
||||||
|
{{> doc-lists }}
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
|
||||||
|
The <styles> section contains named style definitions for the Word document.
|
||||||
|
Here we can adjust fonts, paragraph settings, and make other stylistic
|
||||||
|
changes specific to the Word format of this resume. There's also a prebuilt
|
||||||
|
section partial we could use here (section/doc-styles) but that would make
|
||||||
|
it difficult to edit invidual styles.
|
||||||
|
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
<w:styles>
|
||||||
|
<w:style w:type="paragraph" w:default="on" w:styleId="Normal">
|
||||||
|
<w:name w:val="Normal"/>
|
||||||
|
<w:rsid w:val="002743C8"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:rFonts w:ascii="{{{fontFace 'default' 'Calibri'}}}" w:h-ansi="{{{fontFace 'default' 'Calibri'}}}"/>
|
||||||
|
<wx:font wx:val="{{{fontFace 'default' 'Calibri'}}}"/>
|
||||||
|
<w:sz-cs w:val="24"/>
|
||||||
|
<w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:pPr>
|
||||||
|
<w:jc w:val="both"/>
|
||||||
|
</w:pPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Heading1">
|
||||||
|
<w:name w:val="heading 1"/>
|
||||||
|
<wx:uiName wx:val="Heading 1"/>
|
||||||
|
<w:basedOn w:val="Normal"/>
|
||||||
|
<w:link w:val="Heading1Char"/>
|
||||||
|
<w:rsid w:val="00505903"/>
|
||||||
|
<w:pPr>
|
||||||
|
<w:spacing w:before="100" w:before-autospacing="on"/>
|
||||||
|
<w:outlineLvl w:val="0"/>
|
||||||
|
<w:pBdr>
|
||||||
|
<w:top w:val="single" w:sz="6" w:space="1" w:color="#EEEEEE" />
|
||||||
|
</w:pBdr>
|
||||||
|
</w:pPr>
|
||||||
|
<w:rPr>
|
||||||
|
<wx:font wx:val="{{{fontFace 'heading1' 'Calibri'}}}"/>
|
||||||
|
<w:rFonts w:ascii="{{{fontFace 'heading1' 'Calibri'}}}" w:h-ansi="{{{fontFace 'heading1' 'Calibri'}}}"/>
|
||||||
|
<w:color w:val="AEAAAA"/>
|
||||||
|
<w:kern w:val="36"/>
|
||||||
|
<w:sz w:val="40"/>
|
||||||
|
<w:sz-cs w:val="40"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Heading2">
|
||||||
|
<w:name w:val="heading 2"/>
|
||||||
|
<wx:uiName wx:val="Heading 2"/>
|
||||||
|
<w:basedOn w:val="Normal"/>
|
||||||
|
<w:link w:val="Heading2Char"/>
|
||||||
|
<w:rsid w:val="00505903"/>
|
||||||
|
<w:pPr>
|
||||||
|
<w:spacing w:before="600"/>
|
||||||
|
<w:outlineLvl w:val="1"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:rPr>
|
||||||
|
<w:color w:val="595959"/>
|
||||||
|
<wx:font wx:val="{{{fontFace 'heading2' 'Calibri'}}}"/>
|
||||||
|
<w:rFonts w:ascii="{{{fontFace 'heading2' 'Calibri'}}}" w:h-ansi="{{{fontFace 'heading2' 'Calibri'}}}"/>
|
||||||
|
<w:b/>
|
||||||
|
<w:b-cs/>
|
||||||
|
<!-- <w:caps/> -->
|
||||||
|
<w:sz-cs w:val="28"/>
|
||||||
|
<w:sz w:val="28"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Heading3">
|
||||||
|
<w:name w:val="heading 3"/>
|
||||||
|
<wx:uiName wx:val="Heading 3"/>
|
||||||
|
<w:basedOn w:val="Normal"/>
|
||||||
|
<w:link w:val="Heading3Char"/>
|
||||||
|
<w:rsid w:val="001B7422"/>
|
||||||
|
<w:pPr>
|
||||||
|
<w:spacing w:before="240" w:after="100" w:after-autospacing="on"/>
|
||||||
|
<w:outlineLvl w:val="2"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:rPr>
|
||||||
|
<wx:font wx:val="Calibri"/>
|
||||||
|
<w:b/>
|
||||||
|
<w:b-cs/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="FromTo">
|
||||||
|
<w:name w:val="FromTo"/>
|
||||||
|
<w:rsid w:val="004E2103"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:rFonts w:ascii="Calibri" w:h-ansi="Calibri"/>
|
||||||
|
<w:b w:val="off"/>
|
||||||
|
<w:b-cs/>
|
||||||
|
<w:color w:val="AEAAAA"/>
|
||||||
|
<w:sz w:val="28"/>
|
||||||
|
<w:sz-cs w:val="28"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont">
|
||||||
|
<w:name w:val="Default Paragraph Font"/>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="table" w:default="on" w:styleId="TableNormal">
|
||||||
|
<w:name w:val="Normal Table"/>
|
||||||
|
<wx:uiName wx:val="Table Normal"/>
|
||||||
|
<w:rPr>
|
||||||
|
<wx:font wx:val="Times New Roman"/>
|
||||||
|
<w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:tblPr>
|
||||||
|
<w:tblInd w:w="0" w:type="dxa"/>
|
||||||
|
<w:tblCellMar>
|
||||||
|
<w:top w:w="0" w:type="dxa"/>
|
||||||
|
<w:left w:w="108" w:type="dxa"/>
|
||||||
|
<w:bottom w:w="0" w:type="dxa"/>
|
||||||
|
<w:right w:w="108" w:type="dxa"/>
|
||||||
|
</w:tblCellMar>
|
||||||
|
</w:tblPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="list" w:default="on" w:styleId="NoList">
|
||||||
|
<w:name w:val="No List"/>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="Hyperlink">
|
||||||
|
<w:name w:val="Hyperlink"/>
|
||||||
|
<w:rsid w:val="001B7422"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:strike w:val="off"/>
|
||||||
|
<w:dstrike w:val="off"/>
|
||||||
|
<w:color w:val="2F5496"/>
|
||||||
|
<w:u w:val="none"/>
|
||||||
|
<w:effect w:val="none"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="FollowedHyperlink">
|
||||||
|
<w:name w:val="FollowedHyperlink"/>
|
||||||
|
<w:rsid w:val="001B7422"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:strike w:val="off"/>
|
||||||
|
<w:dstrike w:val="off"/>
|
||||||
|
<w:color w:val="7B0796"/>
|
||||||
|
<w:u w:val="none"/>
|
||||||
|
<w:effect w:val="none"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="Heading2Char">
|
||||||
|
<w:name w:val="Heading 2 Char"/>
|
||||||
|
<w:link w:val="Heading2"/>
|
||||||
|
<w:rsid w:val="00505903"/>
|
||||||
|
<w:rPr>
|
||||||
|
<wx:font wx:val="{{{fontFace 'heading2' 'Calibri'}}}"/>
|
||||||
|
<w:rFonts w:ascii="{{{fontFace 'heading2' 'Calibri'}}}" w:h-ansi="{{{fontFace 'heading2' 'Calibri'}}}"/>
|
||||||
|
<w:b/>
|
||||||
|
<w:b-cs/>
|
||||||
|
<!-- <w:caps/> -->
|
||||||
|
<w:sz-cs w:val="28"/>
|
||||||
|
<w:sz w:val="28"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="Heading3Char">
|
||||||
|
<w:name w:val="Heading 3 Char"/>
|
||||||
|
<w:link w:val="Heading3"/>
|
||||||
|
<w:rsid w:val="001B7422"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:rFonts w:ascii="{{{fontFace 'heading3' 'Calibri'}}}" w:h-ansi="{{{fontFace 'heading3' 'Calibri'}}}"/>
|
||||||
|
<w:color w:val="1F4D78"/>
|
||||||
|
<w:sz w:val="28"/>
|
||||||
|
<w:sz-cs w:val="28"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="NormalWeb">
|
||||||
|
<w:name w:val="Normal (Web)"/>
|
||||||
|
<w:basedOn w:val="Normal"/>
|
||||||
|
<w:rsid w:val="001B7422"/>
|
||||||
|
<w:pPr>
|
||||||
|
<w:spacing w:before="100" w:before-autospacing="on" w:after="100" w:after-autospacing="on"/>
|
||||||
|
<w:jc w:val="both"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:rPr>
|
||||||
|
<wx:font wx:val="Calibri"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="Heading1Char">
|
||||||
|
<w:name w:val="Heading 1 Char"/>
|
||||||
|
<w:link w:val="Heading1"/>
|
||||||
|
<w:rsid w:val="00505903"/>
|
||||||
|
<w:rPr>
|
||||||
|
<wx:font wx:val="{{{fontFace 'heading1' 'Calibri'}}}"/>
|
||||||
|
<w:rFonts w:ascii="{{{fontFace 'heading1' 'Calibri'}}}" w:h-ansi="{{{fontFace 'heading1' 'Calibri'}}}"/>
|
||||||
|
<w:color w:val="AEAAAA"/>
|
||||||
|
<w:kern w:val="36"/>
|
||||||
|
<w:sz w:val="40"/>
|
||||||
|
<w:sz-cs w:val="40"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="Strong">
|
||||||
|
<w:name w:val="Strong"/>
|
||||||
|
<w:rsid w:val="001B7422"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:b/>
|
||||||
|
<w:b-cs/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="Emphasis">
|
||||||
|
<w:name w:val="Emphasis"/>
|
||||||
|
<w:rsid w:val="001B7422"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:i/>
|
||||||
|
<w:i-cs/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="tenure">
|
||||||
|
<w:name w:val="tenure"/>
|
||||||
|
<w:basedOn w:val="DefaultParagraphFont"/>
|
||||||
|
<w:rsid w:val="001B7422"/>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Title">
|
||||||
|
<w:name w:val="Title"/>
|
||||||
|
<w:basedOn w:val="Normal"/>
|
||||||
|
<w:next w:val="Normal"/>
|
||||||
|
<w:link w:val="TitleChar"/>
|
||||||
|
<w:rsid w:val="002D3B7B"/>
|
||||||
|
<w:pPr>
|
||||||
|
<w:contextualSpacing/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:rPr>
|
||||||
|
<w:rFonts w:ascii="Segoe UI" w:h-ansi="Segoe UI"/>
|
||||||
|
<wx:font wx:val="Segoe UI"/>
|
||||||
|
<w:b/>
|
||||||
|
<w:spacing w:val="-10"/>
|
||||||
|
<w:kern w:val="28"/>
|
||||||
|
<w:sz w:val="48"/>
|
||||||
|
<w:sz-cs w:val="56"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="TitleChar">
|
||||||
|
<w:name w:val="Title Char"/>
|
||||||
|
<w:link w:val="Title"/>
|
||||||
|
<w:rsid w:val="002D3B7B"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:rFonts w:ascii="Segoe UI" w:h-ansi="Segoe UI"/>
|
||||||
|
<w:spacing w:val="-10"/>
|
||||||
|
<w:kern w:val="28"/>
|
||||||
|
<w:sz w:val="48"/>
|
||||||
|
<w:sz-cs w:val="56"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="ListParagraph">
|
||||||
|
<w:name w:val="List Paragraph"/>
|
||||||
|
<w:basedOn w:val="Normal"/>
|
||||||
|
<w:rsid w:val="00C146CA"/>
|
||||||
|
<w:pPr>
|
||||||
|
<w:ind w:left="720"/>
|
||||||
|
<w:contextualSpacing/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:rPr>
|
||||||
|
<wx:font wx:val="Calibri"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Summary">
|
||||||
|
<w:name w:val="Summary"/>
|
||||||
|
<w:basedOn w:val="Normal"/>
|
||||||
|
<w:link w:val="SummaryChar"/>
|
||||||
|
<w:rsid w:val="00A210E1"/>
|
||||||
|
<w:pPr>
|
||||||
|
<w:spacing w:before="120"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:rPr>
|
||||||
|
<wx:font wx:val="Calibri"/>
|
||||||
|
<w:color w:val="767171"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
<w:style w:type="character" w:styleId="SummaryChar">
|
||||||
|
<w:name w:val="Summary Char"/>
|
||||||
|
<w:link w:val="Summary"/>
|
||||||
|
<w:rsid w:val="00A210E1"/>
|
||||||
|
<w:rPr>
|
||||||
|
<w:rFonts w:ascii="Calibri" w:h-ansi="Calibri"/>
|
||||||
|
<w:sz-cs w:val="24"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:style>
|
||||||
|
</w:styles>
|
||||||
|
|
||||||
|
{{> doc-pr }}
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
|
||||||
|
That bring us to the <w:body> element, where the meat of the Word document
|
||||||
|
is stored.
|
||||||
|
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
<w:body>
|
||||||
|
<wx:sect>
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
Let's create a paragraph containing the user's name. This is the Word
|
||||||
|
concept of a paragraph, not quite the same as a normal paragraph, but
|
||||||
|
close enough. We'll use <w:p> and adorn with a <w:pPr> (paragraph
|
||||||
|
properties) that sets the style of this paragraph to "Title". We don't
|
||||||
|
have to do it this way -- we can insert arbitrary styled content here
|
||||||
|
-- but in practice this is how many Word docs are set up.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="00C146CA" wsp:rsidRDefault="007D096C" wsp:rsidP="00C146CA">
|
||||||
|
<w:pPr>
|
||||||
|
<w:pStyle w:val="Title"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:r>
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
Emit the candidate's name into the paragraph, accessible as the
|
||||||
|
.name property on "r", which is the FRESH or JSON Resume resume
|
||||||
|
object. Now, we're creating XML content here, which means that we
|
||||||
|
potentially need to XML-encode the raw text values from the JSON
|
||||||
|
resume model. Luckily, this has already been done for us. Every
|
||||||
|
string property on "r" is already XML-encoded (for Word formats).
|
||||||
|
So we'll use Handlebars triple-bracket syntax to make sure the
|
||||||
|
value isn't further encoded.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
<w:t>{{{ r.name }}}</w:t>
|
||||||
|
</w:r>
|
||||||
|
</w:p>
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
Let's create another paragraph, using the <w:p> element. The paragraph
|
||||||
|
will contain the candidate's contact info. We'll wrap the whole thing
|
||||||
|
with an #if so that none of the content gets emitted if the resume
|
||||||
|
doesnt have a contact info section (some don't).
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{#if r.contact }}
|
||||||
|
<w:p wsp:rsidR="00C146CA" wsp:rsidRDefault="00505903" wsp:rsidP="00C146CA">
|
||||||
|
<w:pPr>
|
||||||
|
<w:rPr>
|
||||||
|
<w:sz-cs w:val="20"/>
|
||||||
|
</w:rPr>
|
||||||
|
</w:pPr>
|
||||||
|
<w:hlink w:dest="mailto:{{{ r.contact.email }}}">
|
||||||
|
<w:r wsp:rsidRPr="003876BF">
|
||||||
|
<w:rPr>
|
||||||
|
<w:rStyle w:val="Hyperlink"/>
|
||||||
|
<w:sz w:val="16"/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:t>{{{ r.contact.email }}}<w:br/></w:t>
|
||||||
|
</w:r>
|
||||||
|
</w:hlink>
|
||||||
|
<w:r wsp:rsidR="00C146CA" wsp:rsidRPr="000A3AF0">
|
||||||
|
<w:rPr>
|
||||||
|
<w:sz w:val="16"/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:t>{{{ r.contact.phone }}}<w:br/></w:t>
|
||||||
|
</w:r>
|
||||||
|
<w:hlink w:dest="{{{ r.contact.website }}}">
|
||||||
|
<w:r wsp:rsidRPr="003876BF">
|
||||||
|
<w:rPr>
|
||||||
|
<w:rStyle w:val="Hyperlink"/>
|
||||||
|
<w:sz w:val="16"/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:t>{{{ r.contact.website }}}</w:t>
|
||||||
|
</w:r>
|
||||||
|
</w:hlink>
|
||||||
|
</w:p>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
|
||||||
|
We could continue creating custom XML / WordProcessingML content as above,
|
||||||
|
but instead, let's use some predefined "section partials" for the rest
|
||||||
|
of the resume. A section partial is a fragment of markup (XML, in this
|
||||||
|
case) representing a single section of a resume. FRESH provides pre-
|
||||||
|
defined section partials for all resume sections that you can use and
|
||||||
|
override at will.
|
||||||
|
|
||||||
|
First let's create the candidate's INFO or SUMMARY section using the
|
||||||
|
"info" partial. "info" is a theme-specific partial owned by the modern
|
||||||
|
theme.
|
||||||
|
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{#section "info"}}{{> info }}{{/section}}
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
|
||||||
|
Now let's create the candidate's SKILLS section. The Modern theme uses
|
||||||
|
a skills section with colored skill bars representing the candidate's
|
||||||
|
proficiency with each skill. That's fairly complex to do in Word, and
|
||||||
|
specific to the Modern theme, so we've placed it in the "skills" partial.
|
||||||
|
Like the "info" partial, the "skills" partial is defined by the Modern
|
||||||
|
theme.
|
||||||
|
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{#section "skills"}}{{> skills }}{{/section}}
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
|
||||||
|
...and we're done with major customizations for this theme. For the rest
|
||||||
|
of the resume, we'll used predefined SECTION PARTIALS provided by FRESH.
|
||||||
|
The only customization we'll make is overriding the header icon of each
|
||||||
|
partial to use our special embedded FontAwesome image.
|
||||||
|
|
||||||
|
We'll start with the EMPLOYMENT section.
|
||||||
|
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
|
||||||
|
{{!<!-- Create an INLINE PARTIAL called "header-employment". This does
|
||||||
|
not itself render any content. Like any other partial, this one has to
|
||||||
|
be invoked from somewhere in order to actually be rendered. -->}}
|
||||||
|
|
||||||
|
{{#*inline "header-employment"}}
|
||||||
|
|
||||||
|
{{!<!-- Set the content of the partial. We could embed XML directly
|
||||||
|
here, but instead we'll reference the "header-icon" partial provided
|
||||||
|
by FRESH, passing in _title, _section, and _icon values so the the
|
||||||
|
"header-icon" partial knows how to render. -->}}
|
||||||
|
|
||||||
|
{{> header-icon _title="EMPLOYMENT" _section="employment" _icon="pict/emp" }}
|
||||||
|
|
||||||
|
{{!<!-- End the partial -->}}
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
Do the same for each of the other sections. Again, we're just declaring
|
||||||
|
inline partials (templates) here. We're not actually rendering these
|
||||||
|
partials yet.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{#*inline "header-projects"}}{{> header-icon _title="PROJECTS" _section="projects" _icon="pict/star" }}{{/inline}}
|
||||||
|
{{#*inline "header-governance"}}{{> header-icon _title="GOVERNANCE" _section="governance" _icon="pict/justice-scales" }}{{/inline}}
|
||||||
|
{{#*inline "header-education"}}{{> header-icon _title="EDUCATION" _section="education" _icon="pict/edu" }}{{/inline}}
|
||||||
|
{{#*inline "header-service"}}{{> header-icon _title="SERVICE" _section="service" _icon="pict/srv" }}{{/inline}}
|
||||||
|
{{#*inline "header-affiliation"}}{{> header-icon _title="AFFILIATION" _section="affiliation" _icon="pict/share-alt" }}{{/inline}}
|
||||||
|
{{#*inline "header-writing"}}{{> header-icon _title="WRITING" _section="writing" _icon="pict/wri" }}{{/inline}}
|
||||||
|
{{#*inline "header-reading"}}{{> header-icon _title="READING" _section="reading" _icon="pict/book" }}{{/inline}}
|
||||||
|
{{#*inline "header-recognition"}}{{> header-icon _title="RECOGNITION" _section="recognition" _icon="pict/rec" }}{{/inline}}
|
||||||
|
{{#*inline "header-speaking"}}{{> header-icon _title="SPEAKING" _section="speaking" _icon="pict/group" }}{{/inline}}
|
||||||
|
{{#*inline "header-references"}}{{> header-icon _title="REFERENCES" _section="references" _icon="pict/thumbs-up" }}{{/inline}}
|
||||||
|
{{#*inline "header-interests"}}{{> header-icon _title="INTERESTS" _section="interests" _icon="pict/bicycle" }}{{/inline}}
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
|
||||||
|
Now, render each of the remaining sections of the resume in turn. We
|
||||||
|
could emit custom markup for these, but instead we'll take advantage
|
||||||
|
of the predefined "section partials" provided by FRESH, which have
|
||||||
|
names like "section/employment", "section/projects", etc. We'll wrap
|
||||||
|
each section in the special "#section" helper provided by the runtime
|
||||||
|
environment (HackMyResume or FluentCV) in order to allow sections to
|
||||||
|
be selectived hidden or ignored based on users preferences or when the
|
||||||
|
section isn't present or is present but has no items.
|
||||||
|
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{#section "employment"}}{{> section/employment }}{{/section}}
|
||||||
|
{{#section "projects"}}{{> section/projects }}{{/section}}
|
||||||
|
{{#section "governance"}}{{> section/governance }}{{/section}}
|
||||||
|
{{#section "education"}}{{> section/education }}{{/section}}
|
||||||
|
{{#section "service"}}{{> section/service }}{{/section}}
|
||||||
|
{{#section "affiliation"}}{{> section/affiliation }}{{/section}}
|
||||||
|
{{#section "writing"}}{{> section/writing }}{{/section}}
|
||||||
|
{{#section "writing"}}{{> section/reading }}{{/section}}
|
||||||
|
{{#section "recognition"}}{{> section/recognition }}{{/section}}
|
||||||
|
{{#section "speaking"}}{{> section/speaking }}{{/section}}
|
||||||
|
{{#section "interests"}}{{> section/interests }}{{/section}}
|
||||||
|
{{#section "references"}}{{> section/references }}{{/section}}
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
And we're done! Close off the word document and go home.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
<w:sectPr wsp:rsidR="00B43FDC" wsp:rsidRPr="000A3AF0" wsp:rsidSect="001B7422">
|
||||||
|
<w:pgSz w:w="12240" w:h="15840"/>
|
||||||
|
<w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/>
|
||||||
|
<w:cols w:space="720"/>
|
||||||
|
<w:docGrid w:line-pitch="360"/>
|
||||||
|
</w:sectPr>
|
||||||
|
</wx:sect>
|
||||||
|
</w:body>
|
||||||
|
</w:wordDocument>
|
244
themes/modern-lancer/src/modern-html.css
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
{{!
|
||||||
|
|
||||||
|
Templatized CSS file for the Modern theme. Expanded by Handlebars during
|
||||||
|
resume generation.
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: {{{fontList 'default'}}};
|
||||||
|
font-size: 15px;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.42857143;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Typical page borders are awkward when rendered to PDF. */
|
||||||
|
body.pdf {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Adobe or wkhtmltopdf has issues with the <main> tag, so we use <div> for
|
||||||
|
the PDF case, <main> for the HTML case, and style both via an ID. */
|
||||||
|
#main {
|
||||||
|
background-color: #FFF;
|
||||||
|
margin: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #E6E6E6;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.pdf > #main {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container > header {
|
||||||
|
padding-top: 3em;
|
||||||
|
/*padding-bottom: 10em;*/
|
||||||
|
height: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container #picture {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#container > header span.fa {
|
||||||
|
position: relative;
|
||||||
|
/*color: green;*/
|
||||||
|
font-size: inherit;
|
||||||
|
left: 0px;
|
||||||
|
top: -2px;
|
||||||
|
/*top: 4px;*/
|
||||||
|
/*left: -50px;*/
|
||||||
|
/*font-size: 30px;*/
|
||||||
|
/*color: #BFC1C3;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#summary {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
body.pdf #container > header {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main > #container > section {
|
||||||
|
margin-left: 3em;
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.fa
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
/*left: -50px;*/
|
||||||
|
left: -1.5em;
|
||||||
|
font-size: 30px;
|
||||||
|
color: #BFC1C3;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid #EEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tenure, .keywords {
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 46px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
color: #BFC1C3;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a, a:visited {
|
||||||
|
color: #428BCA;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.defunct {
|
||||||
|
color: #989898;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#summary > p > strong {
|
||||||
|
font-size: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.label-keyword {
|
||||||
|
display: inline-block;
|
||||||
|
background: #7eb0db;
|
||||||
|
color: white;
|
||||||
|
font-size: 0.9em;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid #357ebd;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-skills {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.card-nested {
|
||||||
|
min-height: 0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
border-width: 1px 0 0 0;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background: #FFF;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skill-level {
|
||||||
|
border-radius: 3px;
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
left: 0;
|
||||||
|
width: 10px;
|
||||||
|
box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress {
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 3px;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
-webkit-transition: height 1s ease;
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress.beginner {
|
||||||
|
height: 50%;
|
||||||
|
background: #e74c3c;
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress.intermediate {
|
||||||
|
height: 70%;
|
||||||
|
background: #f1c40f;
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress.advanced {
|
||||||
|
height: 80%;
|
||||||
|
background: #428bca;
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress.master {
|
||||||
|
height: 95%;
|
||||||
|
background: #5cb85c;
|
||||||
|
}
|
||||||
|
.skill-info {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.skill-info {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-unstyled {
|
||||||
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-skills {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.space-top {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#elevator-pitch {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24px;
|
||||||
|
color: #BFC1C3;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.res-label {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:focus {outline: none; }
|
218
themes/modern-lancer/src/modern-html.html
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>{{ RAW.name }}</title>
|
||||||
|
|
||||||
|
{{!<!-- TODO: Optimize Google Fonts and Font Awesome access. -->}}
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'>
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
|
||||||
|
{{{styleSheet "modern-html.css"}}}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<main id="main"> {{!<!-- Use your container markup of choice here -->}}
|
||||||
|
<div id="container">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
<div class="left">
|
||||||
|
<h1>{{{ r.name }}}</h1>
|
||||||
|
|
||||||
|
<div id="contact">
|
||||||
|
{{#if r.contact.email}}<div><span class="fa fa-lg fa-envelope"></span> <a href="mailto:{{{ RAW.contact.email }}}">{{ RAW.contact.email }}</a></div>{{/if}}
|
||||||
|
{{#if r.contact.website}}<div><span class="fa fa-lg fa-firefox"></span> <a href="{{{ RAW.contact.website }}}">{{ RAW.contact.website }}</a></div>{{/if}}
|
||||||
|
{{#if r.contact.phone}}<div><span class="fa fa-lg fa-phone"></span> {{ RAW.contact.phone }}</div>{{/if}}
|
||||||
|
{{#if r.contact.skype}}<div><span class="fa fa-lg fa-skype"></span> {{ RAW.contact.skype }}</div>{{/if}}
|
||||||
|
{{#each r.social}}
|
||||||
|
<div class="social">
|
||||||
|
<span class="fa fa-lg fa-{{toLower label}}"></span> <a href="{{url}}">{{url}}</a>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{#if r.info.image}}<div id="picture" class="right"><img class="profile-pic media-object img-circle center-block" height="128" width="128" itemprop="image" alt="128x128" src="{{{ r.info.image }}}"></div>{{/if}}
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
{{#*inline "icon-info"}}<span class="fa fa-lg fa-info"></span>{{/inline}}
|
||||||
|
{{> section/info _icon="icon-info" }}
|
||||||
|
|
||||||
|
{{#section 'skills' }}
|
||||||
|
<hr>
|
||||||
|
<section id="skills">
|
||||||
|
<header>
|
||||||
|
<h2>{{{sectionTitle "Skills"}}}</h2>
|
||||||
|
</header>
|
||||||
|
<span class="fa fa-lg fa-code"></span>
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
{{#each r.skills.sets}}
|
||||||
|
<li class="card card-nested card-skills">
|
||||||
|
<div class="skill-level" rel="tooltip" title="{{ level }}" data-placement="left">
|
||||||
|
<div class="skill-progress {{toLower level }}"></div>
|
||||||
|
</div>
|
||||||
|
<div class="skill-info">
|
||||||
|
<strong>{{ name }}</strong>
|
||||||
|
<div class="space-top labels">
|
||||||
|
{{#if skills}}
|
||||||
|
{{#each skills}}
|
||||||
|
<span class="label label-keyword">{{ this }}</span>
|
||||||
|
{{/each}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
{{/section}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#*inline "body-projects" }}
|
||||||
|
<div>
|
||||||
|
<h3>{{#if role}}<em>{{camelCase role }}</em>,{{/if}}
|
||||||
|
{{#if url}}
|
||||||
|
<a href="{{{ url }}}">{{ title }}</a>
|
||||||
|
{{else}}
|
||||||
|
{{ title }}
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
|
{{#if start}}<span class="tenure">{{dateRange .}}</span>{{/if}}
|
||||||
|
{{#if keywords}}
|
||||||
|
{{#if start}}| {{/if}}<span class="keywords">{{#each keywords}}{{{ . }}} {{/each}}</span>
|
||||||
|
{{/if}}
|
||||||
|
{{{ summary }}}
|
||||||
|
{{> highlights }}
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{#*inline "icon-projects"}}<span class="fa fa-lg fa-star"></span>{{/inline}}
|
||||||
|
|
||||||
|
{{> section/projects _icon="icon-projects"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#*inline "icon-employment"}}<span class="fa fa-lg fa-building"></span>{{/inline}}
|
||||||
|
{{#*inline "header-employment" }}
|
||||||
|
{{> header-icon _title="WORK" _section="work" _hdricon=(lookup . '_icon') }}
|
||||||
|
{{/inline}}
|
||||||
|
{{#*inline "body-employment" }}
|
||||||
|
<div>
|
||||||
|
<h3><em>{{ position }}</em>,
|
||||||
|
{{#if url }}
|
||||||
|
<a href="{{{ url }}}">{{ employer }}</a>
|
||||||
|
{{else}}
|
||||||
|
{{ employer }}
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
|
<span class="tenure">{{dateRange .}}</span>
|
||||||
|
{{#if keywords}}
|
||||||
|
{{#if start}}| {{/if}}<span class="keywords">{{#each keywords}}{{{ . }}} {{/each}}</span>
|
||||||
|
{{/if}}
|
||||||
|
<p>{{{ summary }}}</p>
|
||||||
|
{{> highlights }}
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
{{> section/employment _icon="icon-employment"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#*inline "body-education" }}
|
||||||
|
<div>
|
||||||
|
<h3>{{#if title}}<em>{{ title }}</em>,{{/if}}
|
||||||
|
{{#if url}}
|
||||||
|
<a href="{{{ url }}}">{{ institution }}</a>
|
||||||
|
{{else}}
|
||||||
|
{{ institution }}
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
|
{{#if start}}<span class="tenure">{{dateRange .}}</span>{{/if}}
|
||||||
|
{{#if curriculum}}
|
||||||
|
{{#if start}}| {{/if}}<span class="keywords">{{#each curriculum}}{{{ . }}} {{/each}}</span>
|
||||||
|
{{/if}}
|
||||||
|
{{{ summary }}}
|
||||||
|
{{> highlights }}
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{#*inline "icon-education"}}<span class="fa fa-lg fa-mortar-board"></span>{{/inline}}
|
||||||
|
|
||||||
|
{{> section/education _icon="icon-education"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#if r.languages}}
|
||||||
|
<hr>
|
||||||
|
<section id="languages">
|
||||||
|
<header><span class="fa fa-lg fa-language"></span> <h2>Languages</h2></header>
|
||||||
|
{{#each r.languages}}
|
||||||
|
<div class="language">
|
||||||
|
<h3><em>{{language}}</em></h3> ({{level}})
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</section>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#*inline "body-governance" }}
|
||||||
|
<div>
|
||||||
|
<h3>{{#if role}}<em>{{{ role }}}</em>,{{/if}}
|
||||||
|
{{#if url}}
|
||||||
|
<a href="{{{ url }}}">{{{ organization }}}</a>
|
||||||
|
{{else}}
|
||||||
|
{{{ organization }}}
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
|
{{#if start}}<span class="tenure">{{dateRange .}}</span>{{/if}}
|
||||||
|
{{#if keywords}}
|
||||||
|
{{#if start}}| {{/if}}<span class="keywords">{{#each keywords}}{{{ . }}} {{/each}}</span>
|
||||||
|
{{/if}}
|
||||||
|
{{{ summary }}}
|
||||||
|
{{> highlights }}
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{#*inline "icon-governance"}}<span class="fa fa-lg fa-balance-scale"></span>{{/inline}}
|
||||||
|
|
||||||
|
{{> section/governance _icon="icon-governance"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#*inline "icon-service"}}<span class="fa fa-lg fa-child"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-affiliation"}}<span class="fa fa-lg fa-share-alt"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-samples"}}<span class="fa fa-lg fa-share"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-writing"}}<span class="fa fa-lg fa-pencil"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-reading"}}<span class="fa fa-lg fa-book"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-recognition"}}<span class="fa fa-lg fa-trophy"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-speaking"}}<span class="fa fa-lg fa-users"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-testimonials"}}<span class="fa fa-lg fa-quote-left"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-references"}}<span class="fa fa-lg fa-thumbs-o-up"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-interests"}}<span class="fa fa-lg fa-bicycle"></span>{{/inline}}
|
||||||
|
|
||||||
|
{{> section/service _icon="icon-service"}}
|
||||||
|
{{> section/affiliation _icon="icon-affiliation"}}
|
||||||
|
{{> section/samples _icon="icon-samples"}}
|
||||||
|
{{> section/writing _icon="icon-writing"}}
|
||||||
|
{{> section/reading _icon="icon-reading"}}
|
||||||
|
{{> section/recognition _icon="icon-recognition"}}
|
||||||
|
{{> section/speaking _icon="icon-speaking"}}
|
||||||
|
{{> section/testimonials _icon="icon-testimonials"}}
|
||||||
|
{{> section/references _icon="icon-references"}}
|
||||||
|
{{> section/interests _icon="icon-interests"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#if r.extracurricular}}
|
||||||
|
<hr>
|
||||||
|
<section id="extracurricular">
|
||||||
|
<header><span class="fa fa-lg fa-random"></span> <h2>Extracurricular</h2></header>
|
||||||
|
{{#each r.extracurricular}}
|
||||||
|
<div class="extracurricular">
|
||||||
|
<h3><em>{{title}}</em></h3>
|
||||||
|
{{#if start}}<span class="tenure">{{dateRange .}}</span>{{/if}}
|
||||||
|
<br/><em>Activity: </em>{{activity}}
|
||||||
|
{{#if location}}<br/><em>Location: </em>{{{location}}}{{/if}}
|
||||||
|
{{#if highlights}}<br/><em>Details: </em> {{{highlights}}}{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</section>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
231
themes/modern-lancer/src/modern-pdf.css
Normal file
@ -0,0 +1,231 @@
|
|||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: {{{fontList 'default'}}};
|
||||||
|
font-size: 15px;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.42857143;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Typical page borders are awkward when rendered to PDF. */
|
||||||
|
body {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Adobe or wkhtmltopdf has issues with the <main> tag, so we use <div> for
|
||||||
|
the PDF case, <main> for the HTML case, and style both via an ID. */
|
||||||
|
#main {
|
||||||
|
background-color: #FFF;
|
||||||
|
margin: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #E6E6E6;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > #main {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container > header {
|
||||||
|
padding-top: 1.5em;
|
||||||
|
height: 230px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container #picture {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#container > header span.fa {
|
||||||
|
position: relative;
|
||||||
|
/*color: green;*/
|
||||||
|
font-size: inherit;
|
||||||
|
left: 0px;
|
||||||
|
top: -2px;
|
||||||
|
/*top: 4px;*/
|
||||||
|
/*left: -50px;*/
|
||||||
|
/*font-size: 30px;*/
|
||||||
|
/*color: #BFC1C3;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#summary {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.pdf #container > header {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main > #container > section {
|
||||||
|
margin-left: 3em;
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.fa
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
left: -1.5em;
|
||||||
|
font-size: 30px;
|
||||||
|
color: #BFC1C3;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid #EEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tenure, .keywords {
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 46px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
color: #BFC1C3;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a, a:visited {
|
||||||
|
color: #428BCA;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.defunct {
|
||||||
|
color: #989898;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#summary > p > strong {
|
||||||
|
font-size: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.label-keyword {
|
||||||
|
display: inline-block;
|
||||||
|
background: #7eb0db;
|
||||||
|
color: white;
|
||||||
|
font-size: 0.9em;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid #357ebd;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-skills {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.card-nested {
|
||||||
|
min-height: 0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
border-width: 1px 0 0 0;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background: #FFF;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skill-level {
|
||||||
|
border-radius: 3px;
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
left: 0;
|
||||||
|
width: 10px;
|
||||||
|
box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress {
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 3px;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
-webkit-transition: height 1s ease;
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress.beginner {
|
||||||
|
height: 50%;
|
||||||
|
background: #e74c3c;
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress.intermediate {
|
||||||
|
height: 70%;
|
||||||
|
background: #f1c40f;
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress.advanced {
|
||||||
|
height: 80%;
|
||||||
|
background: #428bca;
|
||||||
|
}
|
||||||
|
.skill-level .skill-progress.master {
|
||||||
|
height: 95%;
|
||||||
|
background: #5cb85c;
|
||||||
|
}
|
||||||
|
.skill-info {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.skill-info {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-unstyled {
|
||||||
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-skills {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.space-top {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#elevator-pitch {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24px;
|
||||||
|
color: #BFC1C3;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.res-label {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
387
themes/modern-lancer/src/modern-pdf.html
Normal file
@ -0,0 +1,387 @@
|
|||||||
|
{{! <!--
|
||||||
|
|
||||||
|
Welcome to the annotated HTML template of the MODERN theme. This is the
|
||||||
|
template used to generate the output HTML format of your resume when you
|
||||||
|
choose the "modern" theme in HackMyResume or FluentCV.
|
||||||
|
|
||||||
|
These comments will be stripped when the resume is generated.
|
||||||
|
|
||||||
|
FRESH themes are just plain text documents with a bit of template magic
|
||||||
|
built in via Handlebars or Underscore (in this case, Handlebars). Here we're
|
||||||
|
buildng an HTML version of the theme, so we'll create an otherwise normal HTML
|
||||||
|
document, then inject data into it using special tags. Where does the data
|
||||||
|
come from? From our FRESH or JSON Resume-format resume, represented in this
|
||||||
|
template through the "r" and "RAW" objects.
|
||||||
|
|
||||||
|
r.some-propery
|
||||||
|
r.some-method
|
||||||
|
RAW.some-other-propery
|
||||||
|
|
||||||
|
So let's begin with a standard HTML 5 doctype and prelude.
|
||||||
|
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Set the document <title> to the candidate's name. We use RAW.name here,
|
||||||
|
instead of r.name, because RAW gives us the text *as entered by the user*.
|
||||||
|
The double bracket notation automatically encodes this value. If we wanted
|
||||||
|
the unencoded raw value, we'd use triple brackets as in
|
||||||
|
((( RAW.name ))).
|
||||||
|
--> }}
|
||||||
|
<title>{{ RAW.name }}</title>
|
||||||
|
|
||||||
|
{{!<!-- TODO: Optimize Google Fonts and Font Awesome access. -->}}
|
||||||
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'>
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Link in the resume's stylesheet. We could use a <link> tag here as above,
|
||||||
|
or dump the styles into <style></style>, but there's a handy helper
|
||||||
|
available that allows us to do either, conditionally.
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
{{{styleSheet "modern-pdf.css"}}}
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Now, depending on options, "modern-html.css" will either be embedded
|
||||||
|
via <style> stags, or linked via <link>. Users can control this via
|
||||||
|
(for example) the --css option in HackMyResume.
|
||||||
|
|
||||||
|
Why might you want to embed CSS into <style> tags when most CSS guides
|
||||||
|
instruct you to use <link>? Because embedded CSS creates a more hardened
|
||||||
|
"standalone" resume with fewer external dependencies. This may not matter
|
||||||
|
in a typical web scenario, but HTML resumes are also used to drive PDF
|
||||||
|
generation, not to mention emailed, viewed locally, etc.
|
||||||
|
|
||||||
|
TL;DR Use the "styleSheet" helper whenever possible.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
So much for the <head> element. Now let's tackle the <body>.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<main id="main"> {{!<!-- Use your container markup of choice here -->}}
|
||||||
|
<div id="container">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Display the candidate's name using "r" (the FRESH or JSON Resume
|
||||||
|
object). Keep in mind that "r" contains the MARKDOWNIFIED version
|
||||||
|
of the text in the user's FRESH or JRS resume because FRESH resume
|
||||||
|
themes support Markdown natively. If you want the un-Markdownified
|
||||||
|
text, you'd use RAW instead.
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
<div class="left">
|
||||||
|
<h1>{{{ r.name }}}</h1>
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Give some basic contact info. Here, the HAS helper is similar
|
||||||
|
to a normal IF, but provides a guaranteed-to-be-safe check against a
|
||||||
|
particular object path. That is, ((#if contact.email)) can error out
|
||||||
|
(throw an exception) if contact is null, depending on Handlebars
|
||||||
|
engine settings, but ((#has 'contact.email')) never will.
|
||||||
|
--> }}
|
||||||
|
<div id="contact">
|
||||||
|
{{#if r.contact.email}}<div><span class="fa fa-lg fa-envelope"></span> <a href="mailto:{{{ RAW.contact.email }}}">{{ RAW.contact.email }}</a></div>{{/if}}
|
||||||
|
{{#if r.contact.website}}<div><span class="fa fa-lg fa-firefox"></span> <a href="{{{ RAW.contact.website }}}">{{ RAW.contact.website }}</a></div>{{/if}}
|
||||||
|
{{#if r.contact.phone}}<div><span class="fa fa-lg fa-phone"></span> {{ RAW.contact.phone }}</div>{{/if}}
|
||||||
|
{{#if r.contact.skype}}<div><span class="fa fa-lg fa-skype"></span> {{ RAW.contact.skype }}</div>{{/if}}
|
||||||
|
{{#each r.social}}
|
||||||
|
<div class="social">
|
||||||
|
<span class="fa fa-lg fa-{{toLower label}}"></span> <a href="{{url}}">{{url}}</a>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{#if r.info.image}}<div id="picture" class="right"><img class="profile-pic media-object img-circle center-block" height="128" width="128" itemprop="image" alt="128x128" src="{{{ r.info.image }}}"></div>{{/if}}
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
Now let's emit the candidate's summary, overriding the icon.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{#*inline "icon-info"}}<span class="fa fa-lg fa-info"></span>{{/inline}}
|
||||||
|
{{> section/info _icon="icon-info" }}
|
||||||
|
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Okay, let's create a custom SKILLS section with colored skill bars.
|
||||||
|
|
||||||
|
Since this is an official resume section, we want to wrap it in the
|
||||||
|
"section" block helper. This allows the section to be selectively
|
||||||
|
omitted from the resume if either a) the section is empty or b) the user
|
||||||
|
tells us to hide it.
|
||||||
|
|
||||||
|
As fpr the colored bars, those are just standard HTML and CSS, with the
|
||||||
|
height and color of each bar linked to the candidate's skill "level" from
|
||||||
|
the resume.
|
||||||
|
|
||||||
|
TL;DR Always wrap your sections with the "section"!
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
|
||||||
|
{{#section 'skills' }}
|
||||||
|
<hr>
|
||||||
|
<section id="skills">
|
||||||
|
<header>
|
||||||
|
<h2>{{{sectionTitle "Skills"}}}</h2>
|
||||||
|
</header>
|
||||||
|
<span class="fa fa-lg fa-code"></span>
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
{{#each r.skills.sets}}
|
||||||
|
<li class="card card-nested card-skills">
|
||||||
|
<div class="skill-level" rel="tooltip" title="{{ level }}" data-placement="left">
|
||||||
|
<div class="skill-progress {{toLower level }}"></div>
|
||||||
|
</div>
|
||||||
|
<div class="skill-info">
|
||||||
|
<strong>{{ name }}</strong>
|
||||||
|
<div class="space-top labels">
|
||||||
|
{{#if skills}}
|
||||||
|
{{#each skills}}
|
||||||
|
<span class="label label-keyword">{{ this }}</span>
|
||||||
|
{{/each}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
{{/section}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#*inline "body-projects" }}
|
||||||
|
<div>
|
||||||
|
<h3>{{#if role}}<em>{{camelCase role }}</em>,{{/if}}
|
||||||
|
{{#if url}}
|
||||||
|
<a href="{{{ url }}}">{{ title }}</a>
|
||||||
|
{{else}}
|
||||||
|
{{ title }}
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
|
{{#if start}}<span class="tenure">{{dateRange .}}</span>{{/if}}
|
||||||
|
{{#if keywords}}
|
||||||
|
{{#if start}}| {{/if}}<span class="keywords">{{#each keywords}}{{{ . }}} {{/each}}</span>
|
||||||
|
{{/if}}
|
||||||
|
{{{ summary }}}
|
||||||
|
{{> highlights }}
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{#*inline "icon-projects"}}<span class="fa fa-lg fa-star"></span>{{/inline}}
|
||||||
|
|
||||||
|
{{> section/projects _icon="icon-projects"}}
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
|
||||||
|
So much for SKILLS. Now let's render the EMPLOYMENT section.
|
||||||
|
|
||||||
|
We could do this manually with custom HTML, like we did with the SKILLS
|
||||||
|
section, but let's take advantage of some predefined partials instead.
|
||||||
|
FRESH provides global partials for all resume sections (employment, skills,
|
||||||
|
education, speaking, etc.). They're named like this:
|
||||||
|
|
||||||
|
section/skills
|
||||||
|
section/employment
|
||||||
|
section/service
|
||||||
|
section/recognition
|
||||||
|
etc..
|
||||||
|
|
||||||
|
So what we want to do is inject the "section/skills" global partial
|
||||||
|
and use it here in our theme. We can do that simply with:
|
||||||
|
|
||||||
|
((> section/skills ))
|
||||||
|
|
||||||
|
(Replace the parentheses with brackets). However, in this case we want to
|
||||||
|
override the heading icon used in the global partial as well as its content.
|
||||||
|
That is, we want to use the "section/employment" partial, but selectively
|
||||||
|
override portions of it with our own markup.
|
||||||
|
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
First, we create an inline partial called "icon-employment." The contents of
|
||||||
|
this partial will be referenced by the section/employment partial we invoke
|
||||||
|
below. This partial doesn't, by itself, render any content -- it's a template.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{#*inline "icon-employment"}}<span class="fa fa-lg fa-building"></span>{{/inline}}
|
||||||
|
|
||||||
|
|
||||||
|
{{!<!--
|
||||||
|
Next we create another inline partial called "body-employment" and set its
|
||||||
|
contents to the markup we'd like to use for the body section of each job. This
|
||||||
|
also doesn't render any content.
|
||||||
|
-->}}
|
||||||
|
|
||||||
|
{{#*inline "header-employment" }}
|
||||||
|
{{> header-icon _title="WORK" _section="work" _hdricon=(lookup . '_icon') }}
|
||||||
|
{{/inline}}
|
||||||
|
{{#*inline "body-employment" }}
|
||||||
|
<div>
|
||||||
|
<h3><em>{{ position }}</em>,
|
||||||
|
{{#if url }}
|
||||||
|
<a href="{{{ url }}}">{{ employer }}</a>
|
||||||
|
{{else}}
|
||||||
|
{{ employer }}
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
|
<span class="tenure">{{dateRange .}}</span>
|
||||||
|
{{#if keywords}}
|
||||||
|
{{#if start}}| {{/if}}<span class="keywords">{{#each keywords}}{{{ . }}} {{/each}}</span>
|
||||||
|
{{/if}}
|
||||||
|
<p>{{{ summary }}}</p>
|
||||||
|
{{> highlights }}
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Actually render the employment section. Invoke the "section/employment"
|
||||||
|
partial (which lives at partials/html/section/employment.html). The header
|
||||||
|
icon and body of each employment stint will be rendered with the markup we
|
||||||
|
defined above.
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
{{> section/employment _icon="icon-employment"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Move on to the PROJECTS section, giving it the same treatment we gave the
|
||||||
|
EMPLOYMENT section.
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Move on to the EDUCATION section, giving it the same treatment we gave the
|
||||||
|
EMPLOYMENT section.
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
|
||||||
|
{{#*inline "body-education" }}
|
||||||
|
<div>
|
||||||
|
<h3>{{#if title}}<em>{{ title }}</em>,{{/if}}
|
||||||
|
{{#if url}}
|
||||||
|
<a href="{{{ url }}}">{{ institution }}</a>
|
||||||
|
{{else}}
|
||||||
|
{{ institution }}
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
|
{{#if start}}<span class="tenure">{{dateRange .}}</span>{{/if}}
|
||||||
|
{{#if curriculum}}
|
||||||
|
{{#if start}}| {{/if}}<span class="keywords">{{#each curriculum}}{{{ . }}} {{/each}}</span>
|
||||||
|
{{/if}}
|
||||||
|
{{{ summary }}}
|
||||||
|
{{> highlights }}
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{#*inline "icon-education"}}<span class="fa fa-lg fa-mortar-board"></span>{{/inline}}
|
||||||
|
|
||||||
|
{{> section/education _icon="icon-education"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#if r.languages}}
|
||||||
|
<hr>
|
||||||
|
<section id="languages">
|
||||||
|
<header><span class="fa fa-lg fa-language"></span> <h2>Languages</h2></header>
|
||||||
|
{{#each r.languages}}
|
||||||
|
<div class="language">
|
||||||
|
<h3><em>{{language}}</em></h3> ({{level}})
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</section>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
Move on to the GOVERNANCE section, giving it the same treatment we gave the
|
||||||
|
EMPLOYMENT section.
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
{{#*inline "body-governance" }}
|
||||||
|
<div>
|
||||||
|
<h3>{{#if role}}<em>{{{ role }}}</em>,{{/if}}
|
||||||
|
{{#if url}}
|
||||||
|
<a href="{{{ url }}}">{{{ organization }}}</a>
|
||||||
|
{{else}}
|
||||||
|
{{{ organization }}}
|
||||||
|
{{/if}}
|
||||||
|
</h3>
|
||||||
|
{{#if start}}<span class="tenure">{{dateRange .}}</span>{{/if}}
|
||||||
|
{{#if keywords}}
|
||||||
|
{{#if start}}| {{/if}}<span class="keywords">{{#each keywords}}{{{ . }}} {{/each}}</span>
|
||||||
|
{{/if}}
|
||||||
|
{{{ summary }}}
|
||||||
|
{{> highlights }}
|
||||||
|
</div>
|
||||||
|
{{/inline}}
|
||||||
|
|
||||||
|
{{#*inline "icon-governance"}}<span class="fa fa-lg fa-balance-scale"></span>{{/inline}}
|
||||||
|
|
||||||
|
{{> section/governance _icon="icon-governance"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
We'll override all section heading icons the same way, for the rest of the
|
||||||
|
resume, using the same inline template technique.
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
{{#*inline "icon-service"}}<span class="fa fa-lg fa-child"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-affiliation"}}<span class="fa fa-lg fa-share-alt"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-samples"}}<span class="fa fa-lg fa-share"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-writing"}}<span class="fa fa-lg fa-pencil"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-reading"}}<span class="fa fa-lg fa-book"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-recognition"}}<span class="fa fa-lg fa-trophy"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-speaking"}}<span class="fa fa-lg fa-users"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-testimonials"}}<span class="fa fa-lg fa-quote-left"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-references"}}<span class="fa fa-lg fa-thumbs-o-up"></span>{{/inline}}
|
||||||
|
{{#*inline "icon-interests"}}<span class="fa fa-lg fa-bicycle"></span>{{/inline}}
|
||||||
|
|
||||||
|
{{! <!--
|
||||||
|
And we're done with the customizations. For the rest of the resume, we'll
|
||||||
|
use the default section partials and style them with whatever CSS we like.
|
||||||
|
--> }}
|
||||||
|
|
||||||
|
{{> section/service _icon="icon-service"}}
|
||||||
|
{{> section/affiliation _icon="icon-affiliation"}}
|
||||||
|
{{> section/samples _icon="icon-samples"}}
|
||||||
|
{{> section/writing _icon="icon-writing"}}
|
||||||
|
{{> section/reading _icon="icon-reading"}}
|
||||||
|
{{> section/recognition _icon="icon-recognition"}}
|
||||||
|
{{> section/speaking _icon="icon-speaking"}}
|
||||||
|
{{> section/testimonials _icon="icon-testimonials"}}
|
||||||
|
{{> section/references _icon="icon-references"}}
|
||||||
|
{{> section/interests _icon="icon-interests"}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#if r.extracurricular}}
|
||||||
|
<hr>
|
||||||
|
<section id="extracurricular">
|
||||||
|
<header><span class="fa fa-lg fa-random"></span> <h2>Extracurricular</h2></header>
|
||||||
|
{{#each r.extracurricular}}
|
||||||
|
<div class="extracurricular">
|
||||||
|
<h3><em>{{title}}</em></h3>
|
||||||
|
{{#if start}}<span class="tenure">{{dateRange .}}</span>{{/if}}
|
||||||
|
<br/><em>Activity: </em>{{activity}}
|
||||||
|
{{#if location}}<br/><em>Location: </em>{{{location}}}{{/if}}
|
||||||
|
{{#if highlights}}<br/><em>Details: </em> {{{highlights}}}{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</section>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
49
themes/modern-lancer/src/partials/info.xml
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<wx:sub-section>
|
||||||
|
{{!-- This pBdrGroup section creates an embedded font-awesome icon image. --}}
|
||||||
|
<wx:pBdrGroup>
|
||||||
|
<wx:borders>
|
||||||
|
<wx:top wx:val="solid" wx:bdrwidth="15" wx:space="1" wx:color="EEEEEE"/>
|
||||||
|
</wx:borders>
|
||||||
|
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="00C146CA" wsp:rsidRDefault="00D1523B" wsp:rsidP="00C146CA">
|
||||||
|
<w:pPr>
|
||||||
|
<w:pStyle w:val="Heading1"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:r>
|
||||||
|
<w:pict>
|
||||||
|
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
|
||||||
|
<v:stroke joinstyle="miter"/>
|
||||||
|
<v:formulas>
|
||||||
|
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
|
||||||
|
<v:f eqn="sum @0 1 0"/>
|
||||||
|
<v:f eqn="sum 0 0 @1"/>
|
||||||
|
<v:f eqn="prod @2 1 2"/>
|
||||||
|
<v:f eqn="prod @3 21600 pixelWidth"/>
|
||||||
|
<v:f eqn="prod @3 21600 pixelHeight"/>
|
||||||
|
<v:f eqn="sum @0 0 1"/>
|
||||||
|
<v:f eqn="prod @6 1 2"/>
|
||||||
|
<v:f eqn="prod @7 21600 pixelWidth"/>
|
||||||
|
<v:f eqn="sum @8 21600 0"/>
|
||||||
|
<v:f eqn="prod @7 21600 pixelHeight"/>
|
||||||
|
<v:f eqn="sum @10 21600 0"/>
|
||||||
|
</v:formulas>
|
||||||
|
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
|
||||||
|
<o:lock v:ext="edit" aspectratio="t"/>
|
||||||
|
</v:shapetype>
|
||||||
|
<w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAThQTFRFv8HDv8LOv8jXv8HEv8zdv8HGv8HIv8LQv8TTv8HOv8bVv8TM2dDOz8zO09bdxcHDw8jTw8HD3crDzcHDz8LDzcLDx8HDwcrZy8bExcrT1crGx8LGycrSy8LD1cjEw87f1cTDw8jM0dLZ3drZ1c7MycTD2cjDycHDz977wc7ixdLqz9rqydLix9buy9r11en/2+Xwz+H71ePx9d7Q7dTI5c7E5dTQ8drO+drM/drM79LG79TI4czE49DK7eHb/ePS///d/+nT/+vV//Hd/efV/evZ//XZ/+PS/+XS//v16ev1/f/////75/H/4fH/8//////1///i8fv///nu5+/7/e/i+//78/n///nz8+/w8/H1++3i9/////vo5fv////w7///4///4f/////x//vw+fHw9/n/////RIkD6QAAAP5JREFUSMdjSCcaMIwqHVVKL6Wedjy8fF7ehJX6GPMzgICALyGlPiYMUMDoR0CpvSBMKQOTP16lAUJwlQzMGniVOggjlDJo4lXqyI+klAWvUifilQaKICnVwqvUxxShklUff2A5iyJ85U0gtlzEoCrFg/BFQbCZhGRIqBRIIZt2mLm0jIE3DqWusqCA1wmPiIyM8o6WA+mQj8GqNFYBarWikrKKKpSti1WpBQMWwB6HRWm8GjalDHpYlLqpY1XKgkWpuyBWpRwJmEotsapk4EzEVGqFQ2kSRUqtiVfqgd1bXP6YSpNtsKlkNsQWWym2mOZyG+FIWT6pkaggDVkWALeXG64AV9ZXAAAAAElFTkSuQmCC</w:binData>
|
||||||
|
<v:shape id="_x0000_i1027" type="#_x0000_t75" style="width:31.5pt;height:31.5pt">
|
||||||
|
<v:imagedata src="wordml://03000001.png" o:title="fa-person"/>
|
||||||
|
</v:shape>
|
||||||
|
</w:pict>
|
||||||
|
</w:r>
|
||||||
|
<w:r wsp:rsidR="00C146CA" wsp:rsidRPr="00C146CA">
|
||||||
|
<w:t>{{{sectionTitle "info" "ABOUT"}}}</w:t>
|
||||||
|
</w:r>
|
||||||
|
</w:p>
|
||||||
|
</wx:pBdrGroup>
|
||||||
|
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="000A3AF0" wsp:rsidRDefault="00C146CA" wsp:rsidP="00A210E1">
|
||||||
|
<w:pPr>
|
||||||
|
<w:pStyle w:val="Summary"/>
|
||||||
|
</w:pPr>
|
||||||
|
{{{wpml r.info.brief true }}}
|
||||||
|
</w:p>
|
||||||
|
</wx:sub-section>
|
120
themes/modern-lancer/src/partials/skills.xml
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
{{#if r.skills }}
|
||||||
|
<wx:sub-section>
|
||||||
|
{{!-- This pBdrGroup section creates an embedded font-awesome icon image. --}}
|
||||||
|
<wx:pBdrGroup>
|
||||||
|
<wx:borders>
|
||||||
|
<wx:top wx:val="solid" wx:bdrwidth="15" wx:space="1" wx:color="EEEEEE"/>
|
||||||
|
</wx:borders>
|
||||||
|
<w:p wsp:rsidR="00C146CA" wsp:rsidRPr="00C146CA" wsp:rsidRDefault="00D1523B" wsp:rsidP="00C146CA">
|
||||||
|
<w:pPr>
|
||||||
|
<w:pStyle w:val="Heading1"/>
|
||||||
|
<w:ind w:left="-720"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:r>
|
||||||
|
<w:pict>
|
||||||
|
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
|
||||||
|
<v:stroke joinstyle="miter"/>
|
||||||
|
<v:formulas>
|
||||||
|
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
|
||||||
|
<v:f eqn="sum @0 1 0"/>
|
||||||
|
<v:f eqn="sum 0 0 @1"/>
|
||||||
|
<v:f eqn="prod @2 1 2"/>
|
||||||
|
<v:f eqn="prod @3 21600 pixelWidth"/>
|
||||||
|
<v:f eqn="prod @3 21600 pixelHeight"/>
|
||||||
|
<v:f eqn="sum @0 0 1"/>
|
||||||
|
<v:f eqn="prod @6 1 2"/>
|
||||||
|
<v:f eqn="prod @7 21600 pixelWidth"/>
|
||||||
|
<v:f eqn="sum @8 21600 0"/>
|
||||||
|
<v:f eqn="prod @7 21600 pixelHeight"/>
|
||||||
|
<v:f eqn="sum @10 21600 0"/>
|
||||||
|
</v:formulas>
|
||||||
|
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
|
||||||
|
<o:lock v:ext="edit" aspectratio="t"/>
|
||||||
|
</v:shapetype>
|
||||||
|
<w:binData w:name="wordml://03000002.png" xml:space="preserve">iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAMAAADyHTlpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPlQTFRFv8HDv8HEv8LQv8LSv8zdv8HGv8LKv8HKv8jXv8bVv8LOwczdzcHDycLEwcHDxcHGycLD18bD1cTDzcLDx8HD28jD08LDw8HD1cbDxcHD2czS1czSy8bEw9Dmzdzxz97xydj1xdLqx9Tqy9jszdz7wc7iy9bu0+P/2ef72e//2/X/+djK4czD6dDE89bK4crD99rM997Q/dzO5c7E89TI997T//vd/efX/+HQ++XT//Hd/+3V/+nT///5+/n/+//////75f//6f///f/////s///q8//////1///37/////vo///k4fH/5//////w4+/7//Hk5fH/////unTQ4QAAAQ1JREFUSMft1GtTQUEYB/A/JSlCoXJJUYqKqNwvFaFDquf7f5h0jrMXe3BmvGrGvnp29jc7O/99dkG2BzZ0Q/8/bbVt01vsd+zRlzskbO5a9jqul9OK78woqgfOV6r5kwtpJYCtN726x3a3F4QruYBO5c6NXr0f4pyofiRbWEhqhNxZUiwsJOWx2yfFwkIOwrgwKslClWJUooUqjahUq9NhAUh1Gf2Lik0eAM+HsKsWhCNtLo8iuGSyeIy9sXRW7YTb5qk7ZyFZAoI1o5qTPFdmeVSyFG7LtDwqWYo9MLMls2fmpNRZU+v8pEdc6bNJWJZyv2rRLyGq79jP8lcgRrXiwTzxqFbR53hm/S/jF09ZANBqGaBnAAAAAElFTkSuQmCC</w:binData>
|
||||||
|
<v:shape id="_x0000_i1028" type="#_x0000_t75" style="width:31.5pt;height:31.5pt">
|
||||||
|
<v:imagedata src="wordml://03000002.png" o:title="fa-code"/>
|
||||||
|
</v:shape>
|
||||||
|
</w:pict>
|
||||||
|
</w:r>
|
||||||
|
<w:r wsp:rsidR="00C146CA" wsp:rsidRPr="00C146CA">
|
||||||
|
<w:t>{{{sectionTitle "SKILLS"}}}</w:t>
|
||||||
|
</w:r>
|
||||||
|
</w:p>
|
||||||
|
</wx:pBdrGroup>
|
||||||
|
|
||||||
|
<w:tbl>
|
||||||
|
<w:tblPr>
|
||||||
|
<w:tblW w:w="0" w:type="auto"/>
|
||||||
|
<w:tblLook w:val="04A0"/>
|
||||||
|
</w:tblPr>
|
||||||
|
<w:tblGrid>
|
||||||
|
<w:gridCol w:w="828"/>
|
||||||
|
<w:gridCol w:w="8748"/>
|
||||||
|
</w:tblGrid>
|
||||||
|
|
||||||
|
{{#each r.skills.sets}}
|
||||||
|
|
||||||
|
<w:tr wsp:rsidR="00427ECC" wsp:rsidTr="00FD3B33">
|
||||||
|
<w:trPr>
|
||||||
|
<w:trHeight w:val="882"/>
|
||||||
|
</w:trPr>
|
||||||
|
<w:tc>
|
||||||
|
<w:tcPr>
|
||||||
|
<w:tcW w:w="828" w:type="dxa"/>
|
||||||
|
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
|
||||||
|
</w:tcPr>
|
||||||
|
<w:p wsp:rsidR="00427ECC" wsp:rsidRDefault="00427ECC" wsp:rsidP="00427ECC">
|
||||||
|
<w:r>
|
||||||
|
<w:rPr>
|
||||||
|
<w:noProof/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:pict>
|
||||||
|
<v:rect id="_x0000_s1028" style="position:absolute;left:0;text-align:left;margin-left:20.6pt;margin-top:1.4pt;width:7.15pt;height:38.25pt;z-index:1" fillcolor="{{{skillColor level}}}" strokeweight="0"/>
|
||||||
|
</w:pict>
|
||||||
|
</w:r>
|
||||||
|
<w:r>
|
||||||
|
<w:rPr>
|
||||||
|
<w:noProof/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:pict>
|
||||||
|
<v:rect id="_x0000_s1026" style="position:absolute;left:0;text-align:left;margin-left:20.6pt;margin-top:1.4pt;width:7.15pt;height:{{{skillHeight level}}}pt;z-index:2" fillcolor="#FFFFFF" strokeweight="0"/>
|
||||||
|
</w:pict>
|
||||||
|
</w:r>
|
||||||
|
</w:p>
|
||||||
|
</w:tc>
|
||||||
|
<w:tc>
|
||||||
|
<w:tcPr>
|
||||||
|
<w:tcW w:w="8748" w:type="dxa"/>
|
||||||
|
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
|
||||||
|
</w:tcPr>
|
||||||
|
<w:p>
|
||||||
|
<w:pPr>
|
||||||
|
<w:spacing w:before="120"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:r>
|
||||||
|
<w:rPr>
|
||||||
|
<w:sz w:val="24"/>
|
||||||
|
<w:b/>
|
||||||
|
<w:caps/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:t>{{{ name }}}</w:t>
|
||||||
|
</w:r>
|
||||||
|
</w:p>
|
||||||
|
<w:p wsp:rsidR="00427ECC" wsp:rsidRDefault="00427ECC" wsp:rsidP="00427ECC">
|
||||||
|
<w:r>
|
||||||
|
<w:rPr>
|
||||||
|
<w:caps/>
|
||||||
|
<w:spacing w:val="22"/>
|
||||||
|
</w:rPr>
|
||||||
|
<w:t>{{#each skills }}{{ this }}{{#unless @last}} {{/unless}}{{/each}}</w:t>
|
||||||
|
</w:r>
|
||||||
|
</w:p>
|
||||||
|
</w:tc>
|
||||||
|
</w:tr>
|
||||||
|
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
|
</w:tbl>
|
||||||
|
{{/if}}
|
||||||
|
</wx:sub-section>
|
28
themes/modern-lancer/theme.json
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"title": "modern",
|
||||||
|
"description": "A contemporary resume template suitable for modern technical candidates and employees.",
|
||||||
|
"author": "hacksalot <hacksalot@indevious.com> (https://github.com/hacksalot)",
|
||||||
|
"engine": "handlebars",
|
||||||
|
"palette": {
|
||||||
|
"skillLevels": [ "#FFFFFF", "#5CB85C", "#F1C40F", "#428BCA", "#C00000" ]
|
||||||
|
},
|
||||||
|
"message": "To get colored skill progress bars, make sure your resume includes a `level` element for each skill.",
|
||||||
|
"inherits": {
|
||||||
|
"txt": "basis",
|
||||||
|
"md": "basis"
|
||||||
|
},
|
||||||
|
"fonts": {
|
||||||
|
"all": {
|
||||||
|
"default": [ "Helvetica Neue", "Helvetica", "Segoe UI", "Calibri", "sans-serif" ],
|
||||||
|
"heading1": ["Arial"],
|
||||||
|
"heading2": ["Arial"]
|
||||||
|
},
|
||||||
|
"doc": {
|
||||||
|
"default": "Calibri",
|
||||||
|
"heading1": "Trebuchet MS",
|
||||||
|
"heading2": "Calibri",
|
||||||
|
"heading3": "Calibri"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|