Unify jsonresume and RenderCV CVs solutions (#3462)
Fixes #2787 as an alternative to #2969. It was getting too cumbersome to have 2 different data sources for CV and also a lot of different layout files, so I decided to unify them all. Main changes: - synchronized the information inside RenderCV (`_data/cv.yml`) and JSONResume (`assets/json/resume.json`) - unified layout files for CV information - added the option to set the "data source" in the CV page --------- Signed-off-by: George Araújo <george.gcac@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
parent
dd425c77c1
commit
55a2685683
55
.github/agents/customize.agent.md
vendored
55
.github/agents/customize.agent.md
vendored
@ -21,15 +21,17 @@ You are an expert customization assistant for the al-folio Jekyll academic websi
|
|||||||
- **Deployment:** GitHub Pages (automated via GitHub Actions)
|
- **Deployment:** GitHub Pages (automated via GitHub Actions)
|
||||||
- **File Structure:**
|
- **File Structure:**
|
||||||
- `_config.yml` – Main site configuration (URL, metadata, theme colors, enabled features)
|
- `_config.yml` – Main site configuration (URL, metadata, theme colors, enabled features)
|
||||||
- `_data/` – YAML data files (CV info, social links, repository links, coauthors)
|
- `_data/` – YAML data files (CV info in RenderCV format, social links, repository links, coauthors)
|
||||||
- `_pages/` – Site pages (About, Blog, Projects, Publications, CV, etc.)
|
- `_pages/` – Site pages (About, Blog, Projects, Publications, CV, etc.)
|
||||||
- `_posts/` – Blog posts in Markdown (format: `YYYY-MM-DD-title.md`)
|
- `_posts/` – Blog posts in Markdown (format: `YYYY-MM-DD-title.md`)
|
||||||
- `_projects/` – Project pages in Markdown
|
- `_projects/` – Project pages in Markdown
|
||||||
- `_news/` – News/announcement items
|
- `_news/` – News/announcement items
|
||||||
- `_bibliography/papers.bib` – Publications in BibTeX format
|
- `_bibliography/papers.bib` – Publications in BibTeX format
|
||||||
- `_sass/` – SCSS/SASS stylesheets (colors, themes, layout)
|
- `_sass/` – SCSS/SASS stylesheets (colors, themes, layout)
|
||||||
- `assets/` – Static assets (images, PDFs, JSON resume, custom CSS/JS)
|
- `assets/` – Static assets (images, PDFs, custom CSS/JS)
|
||||||
- `.github/workflows/` – GitHub Actions for deployment and CI/CD
|
- `assets/json/resume.json` – JSONResume format (synced with `_data/cv.yml`)
|
||||||
|
- `assets/rendercv/` – RenderCV configuration and generated PDFs
|
||||||
|
- `.github/workflows/` – GitHub Actions for deployment and CI/CD (includes CV PDF generation)
|
||||||
|
|
||||||
## Community Context & Issue/Discussion References
|
## Community Context & Issue/Discussion References
|
||||||
|
|
||||||
@ -132,11 +134,14 @@ npx prettier . --write
|
|||||||
|
|
||||||
### 4. CV/Resume
|
### 4. CV/Resume
|
||||||
|
|
||||||
**Files:** `assets/json/resume.json` OR `_data/cv.yml`
|
**Files:** `_data/cv.yml` (RenderCV format), `assets/json/resume.json` (JSONResume format), `assets/rendercv/` (configuration)
|
||||||
|
|
||||||
- Use JSON format (jsonresume.org standard) in `assets/json/resume.json`
|
- **Choose your format:** Users select either RenderCV (`_data/cv.yml`) or JSONResume (`assets/json/resume.json`) — they pick ONE format
|
||||||
- Or use YAML format in `_data/cv.yml` (delete resume.json to use this)
|
- **Delete the unused format:** Remove the file for the format you're not using (so only one source exists) if you want to avoid confusion
|
||||||
- Add education, work experience, skills, awards, publications
|
- **RenderCV features:** Automatic PDF generation via GitHub Actions, customizable styling via `assets/rendercv/` config files (`design.yaml`, `locale.yaml`, `settings.yaml`)
|
||||||
|
- **JSONResume features:** Standard format compatible with other tools and services
|
||||||
|
- **Switching formats:** Users can change which format displays on the CV page by editing the `cv_format` setting in `_pages/cv.md` frontmatter
|
||||||
|
- **Note about both files:** Both files exist in the repository for template flexibility, but users usually only maintain the one they choose
|
||||||
|
|
||||||
### 5. Publications
|
### 5. Publications
|
||||||
|
|
||||||
@ -470,24 +475,24 @@ Help users avoid these frequent errors:
|
|||||||
|
|
||||||
## Quick Reference Map
|
## Quick Reference Map
|
||||||
|
|
||||||
| User wants to... | Files to modify | Key documentation |
|
| User wants to... | Files to modify | Key documentation |
|
||||||
| ----------------------- | ------------------------------------------- | --------------------------------- |
|
| ----------------------- | ------------------------------------------------------------------- | --------------------------------- |
|
||||||
| Change personal info | `_config.yml`, `_pages/about.md` | CUSTOMIZE.md § Configuration |
|
| Change personal info | `_config.yml`, `_pages/about.md` | CUSTOMIZE.md § Configuration |
|
||||||
| Add profile picture | `assets/img/prof_pic.jpg` | CUSTOMIZE.md § About page |
|
| Add profile picture | `assets/img/prof_pic.jpg` | CUSTOMIZE.md § About page |
|
||||||
| Update CV | `assets/json/resume.json` OR `_data/cv.yml` | CUSTOMIZE.md § CV information |
|
| Update CV | `_data/cv.yml` (RenderCV) or `assets/json/resume.json` (JSONResume) | CUSTOMIZE.md § CV information |
|
||||||
| Add publications | `_bibliography/papers.bib` | CUSTOMIZE.md § Publications |
|
| Add publications | `_bibliography/papers.bib` | CUSTOMIZE.md § Publications |
|
||||||
| Add blog post | `_posts/YYYY-MM-DD-title.md` | CUSTOMIZE.md § Blog posts |
|
| Add blog post | `_posts/YYYY-MM-DD-title.md` | CUSTOMIZE.md § Blog posts |
|
||||||
| Create project | `_projects/name.md` | CUSTOMIZE.md § Projects |
|
| Create project | `_projects/name.md` | CUSTOMIZE.md § Projects |
|
||||||
| Add news item | `_news/announcement.md` | CUSTOMIZE.md § News |
|
| Add news item | `_news/announcement.md` | CUSTOMIZE.md § News |
|
||||||
| Change theme color | `_sass/_themes.scss` | CUSTOMIZE.md § Theme colors |
|
| Change theme color | `_sass/_themes.scss` | CUSTOMIZE.md § Theme colors |
|
||||||
| Add social links | `_data/socials.yml` | CUSTOMIZE.md § Social media |
|
| Add social links | `_data/socials.yml` | CUSTOMIZE.md § Social media |
|
||||||
| Enable/disable features | `_config.yml` | CUSTOMIZE.md § Configuration |
|
| Enable/disable features | `_config.yml` | CUSTOMIZE.md § Configuration |
|
||||||
| Remove pages | Delete from `_pages/`, update nav | CUSTOMIZE.md § Removing content |
|
| Remove pages | Delete from `_pages/`, update nav | CUSTOMIZE.md § Removing content |
|
||||||
| Fix deployment issues | `_config.yml` (url/baseurl) | FAQ.md, INSTALL.md |
|
| Fix deployment issues | `_config.yml` (url/baseurl) | FAQ.md, INSTALL.md |
|
||||||
| Test changes locally | Docker setup | INSTALL.md § Docker |
|
| Test changes locally | Docker setup | INSTALL.md § Docker |
|
||||||
| Debug broken site | Check GitHub Actions, local preview output | FAQ.md, Testing Before Deployment |
|
| Debug broken site | Check GitHub Actions, local preview output | FAQ.md, Testing Before Deployment |
|
||||||
| Add custom page | Create `_pages/name.md`, update nav | CUSTOMIZE.md § Creating pages |
|
| Add custom page | Create `_pages/name.md`, update nav | CUSTOMIZE.md § Creating pages |
|
||||||
| Customize fonts/spacing | `_sass/_variables.scss` | CUSTOMIZE.md § Customization |
|
| Customize fonts/spacing | `_sass/_variables.scss` | CUSTOMIZE.md § Customization |
|
||||||
|
|
||||||
## Using Community Context in Your Responses
|
## Using Community Context in Your Responses
|
||||||
|
|
||||||
|
|||||||
18
.github/agents/docs.agent.md
vendored
18
.github/agents/docs.agent.md
vendored
@ -23,10 +23,15 @@ You are a documentation specialist for the al-folio Jekyll theme project.
|
|||||||
- `_posts/` – Blog posts
|
- `_posts/` – Blog posts
|
||||||
- `_projects/`, `_news/`, `_books/` – Jekyll collections
|
- `_projects/`, `_news/`, `_books/` – Jekyll collections
|
||||||
- `_layouts/`, `_includes/` – Liquid templates
|
- `_layouts/`, `_includes/` – Liquid templates
|
||||||
|
- `_includes/cv/` – Unified CV component renderers (awards, education, experience, skills, languages, etc.)
|
||||||
- `_sass/` – SCSS stylesheets
|
- `_sass/` – SCSS stylesheets
|
||||||
- `_data/` – YAML data files (cv.yml, repositories.yml, socials.yml, etc.)
|
- `_data/` – YAML data files:
|
||||||
|
- `cv.yml` – CV/resume in RenderCV format
|
||||||
|
- `repositories.yml`, `socials.yml`, `coauthors.yml`, `venues.yml` – Other data
|
||||||
- `_bibliography/` – BibTeX files for publications
|
- `_bibliography/` – BibTeX files for publications
|
||||||
- `.github/workflows/` – GitHub Actions for deployment and CI
|
- `assets/json/resume.json` – JSONResume format (alternative to RenderCV; syncing between formats is a template maintainer task, not a user responsibility)
|
||||||
|
- `assets/rendercv/` – RenderCV configuration files and generated PDFs
|
||||||
|
- `.github/workflows/` – GitHub Actions for deployment, CI, and CV PDF generation
|
||||||
|
|
||||||
## Documentation standards
|
## Documentation standards
|
||||||
|
|
||||||
@ -49,7 +54,7 @@ You are a documentation specialist for the al-folio Jekyll theme project.
|
|||||||
|
|
||||||
- Reference well-documented configuration files rather than repeating their content
|
- Reference well-documented configuration files rather than repeating their content
|
||||||
- Example: "Configure your deployment settings in `_config.yml`. For Docker deployment, see `docker-compose.yml`"
|
- Example: "Configure your deployment settings in `_config.yml`. For Docker deployment, see `docker-compose.yml`"
|
||||||
- When explaining features, point to the implementation: "The CV page uses `_layouts/cv.liquid` with data from either `assets/json/resume.json` (JSON Resume format) or `_data/cv.yml` (YAML format)"
|
- When explaining CV features, point to both data sources: "The CV page is generated from `_data/cv.yml` (RenderCV format) or `assets/json/resume.json` (JSONResume format), which are kept in sync. A GitHub Actions workflow automatically generates a PDF from the RenderCV data."
|
||||||
|
|
||||||
**Avoid UI descriptions:**
|
**Avoid UI descriptions:**
|
||||||
|
|
||||||
@ -92,9 +97,10 @@ You are a documentation specialist for the al-folio Jekyll theme project.
|
|||||||
|
|
||||||
1. **Update configuration documentation** when `_config.yml` changes
|
1. **Update configuration documentation** when `_config.yml` changes
|
||||||
2. **Document new features** added to the theme (new layouts, plugins, customization options)
|
2. **Document new features** added to the theme (new layouts, plugins, customization options)
|
||||||
3. **Clarify installation steps** when deployment methods or dependencies change
|
3. **Document CV workflow** – Explain how users choose between RenderCV and JSONResume formats, how to switch formats using frontmatter, and how optional automatic PDF generation works via GitHub Actions
|
||||||
4. **Update troubleshooting** in FAQ when common issues arise
|
4. **Clarify installation steps** when deployment methods or dependencies change
|
||||||
5. **Maintain consistency** across all documentation files
|
5. **Update troubleshooting** in FAQ when common issues arise
|
||||||
|
6. **Maintain consistency** across all documentation files
|
||||||
|
|
||||||
## Common Technical Terms & Explanations
|
## Common Technical Terms & Explanations
|
||||||
|
|
||||||
|
|||||||
65
.github/workflows/render-cv.yml
vendored
Normal file
65
.github/workflows/render-cv.yml
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
name: Render a CV
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- "_data/cv.yml"
|
||||||
|
- "_data/cv.yaml"
|
||||||
|
- "assets/rendercv/design.yaml"
|
||||||
|
- "assets/rendercv/design.yml"
|
||||||
|
- "assets/rendercv/locale.yaml"
|
||||||
|
- "assets/rendercv/locale.yml"
|
||||||
|
- "assets/rendercv/settings.yaml"
|
||||||
|
- "assets/rendercv/settings.yml"
|
||||||
|
workflow_call:
|
||||||
|
workflow_dispatch:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
jobs:
|
||||||
|
rendercv:
|
||||||
|
name: RenderCV
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.12"
|
||||||
|
- name: Install RenderCV
|
||||||
|
run: |
|
||||||
|
pip install -r requirements.txt
|
||||||
|
- name: RenderCV
|
||||||
|
run: |
|
||||||
|
cv_file=$(find _data -maxdepth 1 -type f \( -name "cv.yaml" -o -name "cv.yml" \))
|
||||||
|
if [ -z "$cv_file" ]; then
|
||||||
|
echo "No cv.yml file found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rendercv_dir=$(find assets -maxdepth 1 -type d -name "rendercv")
|
||||||
|
if [ -z "$rendercv_dir" ]; then
|
||||||
|
echo "No RenderCV config directory found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
design=$(find $rendercv_dir -maxdepth 1 -type f \( -name "design.yaml" -o -name "design.yml" \))
|
||||||
|
locale=$(find $rendercv_dir -maxdepth 1 -type f \( -name "locale.yaml" -o -name "locale.yml" \))
|
||||||
|
settings=$(find $rendercv_dir -maxdepth 1 -type f \( -name "settings.yaml" -o -name "settings.yml" \))
|
||||||
|
|
||||||
|
if [ -z "$design" ] || [ -z "$locale" ] || [ -z "$settings" ]; then
|
||||||
|
echo "Missing RenderCV config files!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rendercv render $cv_file --design $design --locale-catalog $locale --settings $settings
|
||||||
|
- name: Upload rendercv_output as an artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: RenderCV Output
|
||||||
|
path: assets/rendercv/rendercv_output
|
||||||
|
- name: Push the changes
|
||||||
|
run: |
|
||||||
|
git config --global user.name "${{ github.actor }}"
|
||||||
|
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
|
||||||
|
git add -A
|
||||||
|
git commit -m "chore: render the latest CV"
|
||||||
|
git push
|
||||||
15
.gitignore
vendored
15
.gitignore
vendored
@ -1,14 +1,15 @@
|
|||||||
_site
|
_site
|
||||||
.bundle
|
.bundle
|
||||||
.sass-cache
|
.DS_store
|
||||||
|
.idea
|
||||||
.jekyll-cache
|
.jekyll-cache
|
||||||
.jekyll-metadata
|
.jekyll-metadata
|
||||||
.DS_store
|
|
||||||
.ruby-version
|
.ruby-version
|
||||||
|
.sass-cache
|
||||||
.tweet-cache
|
.tweet-cache
|
||||||
Gemfile.lock
|
|
||||||
assets/libs/
|
|
||||||
node_modules/
|
|
||||||
vendor
|
|
||||||
.idea
|
|
||||||
.venv
|
.venv
|
||||||
|
assets/libs/
|
||||||
|
assets/rendercv/rendercv_output/*.typ
|
||||||
|
Gemfile.lock
|
||||||
|
node_modules/
|
||||||
|
vendor
|
||||||
63
CUSTOMIZE.md
63
CUSTOMIZE.md
@ -22,6 +22,10 @@ Here we will give you some tips on how to customize the website. One important t
|
|||||||
- [Build and Deployment](#build-and-deployment)
|
- [Build and Deployment](#build-and-deployment)
|
||||||
- [Key Integration Points](#key-integration-points)
|
- [Key Integration Points](#key-integration-points)
|
||||||
- [Modifying the CV information](#modifying-the-cv-information)
|
- [Modifying the CV information](#modifying-the-cv-information)
|
||||||
|
- [RenderCV Format (Recommended)](#rendercv-format-recommended)
|
||||||
|
- [JSONResume Format](#jsonresume-format)
|
||||||
|
- [Switching CV Sources (Without Deleting Files)](#switching-cv-sources-without-deleting-files)
|
||||||
|
- [Automatic PDF Generation (RenderCV only)](#automatic-pdf-generation-rendercv-only)
|
||||||
- [Modifying the user and repository information](#modifying-the-user-and-repository-information)
|
- [Modifying the user and repository information](#modifying-the-user-and-repository-information)
|
||||||
- [Configuring external service URLs](#configuring-external-service-urls)
|
- [Configuring external service URLs](#configuring-external-service-urls)
|
||||||
- [Creating new pages](#creating-new-pages)
|
- [Creating new pages](#creating-new-pages)
|
||||||
@ -274,9 +278,64 @@ Understanding how these technologies work together will help you customize al-fo
|
|||||||
|
|
||||||
## Modifying the CV information
|
## Modifying the CV information
|
||||||
|
|
||||||
There are currently 2 different ways of generating the CV page content. The first one is by using a json file located in [assets/json/resume.json](assets/json/resume.json). It is a [known standard](https://jsonresume.org/) for creating a CV programmatically. The second one, currently used as a fallback when the json file is not found, is by using a yml file located in [\_data/cv.yml](_data/cv.yml). This was the original way of creating the CV page content and since it is more human readable than a json file we decided to keep it as an option.
|
Your CV can be created using one of two formats. Choose the format that works best for you:
|
||||||
|
|
||||||
What this means is, if there is no resume data defined in [\_config.yml](_config.yml) and loaded via a json file, it will load the contents of [\_data/cv.yml](_data/cv.yml). If you want to use the [\_data/cv.yml](_data/cv.yml) file as the source of your CV, you must delete the [assets/json/resume.json](assets/json/resume.json) file.
|
### RenderCV Format (Recommended)
|
||||||
|
|
||||||
|
[`_data/cv.yml`](_data/cv.yml) uses the [RenderCV](https://rendercv.com/) YAML format, which is human-readable and designed specifically for generating professional resumes. This format also enables optional automatic PDF generation via GitHub Actions.
|
||||||
|
|
||||||
|
**If you choose this format:**
|
||||||
|
|
||||||
|
1. Edit your CV data in [`_data/cv.yml`](_data/cv.yml)
|
||||||
|
2. Delete [`assets/json/resume.json`](assets/json/resume.json) so the website uses the YAML file
|
||||||
|
3. (Optional) Customize how the PDF is styled by editing:
|
||||||
|
- [`assets/rendercv/design.yaml`](assets/rendercv/design.yaml) — Design and styling
|
||||||
|
- [`assets/rendercv/locale.yaml`](assets/rendercv/locale.yaml) — Localization and formatting
|
||||||
|
- [`assets/rendercv/settings.yaml`](assets/rendercv/settings.yaml) — RenderCV settings
|
||||||
|
|
||||||
|
### JSONResume Format
|
||||||
|
|
||||||
|
[`assets/json/resume.json`](assets/json/resume.json) uses the [JSONResume](https://jsonresume.org/) standard format, which is compatible with other tools and services.
|
||||||
|
|
||||||
|
**If you choose this format:**
|
||||||
|
|
||||||
|
1. Edit your CV data in [`assets/json/resume.json`](assets/json/resume.json)
|
||||||
|
2. Delete [`_data/cv.yml`](_data/cv.yml) so the website uses the JSON file
|
||||||
|
|
||||||
|
### Switching CV Sources (Without Deleting Files)
|
||||||
|
|
||||||
|
If you keep both CV files in your repository, you can switch which format displays on your website by setting the `cv_format` variable in the frontmatter of [`_pages/cv.md`](_pages/cv.md):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
layout: cv
|
||||||
|
cv_format: rendercv # options: rendercv or jsonresume
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
Change `rendercv` to `jsonresume` to display the JSONResume format instead.
|
||||||
|
|
||||||
|
### Automatic PDF Generation (RenderCV only)
|
||||||
|
|
||||||
|
If you use the RenderCV format, a GitHub Actions workflow can automatically generate a PDF version of your CV whenever you push changes to [`_data/cv.yml`](_data/cv.yml). The PDF is saved to `assets/rendercv/rendercv_output/`.
|
||||||
|
|
||||||
|
**To link the auto-generated PDF to your CV page:**
|
||||||
|
|
||||||
|
Set the `cv_pdf` variable in the frontmatter of [`_pages/cv.md`](_pages/cv.md) to point to the generated PDF:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
layout: cv
|
||||||
|
cv_pdf: /assets/rendercv/rendercv_output/CV.pdf
|
||||||
|
cv_format: rendercv
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
This will add a download button on your CV page that links to the PDF. (The exact filename depends on your RenderCV settings—check the output directory after the first workflow run to see the generated PDF name.)
|
||||||
|
|
||||||
|
**To disable automatic PDF generation:**
|
||||||
|
|
||||||
|
Delete or comment out the [`.github/workflows/render-cv.yml`](.github/workflows/render-cv.yml) workflow file.
|
||||||
|
|
||||||
## Modifying the user and repository information
|
## Modifying the user and repository information
|
||||||
|
|
||||||
|
|||||||
268
_data/cv.yml
268
_data/cv.yml
@ -1,97 +1,189 @@
|
|||||||
- title: General Information
|
cv:
|
||||||
type: map
|
name: Albert Einstein
|
||||||
contents:
|
label: Scientist
|
||||||
- name: Full Name
|
email: einstein@example.com
|
||||||
value: Albert Einstein
|
location: Princeton, NJ
|
||||||
- name: Date of Birth
|
image: ""
|
||||||
value: 14th March 1879
|
summary: A German-born theoretical physicist, widely ranked among the greatest and most influential scientists of all time
|
||||||
- name: Languages
|
|
||||||
value: English, German
|
|
||||||
|
|
||||||
- title: Education
|
social_networks:
|
||||||
type: time_table
|
- network: X
|
||||||
contents:
|
username: AlbertEinstein
|
||||||
- title: PhD
|
- network: GitHub
|
||||||
institution: University of Zurich, Zurich, Switzerland
|
username: example
|
||||||
year: 1905
|
- network: LinkedIn
|
||||||
description:
|
username: example
|
||||||
- Description 1.
|
|
||||||
- Description 2.
|
|
||||||
- title: Description 3.
|
|
||||||
contents:
|
|
||||||
- Sub-description 1.
|
|
||||||
- Sub-description 2.
|
|
||||||
- title: Federal teaching diploma
|
|
||||||
institution: Eidgenössische Technische Hochschule, Zurich, Switzerland
|
|
||||||
year: 1900
|
|
||||||
description:
|
|
||||||
- Description 1.
|
|
||||||
- Description 2.
|
|
||||||
|
|
||||||
- title: Experience
|
address:
|
||||||
type: time_table
|
street: 2712 Broadway St
|
||||||
contents:
|
city: San Francisco
|
||||||
- title: Professor of Theoretical Physics
|
region: California
|
||||||
institution: Institute for Advanced Study, Princeton University
|
postalCode: CA 94115
|
||||||
year: 1933 - 1955
|
countryCode: US
|
||||||
description:
|
|
||||||
- Description 1.
|
|
||||||
- Description 2.
|
|
||||||
- title: Description 3.
|
|
||||||
contents:
|
|
||||||
- Sub-description 1.
|
|
||||||
- Sub-description 2.
|
|
||||||
- title: Visiting Professor
|
|
||||||
institution: California Institute of Technology, Pasadena, California, US
|
|
||||||
year: 1933
|
|
||||||
description:
|
|
||||||
- Description 1.
|
|
||||||
- Description 2.
|
|
||||||
|
|
||||||
- title: Director
|
sections:
|
||||||
institution: Kaiser Wilhelm Institute for Physics, Berlin, Germany.
|
Education:
|
||||||
year: 1917-1933
|
- institution: University of Zurich
|
||||||
|
location: Zurich, Switzerland
|
||||||
|
url: https://www.uzh.ch/
|
||||||
|
area: Physics
|
||||||
|
studyType: PhD
|
||||||
|
start_date: 1900
|
||||||
|
end_date: 1905
|
||||||
|
score: ""
|
||||||
|
courses: "Theory of Relativity"
|
||||||
|
highlights:
|
||||||
|
- Description 1.
|
||||||
|
- Description 2.
|
||||||
|
|
||||||
- title: Professor of Theoretical Physics
|
- institution: Eidgenössische Technische Hochschule
|
||||||
institution: Karl-Ferdinand University, Prague, Czechoslovakia
|
location: Zurich, Switzerland
|
||||||
year: 1911 - 1917
|
area: Physics
|
||||||
description:
|
studyType: Federal teaching diploma
|
||||||
|
start_date: 1896
|
||||||
|
end_date: 1900
|
||||||
|
highlights:
|
||||||
|
- Description 1.
|
||||||
|
- Description 2.
|
||||||
|
|
||||||
- title: Associate Professor of Theoretical Physics
|
Experience:
|
||||||
institution: University of Zurich, Zurich, Switzerland
|
- company: Institute for Advanced Study, Princeton University
|
||||||
year: 1909 - 1911
|
position: Professor of Theoretical Physics
|
||||||
|
location: Princeton University, NJ
|
||||||
|
start_date: 1933
|
||||||
|
end_date: 1955
|
||||||
|
summary: Teaching at Palmer Physical Laboratory (now 302 Frist Campus Center). While not a professor at Princeton, I associated with the physics professors and continued to give lectures on campus.
|
||||||
|
highlights:
|
||||||
|
- Relativity
|
||||||
|
- Description 2.
|
||||||
|
|
||||||
- title: Open Source Projects
|
- company: California Institute of Technology
|
||||||
type: time_table
|
position: Visiting Professor
|
||||||
contents:
|
location: Pasadena, California, US
|
||||||
- title: <a href="https://github.com/alshedivat/al-folio">al-folio</a>
|
start_date: 1933
|
||||||
year: 2015-now
|
end_date: 1933
|
||||||
description: A beautiful, simple, clean, and responsive Jekyll theme for academics.
|
highlights:
|
||||||
|
- Description 1.
|
||||||
|
- Description 2.
|
||||||
|
|
||||||
- title: Honors and Awards
|
- company: Kaiser Wilhelm Institute for Physics
|
||||||
type: time_table
|
position: Director
|
||||||
contents:
|
location: Berlin, Germany
|
||||||
- year: 1921
|
start_date: 1917
|
||||||
items:
|
end_date: 1933
|
||||||
- Nobel Prize in Physics
|
|
||||||
- Matteucci Medal
|
|
||||||
- year: 2029
|
|
||||||
items:
|
|
||||||
- Max Planck Medal
|
|
||||||
|
|
||||||
- title: Academic Interests
|
- company: Karl-Ferdinand University
|
||||||
type: nested_list
|
position: Professor of Theoretical Physics
|
||||||
contents:
|
location: Prague, Czechoslovakia
|
||||||
- title: Topic 1.
|
start_date: 1911
|
||||||
items:
|
end_date: 1917
|
||||||
- Description 1.
|
|
||||||
- Description 2.
|
|
||||||
- title: Topic 2.
|
|
||||||
items:
|
|
||||||
- Description 1.
|
|
||||||
- Description 2.
|
|
||||||
|
|
||||||
- title: Other Interests
|
- company: University of Zurich
|
||||||
type: list
|
position: Associate Professor of Theoretical Physics
|
||||||
contents:
|
location: Zurich, Switzerland
|
||||||
- <u>Hobbies:</u> Hobby 1, Hobby 2, etc.
|
start_date: 1909
|
||||||
|
end_date: 1911
|
||||||
|
|
||||||
|
Volunteer:
|
||||||
|
- company: People's Climate March
|
||||||
|
position: Lead Organizer
|
||||||
|
location: Zurich, Switzerland
|
||||||
|
start_date: 2014-04-01
|
||||||
|
end_date: 2015-07-01
|
||||||
|
summary: Lead organizer for the New York City branch of the People's Climate March, the largest climate march in history.
|
||||||
|
highlights:
|
||||||
|
- "Awarded 'Climate Hero' award by Greenpeace for my efforts organizing the march."
|
||||||
|
- "Men of the year 2014 by Time magazine"
|
||||||
|
|
||||||
|
Awards:
|
||||||
|
- title: Nobel Prize in Physics
|
||||||
|
authors:
|
||||||
|
- "Royal Swedish Academy of Sciences"
|
||||||
|
date: 1921-11-01
|
||||||
|
awarder: Royal Swedish Academy of Sciences
|
||||||
|
url: https://www.nobelprize.org/prizes/physics/1921/einstein/biographical/
|
||||||
|
summary: The Nobel Prizes are five separate prizes that, according to Alfred Nobel's will of 1895, are awarded to 'those who, during the preceding year, have conferred the greatest benefit to humankind.'
|
||||||
|
|
||||||
|
- title: Max Planck Medal
|
||||||
|
authors:
|
||||||
|
- "German Physical Society"
|
||||||
|
date: 2029
|
||||||
|
awarder: German Physical Society
|
||||||
|
summary: Awarded for outstanding scientific achievement
|
||||||
|
|
||||||
|
Publications:
|
||||||
|
- title: Zur Elektrodynamik bewegter Körper
|
||||||
|
authors:
|
||||||
|
- Albert Einstein
|
||||||
|
publisher: Annalen der Physik
|
||||||
|
releaseDate: 1905-06-30
|
||||||
|
url: https://en.wikisource.org/wiki/Translation:On_the_Electrodynamics_of_Moving_Bodies
|
||||||
|
summary: It concerned an interpretation of the Michelson–Morley experiment and the properties of light and time. Special relativity incorporates the principle that the speed of light is the same for all inertial observers regardless of the state of motion of the source.
|
||||||
|
|
||||||
|
- title: Über einen die Erzeugung und Verwandlung des Lichtes betreffenden heuristischen Gesichtspunkt
|
||||||
|
authors:
|
||||||
|
- Albert Einstein
|
||||||
|
publisher: Annalen der Physik
|
||||||
|
releaseDate: 1905-03-18
|
||||||
|
url: https://de.wikisource.org/wiki/Über_einen_die_Erzeugung_und_Verwandlung_des_Lichtes_betreffenden_heuristischen_Gesichtspunkt
|
||||||
|
summary: In the second paper, he applied the quantum theory to light to explain the photoelectric effect. In particular, he used the idea of light quanta (photons) to explain experimental results, but stressed the importance of the experimental results. The importance of his work on the photoelectric effect earned him the Nobel Prize in Physics in 1921.
|
||||||
|
|
||||||
|
- title: Die Grundlage der allgemeinen Relativitätstheorie
|
||||||
|
authors:
|
||||||
|
- Albert Einstein
|
||||||
|
publisher: Annalen der Physik
|
||||||
|
releaseDate: 1916-03-20
|
||||||
|
url: https://de.wikisource.org/wiki/Die_Grundlage_der_allgemeinen_Relativitätstheorie
|
||||||
|
summary: The publication of the theory of general relativity made him internationally famous. He was professor of physics at the universities of Zurich (1909–1911) and Prague (1911–1912), before he returned to ETH Zurich (1912–1914).
|
||||||
|
|
||||||
|
Skills:
|
||||||
|
- name: Physics
|
||||||
|
level: Master
|
||||||
|
icon: fa-solid fa-hashtag
|
||||||
|
keywords: "Quantum Mechanics, Quantum Computing, Quantum Information, Quantum Cryptography, Quantum Communication, Quantum Teleportation"
|
||||||
|
|
||||||
|
Languages:
|
||||||
|
- name: German
|
||||||
|
summary: "Native speaker"
|
||||||
|
|
||||||
|
- name: English
|
||||||
|
summary: "Fluent"
|
||||||
|
|
||||||
|
Interests:
|
||||||
|
- name: Physics
|
||||||
|
icon: fa-solid fa-tag
|
||||||
|
keywords: "Quantum Mechanics, Quantum Computing, Quantum Information, Quantum Cryptography, Quantum Communication, Quantum Teleportation"
|
||||||
|
|
||||||
|
Certificates:
|
||||||
|
- name: Machine Learning
|
||||||
|
date: 2018-01-01
|
||||||
|
issuer: Stanford University
|
||||||
|
icon: fa-solid fa-location-dot
|
||||||
|
|
||||||
|
- name: Quantum Computing
|
||||||
|
date: 2018-01-01
|
||||||
|
issuer: Stanford University
|
||||||
|
icon: fa-solid fa-tag
|
||||||
|
|
||||||
|
- name: Quantum Information
|
||||||
|
date: 2018-01-01
|
||||||
|
issuer: Stanford University
|
||||||
|
icon: fa-solid fa-envelope
|
||||||
|
|
||||||
|
Projects:
|
||||||
|
- name: Quantum Computing
|
||||||
|
summary: Quantum computing is the use of quantum-mechanical phenomena such as superposition and entanglement to perform computation. Computers that perform quantum computations are known as quantum computers.
|
||||||
|
highlights:
|
||||||
|
- Quantum Teleportation
|
||||||
|
- Quantum Cryptography
|
||||||
|
start_date: 2018-01-01
|
||||||
|
end_date: 2018-01-01
|
||||||
|
|
||||||
|
References:
|
||||||
|
- name: Professor John Doe
|
||||||
|
icon: fa-solid fa-laptop
|
||||||
|
reference: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit.
|
||||||
|
|
||||||
|
- name: Professor Jane Smith
|
||||||
|
icon: fa-solid fa-thumbtack
|
||||||
|
reference: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit.
|
||||||
|
|||||||
66
_includes/cv/awards.liquid
Normal file
66
_includes/cv/awards.liquid
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified awards entry renderer for both formats
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<ul class="card-text font-weight-light list-group list-group-flush">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
<div class="row">
|
||||||
|
{% capture start_date %}
|
||||||
|
{% if entry.date %}{{ entry.date }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% if start_date != '' %}
|
||||||
|
<div class="col-xs-2 col-sm-2 col-md-2 text-center">
|
||||||
|
<table class="table-cv">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px">
|
||||||
|
{{- start_date | split: '-' | slice: 0, 1 | join: '' -}}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
||||||
|
{% if entry.url %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
||||||
|
<a href="{{ entry.url }}">{{ entry.title }}</a>
|
||||||
|
</h6>
|
||||||
|
{% elsif entry.title %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">{{ entry.title }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.awarder %}
|
||||||
|
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ entry.awarder }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.summary %}
|
||||||
|
<p class="ml-1 ml-md-4">{{ entry.summary | markdownify | remove: '<p>' | remove: '</p>' }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="col-xs-12 col-sm-12 col-md-12">
|
||||||
|
{% if entry.url %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
||||||
|
<a href="{{ entry.url }}">{{ entry.title }}</a>
|
||||||
|
</h6>
|
||||||
|
{% elsif entry.title %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">{{ entry.title }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.awarder %}
|
||||||
|
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ entry.awarder }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.summary %}
|
||||||
|
<p class="ml-1 ml-md-4">{{ entry.summary | markdownify | remove: '<p>' | remove: '</p>' }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
28
_includes/cv/certificates.liquid
Normal file
28
_includes/cv/certificates.liquid
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified certificates entry renderer for both formats
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<ul class="card-text font-weight-light list-group list-group-flush">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
{% if entry.icon %}
|
||||||
|
<i class="{{ entry.icon }}"></i>
|
||||||
|
{% endif %}
|
||||||
|
{% if entry.url %}
|
||||||
|
<strong
|
||||||
|
><a href="{{ entry.url }}" target="_blank">{{ entry.name }}</a></strong
|
||||||
|
>
|
||||||
|
{% else %}
|
||||||
|
<strong>{{ entry.name }}</strong>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.issuer %}
|
||||||
|
- <em>{{ entry.issuer }}</em>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.date %}
|
||||||
|
({{ entry.date | split: '-' | slice: 0, 1 | join: '' }})
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
93
_includes/cv/education.liquid
Normal file
93
_includes/cv/education.liquid
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified education entry renderer for both RenderCV and JSONResume formats
|
||||||
|
Handles both:
|
||||||
|
- RenderCV: institution, area, studyType (or degree), start_date, end_date, location, courses, highlights
|
||||||
|
- JSONResume: institution, area, studyType, startDate, endDate, location, courses, highlights
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<ul class="card-text font-weight-light list-group list-group-flush">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
|
||||||
|
{% capture start_date %}
|
||||||
|
{% if entry.start_date %}{{ entry.start_date }}{% elsif entry.startDate %}{{ entry.startDate }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
{% capture end_date %}
|
||||||
|
{% if entry.end_date %}{{ entry.end_date }}{% elsif entry.endDate %}{{ entry.endDate }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% if start_date != '' %}
|
||||||
|
{% comment %} Extract year only from dates like "1933-01-01" or just use "1933" as is {% endcomment %}
|
||||||
|
{% assign startDate = start_date | split: '-' | first %}
|
||||||
|
{% assign endDate = end_date | split: '-' | first | default: 'Present' %}
|
||||||
|
{% assign date = startDate | append: ' - ' | append: endDate %}
|
||||||
|
{% else %}
|
||||||
|
{% assign date = null %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<table class="table-cv">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{% if date %}
|
||||||
|
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px">{{ date }}</span>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% capture location %}
|
||||||
|
{% if entry.location %}{{ entry.location }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
{% if location != '' %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<p class="location">
|
||||||
|
<i class="fa-solid fa-location-dot iconlocation"></i>
|
||||||
|
{{ location }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
||||||
|
{% capture study_type %}
|
||||||
|
{% if entry.studyType %}{{ entry.studyType }}{% elsif entry.degree %}{{ entry.degree }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% if entry.url %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
||||||
|
<a href="{{ entry.url }}">{{ study_type }}</a>
|
||||||
|
</h6>
|
||||||
|
{% elsif study_type != '' %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">{{ study_type }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.institution %}
|
||||||
|
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ entry.institution }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.area %}
|
||||||
|
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ entry.area }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.courses or entry.highlights %}
|
||||||
|
<ul class="items">
|
||||||
|
{% for item in entry.courses %}
|
||||||
|
<li>
|
||||||
|
<span class="item">{{ item }}</span>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
{% for item in entry.highlights %}
|
||||||
|
<li>
|
||||||
|
<span class="item">{{ item | markdownify | remove: '<p>' | remove: '</p>' }}</span>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
91
_includes/cv/experience.liquid
Normal file
91
_includes/cv/experience.liquid
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified work/experience entry renderer for both RenderCV and JSONResume formats
|
||||||
|
Handles both:
|
||||||
|
- RenderCV: company, position, start_date, end_date, location, url, summary, highlights
|
||||||
|
- JSONResume: name, position, startDate, endDate, location, url, summary, highlights
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<ul class="card-text font-weight-light list-group list-group-flush">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
|
||||||
|
{% capture start_date %}
|
||||||
|
{% if entry.start_date %}{{ entry.start_date }}{% elsif entry.startDate %}{{ entry.startDate }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
{% capture end_date %}
|
||||||
|
{% if entry.end_date %}{{ entry.end_date }}{% elsif entry.endDate %}{{ entry.endDate }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% if start_date != '' %}
|
||||||
|
{% comment %} Extract year only from dates like "1933-01-01" or just use "1933" as is {% endcomment %}
|
||||||
|
{% assign startDate = start_date | split: '-' | first %}
|
||||||
|
{% assign endDate = end_date | split: '-' | first | default: 'Present' %}
|
||||||
|
{% assign date = startDate | append: ' - ' | append: endDate %}
|
||||||
|
{% else %}
|
||||||
|
{% assign date = '' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<table class="table-cv">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px">{{ date }}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% capture location %}
|
||||||
|
{% if entry.location %}{{ entry.location }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
{% if location != '' %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<p class="location">
|
||||||
|
<i class="fa-solid fa-location-dot iconlocation"></i>
|
||||||
|
{{ location }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
||||||
|
{% capture position_title %}
|
||||||
|
{% if entry.position %}{{ entry.position }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% if entry.url %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
||||||
|
<a href="{{ entry.url }}">{{ position_title }}</a>
|
||||||
|
</h6>
|
||||||
|
{% elsif position_title != '' %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">{{ position_title }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% capture company_name %}
|
||||||
|
{% if entry.name %}{{ entry.name }}{% elsif entry.company %}{{ entry.company }}{% elsif entry.organization %}{{ entry.organization }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
{% if company_name != '' %}
|
||||||
|
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ company_name }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.summary %}
|
||||||
|
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">
|
||||||
|
{{ entry.summary | markdownify | remove: '<p>' | remove: '</p>' }}
|
||||||
|
</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.highlights %}
|
||||||
|
<ul class="items">
|
||||||
|
{% for item in entry.highlights %}
|
||||||
|
<li>
|
||||||
|
<span class="item">{{ item | markdownify | remove: '<p>' | remove: '</p>' }}</span>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
29
_includes/cv/interests.liquid
Normal file
29
_includes/cv/interests.liquid
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified interests entry renderer for both formats
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<div class="card-text font-weight-light">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<div class="interest-item">
|
||||||
|
{% if entry.icon %}
|
||||||
|
<i class="{{ entry.icon }}"></i>
|
||||||
|
{% endif %}
|
||||||
|
<strong>{{ entry.name }}:</strong>
|
||||||
|
{% if entry.keywords %}
|
||||||
|
{% for keyword in entry.keywords %}
|
||||||
|
{% if forloop.last %}
|
||||||
|
{{ keyword }}
|
||||||
|
{% else %}
|
||||||
|
{{ keyword }},
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.interest-item {
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
28
_includes/cv/languages.liquid
Normal file
28
_includes/cv/languages.liquid
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified languages entry renderer for both formats
|
||||||
|
- RenderCV uses: name, summary
|
||||||
|
- JSONResume uses: language, fluency
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<div class="card-text font-weight-light">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<div class="language-item">
|
||||||
|
{% if entry.icon %}
|
||||||
|
<i class="{{ entry.icon }}"></i>
|
||||||
|
{% endif %}
|
||||||
|
{% capture lang_name %}
|
||||||
|
{% if entry.name %}{{ entry.name }}{% elsif entry.language %}{{ entry.language }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
{% capture fluency %}
|
||||||
|
{% if entry.summary %}{{ entry.summary }}{% elsif entry.fluency %}{{ entry.fluency }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
<strong>{{ lang_name }}:</strong> {{ fluency }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.language-item {
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,5 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% for content in entry.contents %}
|
|
||||||
<li class="list-group-item">{{ content }}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
<div class="list-groups">
|
|
||||||
{% for content in entry.contents %}
|
|
||||||
<div class="list-group col-md-6">
|
|
||||||
<table class="table-cv list-group-table">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
{% if content.icon %}
|
|
||||||
<td class="list-group-category-icon"><i class="{{ content.icon }}"></i></td>
|
|
||||||
{% else %}
|
|
||||||
<td class="list-group-category-icon"></td>
|
|
||||||
{% endif %}
|
|
||||||
<!-- Calculate colspan number for category title -->
|
|
||||||
{% assign i = 1 %}
|
|
||||||
{% for item in content.items %}
|
|
||||||
{% assign i = i | plus: 1 %}
|
|
||||||
{% endfor %}
|
|
||||||
<td colspan="{{ i }}" class="list-group-category">{{ content.category }}</td>
|
|
||||||
</tr>
|
|
||||||
{% for item in content.items %}
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td class="list-group-name">
|
|
||||||
<b>{{ item.name }}</b>
|
|
||||||
</td>
|
|
||||||
{% if item.level %}
|
|
||||||
<td class="list-group-level">{{ item.level }}</td>
|
|
||||||
{% endif %}
|
|
||||||
{% if item.school %}
|
|
||||||
<td class="list-group-school">{{ item.school }}
|
|
||||||
{% endif %}
|
|
||||||
{% if item.time %}
|
|
||||||
<br>
|
|
||||||
<span class="list-group-time">{{ item.time }}</span>
|
|
||||||
</td>
|
|
||||||
{% else %}
|
|
||||||
</td>
|
|
||||||
{% endif %}
|
|
||||||
{% if item.link %}
|
|
||||||
<td class="list-group-link">
|
|
||||||
<a href="{{ item.link }}" target="_blank" class="btncv z-depth-0">
|
|
||||||
{% if item.linkname %}{{ item.linkname }}{% else %}DOC{% endif %}
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
{% endif %}
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
<table class="table table-cv table-sm table-borderless table-responsive">
|
|
||||||
{% for content in entry.contents %}
|
|
||||||
<tr>
|
|
||||||
<td class="p-1 pr-2 font-weight-bold">
|
|
||||||
<b>{{ content.name }}</b>
|
|
||||||
</td>
|
|
||||||
{% if content.value %}
|
|
||||||
<td class="p-1 pl-2 font-weight-light text">{{ content.value }}</td>
|
|
||||||
{% endif %}
|
|
||||||
{% if content.links %}
|
|
||||||
<td class="p-1 pl-2 font-weight-light text">
|
|
||||||
<div class="container-pdf">
|
|
||||||
{% for item in content.links %}
|
|
||||||
{% if item.link %}
|
|
||||||
<div class="container-link-button">
|
|
||||||
{% if item.name %}
|
|
||||||
<a href="{{ item.link }}" target="_blank" class="btncv z-depth-0">{{ item.name }}</a>
|
|
||||||
{% else %}
|
|
||||||
<a href="{{ item.link }}" target="_blank" class="btncv z-depth-0">doc</a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
{% endif %}
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% for content in entry.contents %}
|
|
||||||
<li class="list-group-item">
|
|
||||||
<h5 class="font-italic">{{ content.title }}</h5>
|
|
||||||
{% if content.items %}
|
|
||||||
<ul class="subitems">
|
|
||||||
{% for subitem in content.items %}
|
|
||||||
<li>
|
|
||||||
<span class="subitem">{{ subitem }}</span>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
31
_includes/cv/projects.liquid
Normal file
31
_includes/cv/projects.liquid
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified projects entry renderer for both formats
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<ul class="card-text font-weight-light list-group list-group-flush">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
{% if entry.url %}
|
||||||
|
<h6 class="title font-weight-bold">
|
||||||
|
<a href="{{ entry.url }}" target="_blank">{{ entry.name }}</a>
|
||||||
|
</h6>
|
||||||
|
{% else %}
|
||||||
|
<h6 class="title font-weight-bold">{{ entry.name }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.summary %}
|
||||||
|
<p>{{ entry.summary | markdownify | remove: '<p>' | remove: '</p>' }}</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.highlights %}
|
||||||
|
<ul class="items">
|
||||||
|
{% for item in entry.highlights %}
|
||||||
|
<li>
|
||||||
|
<span class="item">{{ item | markdownify | remove: '<p>' | remove: '</p>' }}</span>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
70
_includes/cv/publications.liquid
Normal file
70
_includes/cv/publications.liquid
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified publications entry renderer for both formats
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<ul class="card-text font-weight-light list-group list-group-flush">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
<div class="row">
|
||||||
|
{% capture pub_date %}
|
||||||
|
{% if entry.releaseDate %}{{ entry.releaseDate }}{% elsif entry.date %}{{ entry.date }}{% endif %}
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% if pub_date != '' %}
|
||||||
|
<div class="col-xs-2 col-sm-2 col-md-2 text-center">
|
||||||
|
<table class="table-cv">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px">
|
||||||
|
{{- pub_date | split: '-' | slice: 0, 1 | join: '' -}}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
||||||
|
{% if entry.url %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
||||||
|
<a href="{{ entry.url }}">{{ entry.title | default: entry.name }}</a>
|
||||||
|
</h6>
|
||||||
|
{% elsif entry.title %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">{{ entry.title }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.publisher %}
|
||||||
|
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">
|
||||||
|
<em>{{ entry.publisher }}</em>
|
||||||
|
</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.summary %}
|
||||||
|
<p class="ml-1 ml-md-4">{{ entry.summary | markdownify | remove: '<p>' | remove: '</p>' }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="col-xs-12 col-sm-12 col-md-12">
|
||||||
|
{% if entry.url %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
||||||
|
<a href="{{ entry.url }}">{{ entry.title | default: entry.name }}</a>
|
||||||
|
</h6>
|
||||||
|
{% elsif entry.title %}
|
||||||
|
<h6 class="title font-weight-bold ml-1 ml-md-4">{{ entry.title }}</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.publisher %}
|
||||||
|
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">
|
||||||
|
<em>{{ entry.publisher }}</em>
|
||||||
|
</h6>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if entry.summary %}
|
||||||
|
<p class="ml-1 ml-md-4">{{ entry.summary | markdownify | remove: '<p>' | remove: '</p>' }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
15
_includes/cv/references.liquid
Normal file
15
_includes/cv/references.liquid
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified references entry renderer for both formats
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<ul class="card-text font-weight-light list-group list-group-flush">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
{% if entry.icon %}
|
||||||
|
<i class="{{ entry.icon }}"></i>
|
||||||
|
{% endif %}
|
||||||
|
<strong>{{ entry.name }}</strong>
|
||||||
|
<p>{{ entry.reference | markdownify | remove: '<p>' | remove: '</p>' }}</p>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
32
_includes/cv/skills.liquid
Normal file
32
_includes/cv/skills.liquid
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{% comment %}
|
||||||
|
Unified skills entry renderer for both formats
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<div class="card-text font-weight-light">
|
||||||
|
{% for entry in entries %}
|
||||||
|
<div class="skill-item">
|
||||||
|
{% if entry.icon %}
|
||||||
|
<i class="{{ entry.icon }}"></i>
|
||||||
|
{% endif %}
|
||||||
|
<strong>
|
||||||
|
{{- entry.name -}}
|
||||||
|
{%- if entry.level %} ({{ entry.level }}){% endif %}:</strong
|
||||||
|
>
|
||||||
|
{% if entry.keywords %}
|
||||||
|
{% for keyword in entry.keywords %}
|
||||||
|
{% if forloop.last %}
|
||||||
|
{{ keyword }}
|
||||||
|
{% else %}
|
||||||
|
{{ keyword }},
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.skill-item {
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,118 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% for content in entry.contents %}
|
|
||||||
<li class="list-group-item">
|
|
||||||
<div class="row">
|
|
||||||
{% if content.year %}
|
|
||||||
<div class="col-xs-2 col-sm-2 col-md-2 text-center" style="width: 75px">
|
|
||||||
<table class="table-cv">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px">
|
|
||||||
{{- content.year -}}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% if content.location %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<p class="location">
|
|
||||||
<i class="fa-solid fa-location-dot iconlocation"></i>
|
|
||||||
{{ content.location }}
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
|
||||||
{% if content.title %}
|
|
||||||
<h6 class="title font-weight-bold ml-1 ml-md-4">{{ content.title }}</h6>
|
|
||||||
{% endif %}
|
|
||||||
{% if content.department or content.institution %}
|
|
||||||
<table class="table-cv ml-1 ml-md-4 institution">
|
|
||||||
<tbody>
|
|
||||||
{% if content.institution %}
|
|
||||||
<tr>
|
|
||||||
<td style="vertical-align: top; text-align: center" class="institution">
|
|
||||||
<i class="fa-solid fa-building-columns iconinstitution"></i>
|
|
||||||
</td>
|
|
||||||
<td class="institution">{{ content.institution }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
{% if content.department %}
|
|
||||||
<tr>
|
|
||||||
<td style="vertical-align: top; text-align: center" class="department">
|
|
||||||
<i class="fa-regular fa-circle-dot icondepartment"></i>
|
|
||||||
</td>
|
|
||||||
<td class="department">{{ content.department }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
{% endif %}
|
|
||||||
{% if content.maindescription %}
|
|
||||||
<div class="ml-1 ml-md-4">{{ content.maindescription }}</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if content.description %}
|
|
||||||
<ul class="items">
|
|
||||||
{% for item in content.description %}
|
|
||||||
<li>
|
|
||||||
{% if item.contents %}
|
|
||||||
<span class="item-title">{{ item.title }}</span>
|
|
||||||
<ul class="subitems">
|
|
||||||
{% for subitem in item.contents %}
|
|
||||||
<li>
|
|
||||||
<span class="subitem">{{ subitem }}</span>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% else %}
|
|
||||||
<span class="item">{{ item }}</span>
|
|
||||||
{% endif %}
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
{% if content.items %}
|
|
||||||
<ul class="items">
|
|
||||||
{% for item in content.items %}
|
|
||||||
<li>
|
|
||||||
{% if item.contents %}
|
|
||||||
<span class="item-title">{{ item.title }}</span>
|
|
||||||
<ul class="subitems">
|
|
||||||
{% for subitem in item.contents %}
|
|
||||||
<li>
|
|
||||||
<span class="subitem">{{ subitem }}</span>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% else %}
|
|
||||||
<span class="item">{{ item }}</span>
|
|
||||||
{% endif %}
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
{% if content.linkitems %}
|
|
||||||
<div class="container-links ml-1 ml-md-4">
|
|
||||||
{% for item in content.linkitems %}
|
|
||||||
{% if item.link %}
|
|
||||||
<div class="container-link-button">
|
|
||||||
{% if item.linkname %}
|
|
||||||
<a href="{{ item.link }}" target="_blank" class="btncv z-depth-0">{{ item.linkname }}</a>
|
|
||||||
{% else %}
|
|
||||||
<a href="{{ item.link }}" target="_blank" class="btncv z-depth-0">doc</a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% for content in data[1] %}
|
|
||||||
<li class="list-group-item">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
|
|
||||||
{% if content.date %} {% assign date = content.date | split: '-' | join: '.' %} {% else %} {% assign date = '' %} {% endif %}
|
|
||||||
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px"> {{ date }} </span>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
|
||||||
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
|
||||||
<a href="{{ content.url }}">{{ content.title }}</a>
|
|
||||||
</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ content.awarder }}</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
<table class="table table-cv table-sm table-borderless table-responsive table-cv-map">
|
|
||||||
{% assign skip_basics = 'image,profiles,location' | split: ',' %}
|
|
||||||
{% for content in data[1] %}
|
|
||||||
{%
|
|
||||||
if (content[1] == "") or (skip_basics contains
|
|
||||||
content[0])
|
|
||||||
%}
|
|
||||||
{% continue %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="p-1 pr-2 font-weight-bold">
|
|
||||||
<b>{{ content[0] | capitalize }}</b>
|
|
||||||
</td>
|
|
||||||
<td class="p-1 pl-2 font-weight-light text">
|
|
||||||
{% if content[0] == 'url' %}
|
|
||||||
<a href="{{ content[1] }}" target="_blank" rel="noopener noreferrer">{{ content[1] }}</a>
|
|
||||||
{% elsif content[0] == 'email' %}
|
|
||||||
<a href="mailto:{{ content[1] }}" target="_blank">{{ content[1] }}</a>
|
|
||||||
{% elsif content[0] == 'phone' %}
|
|
||||||
<a href="tel:{{ content[1] }}">{{ content[1] }}</a>
|
|
||||||
{% else %}
|
|
||||||
{{ content[1] }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
<div class="list-groups">
|
|
||||||
{% assign certificates = data[1] | sort: 'date' | reverse %}
|
|
||||||
{% for content in certificates %}
|
|
||||||
<div class="list-group col-md-6">
|
|
||||||
<table class="table-cv list-group-table">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
{% if content.icon %}
|
|
||||||
<td class="list-group-category-icon">
|
|
||||||
<i class="{{ content.icon }}"></i>
|
|
||||||
</td>
|
|
||||||
{% else %}
|
|
||||||
<td class="list-group-category-icon"></td>
|
|
||||||
{% endif %}
|
|
||||||
<!-- Calculate colspan number for category title -->
|
|
||||||
{% assign i = 1 %}
|
|
||||||
{% for item in content.items %}
|
|
||||||
{% assign i = i | plus: 1 %}
|
|
||||||
{% endfor %}
|
|
||||||
<td colspan="{{ i }}" class="list-group-category">
|
|
||||||
<a href="{{ content.url | default: # }}">{{ content.name }}</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td class="list-group-name">
|
|
||||||
<b>{{ content.issuer }}</b>
|
|
||||||
</td>
|
|
||||||
<td class="list-group-name">{{ content.date }}</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% assign education = data[1] | sort: 'startDate' | reverse %}
|
|
||||||
{% for content in education %}
|
|
||||||
<li class="list-group-item">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
|
|
||||||
{% if content.startDate and content.startDate != '' %}
|
|
||||||
{% assign startDate = content.startDate | split: '-' | slice: 0, 2 | join: '.' %}
|
|
||||||
{% assign endDate = content.endDate | split: '-' | slice: 0, 2 | join: '.' | default: 'Present' %}
|
|
||||||
{% assign date = startDate | append: ' - ' %}
|
|
||||||
{% assign date = date | append: endDate %}
|
|
||||||
{% else %}
|
|
||||||
{% assign date = null %}
|
|
||||||
{% endif %}
|
|
||||||
<table class="table-cv">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
{% if date %}
|
|
||||||
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px"> {{ date }} </span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% if content.location %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<p class="location">
|
|
||||||
<i class="fa-solid fa-location-dot iconlocation"></i>
|
|
||||||
{{ content.location }}
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
|
||||||
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
|
||||||
<a href="{{ content.url }}">{{ content.studyType }}</a>
|
|
||||||
</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ content.institution }}</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.area }}</h6>
|
|
||||||
<ul class="items">
|
|
||||||
{% for item in content.courses %}
|
|
||||||
<li>
|
|
||||||
<span class="item">{{ item }}</span>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
@ -1,34 +0,0 @@
|
|||||||
<div class="list-groups">
|
|
||||||
{% for content in data[1] %}
|
|
||||||
<div class="list-group col-md-6">
|
|
||||||
<table class="table-cv list-group-table">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
{% if content.icon %}
|
|
||||||
<td class="list-group-category-icon">
|
|
||||||
<i class="{{ content.icon }}"></i>
|
|
||||||
</td>
|
|
||||||
{% else %}
|
|
||||||
<td class="list-group-category-icon"></td>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign i = 1 %}
|
|
||||||
{% for item in content.keywords %}
|
|
||||||
{% assign i = i | plus: 1 %}
|
|
||||||
{% endfor %}
|
|
||||||
<td colspan="{{ i }}" class="list-group-category">{{ content.name }}</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
{% for item in content.keywords %}
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td class="list-group-name">
|
|
||||||
<b>{{ item }}</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
<div class="list-groups">
|
|
||||||
{% for content in data[1] %}
|
|
||||||
<div class="list-group col-md-6">
|
|
||||||
<table class="table-cv list-group-table">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
{% if content.icon %}
|
|
||||||
<td class="list-group-category-icon">
|
|
||||||
<i class="{{ content.icon }}"></i>
|
|
||||||
</td>
|
|
||||||
{% else %}
|
|
||||||
<td class="list-group-category-icon"></td>
|
|
||||||
{% endif %}
|
|
||||||
<!-- Calculate colspan number for category title -->
|
|
||||||
{% assign i = 1 %}
|
|
||||||
{% for item in content.items %}
|
|
||||||
{% assign i = i | plus: 1 %}
|
|
||||||
{% endfor %}
|
|
||||||
<td colspan="{{ i }}" class="list-group-category">{{ content.language }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td class="list-group-name">
|
|
||||||
<b>{{ content.fluency }}</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% for content in data[1] %}
|
|
||||||
<li class="list-group-item">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
|
|
||||||
{% if content.startDate %}
|
|
||||||
{% assign startDate = content.startDate | split: '-' | slice: 0, 2 | join: '.' %}
|
|
||||||
{% assign endDate = content.endDate | split: '-' | slice: 0, 2 | join: '.' | default: 'Present' %}
|
|
||||||
{% assign date = startDate | append: ' - ' %}
|
|
||||||
{% assign date = date | append: endDate %}
|
|
||||||
{% else %}
|
|
||||||
{% assign date = '' %}
|
|
||||||
{% endif %}
|
|
||||||
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px"> {{ date }} </span>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
|
||||||
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
|
||||||
<a href="{{ content.url }}">{{ content.name }}</a>
|
|
||||||
</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
|
|
||||||
<ul class="items">
|
|
||||||
{% for item in content.highlights %}
|
|
||||||
<li>
|
|
||||||
<span class="item">{{ item }}</span>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% assign publications = data[1] | sort: 'releaseDate' | reverse %}
|
|
||||||
{% for content in publications %}
|
|
||||||
<li class="list-group-item">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
|
|
||||||
{% if content.releaseDate %} {% assign date = content.releaseDate | split: '-' | join: '.' %} {% else %} {% assign date = '' %} {% endif %}
|
|
||||||
<table class="table-cv">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px">{{ date }}</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
|
||||||
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
|
||||||
<a href="{{ content.url }}">{{ content.name }}</a>
|
|
||||||
</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ content.publisher }}</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
<div class="list-groups">
|
|
||||||
{% for content in data[1] %}
|
|
||||||
<div class="list-group col-md-6">
|
|
||||||
<table class="table-cv list-group-table">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
{% if content.icon %}
|
|
||||||
<td class="list-group-category-icon">
|
|
||||||
<i class="{{ content.icon }}"></i>
|
|
||||||
</td>
|
|
||||||
{% else %}
|
|
||||||
<td class="list-group-category-icon"></td>
|
|
||||||
{% endif %}
|
|
||||||
<!-- Calculate colspan number for category title -->
|
|
||||||
{% assign i = 1 %}
|
|
||||||
{% for item in content.items %}
|
|
||||||
{% assign i = i | plus: 1 %}
|
|
||||||
{% endfor %}
|
|
||||||
<td colspan="{{ i }}" class="list-group-category">{{ content.name }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td class="list-group-name">
|
|
||||||
<b>{{ content.reference }}</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
<div class="list-groups">
|
|
||||||
{% for content in data[1] %}
|
|
||||||
<div class="list-group col-md-6" title="{{ content.level }}">
|
|
||||||
<table class="table-cv list-group-table">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
{% if content.icon %}
|
|
||||||
<td class="list-group-category-icon">
|
|
||||||
<i class="{{ content.icon }}"></i>
|
|
||||||
</td>
|
|
||||||
{% else %}
|
|
||||||
<td class="list-group-category-icon"></td>
|
|
||||||
{% endif %}
|
|
||||||
<!-- Calculate colspan number for category title -->
|
|
||||||
{% assign i = 1 %}
|
|
||||||
{% for item in content.items %}
|
|
||||||
{% assign i = i | plus: 1 %}
|
|
||||||
{% endfor %}
|
|
||||||
<td colspan="{{ i }}" class="list-group-category">{{ content.name }}</td>
|
|
||||||
</tr>
|
|
||||||
{% for item in content.keywords %}
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td class="list-group-name">
|
|
||||||
<b>{{ item }}</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% assign volunteer = data[1] | sort: 'startDate' | reverse %}
|
|
||||||
{% for content in volunteer %}
|
|
||||||
<li class="list-group-item">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
|
|
||||||
{% if content.startDate %}
|
|
||||||
{% assign startDate = content.startDate | split: '-' | slice: 0, 2 | join: '.' %}
|
|
||||||
{% assign endDate = content.endDate | split: '-' | slice: 0, 2 | join: '.' | default: 'Present' %}
|
|
||||||
{% assign date = startDate | append: ' - ' %}
|
|
||||||
{% assign date = date | append: endDate %}
|
|
||||||
{% else %}
|
|
||||||
{% assign date = '' %}
|
|
||||||
{% endif %}
|
|
||||||
<table class="table-cv">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px"> {{ date }} </span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% if content.location %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<p class="location">
|
|
||||||
<i class="fa-solid fa-location-dot iconlocation"></i>
|
|
||||||
{{ content.location }}
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
|
||||||
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
|
||||||
<a href="{{ content.url }}">{{ content.position }}</a>
|
|
||||||
</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ content.organization }}</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
|
|
||||||
<ul class="items">
|
|
||||||
{% for item in content.highlights %}
|
|
||||||
<li>
|
|
||||||
<span class="item">{{ item }}</span>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
<ul class="card-text font-weight-light list-group list-group-flush">
|
|
||||||
{% assign work = data[1] | sort: 'startDate' | reverse %}
|
|
||||||
{% for content in work %}
|
|
||||||
<li class="list-group-item">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-2 col-sm-2 col-md-2 text-center date-column">
|
|
||||||
{% if content.startDate %}
|
|
||||||
{% assign startDate = content.startDate | split: '-' | slice: 0, 2 | join: '.' %}
|
|
||||||
{% assign endDate = content.endDate | split: '-' | slice: 0, 2 | join: '.' | default: 'Present' %}
|
|
||||||
{% assign date = startDate | append: ' - ' %}
|
|
||||||
{% assign date = date | append: endDate %}
|
|
||||||
{% else %}
|
|
||||||
{% assign date = '' %}
|
|
||||||
{% endif %}
|
|
||||||
<table class="table-cv">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span class="badge font-weight-bold danger-color-dark text-uppercase align-middle" style="min-width: 75px"> {{ date }} </span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% if content.location %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<p class="location">
|
|
||||||
<i class="fa-solid fa-location-dot iconlocation"></i>
|
|
||||||
{{ content.location }}
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-10 col-sm-10 col-md-10 mt-2 mt-md-0">
|
|
||||||
<h6 class="title font-weight-bold ml-1 ml-md-4">
|
|
||||||
<a href="{{ content.url }}">{{ content.position }}</a>
|
|
||||||
</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem">{{ content.name }}</h6>
|
|
||||||
<h6 class="ml-1 ml-md-4" style="font-size: 0.95rem; font-style: italic">{{ content.summary }}</h6>
|
|
||||||
<ul class="items">
|
|
||||||
{% for item in content.highlights %}
|
|
||||||
<li>
|
|
||||||
<span class="item">{{ item }}</span>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
@ -1,127 +1,386 @@
|
|||||||
---
|
---
|
||||||
layout: default
|
layout: default
|
||||||
---
|
---
|
||||||
{% unless site.data.resume %}
|
{% comment %}
|
||||||
<div class="post">
|
Unified CV layout that handles both RenderCV (YAML) and JSONResume (JSON) formats
|
||||||
<header class="post-header">
|
- If page.cv_format is set, it determines which format to render:
|
||||||
<h1 class="post-title">
|
- 'rendercv': Load and render only RenderCV data (site.data.cv.cv)
|
||||||
{{ page.title }}
|
- 'jsonresume': Load and render only JSONResume data (site.data.resume)
|
||||||
{% if page.cv_pdf %}
|
- If page.cv_format is not set, the legacy behavior applies:
|
||||||
<a
|
- RenderCV data is in site.data.cv.cv
|
||||||
{% if page.cv_pdf contains '://' %}
|
- JSONResume data is in site.data.resume
|
||||||
href="{{ page.cv_pdf }}"
|
- RenderCV is prioritized if both exist
|
||||||
{% else %}
|
Both formats use the same unified rendering includes for consistent output
|
||||||
href="{{ page.cv_pdf | relative_url }}"
|
{% endcomment %}
|
||||||
{% endif %}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
class="float-right"
|
|
||||||
>
|
|
||||||
<i class="fa-solid fa-file-pdf"></i>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
</h1>
|
|
||||||
{% if page.description %}
|
|
||||||
<p class="post-description">{{ page.description }}</p>
|
|
||||||
{% endif %}
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<article>
|
<div class="post">
|
||||||
<div class="cv">
|
<header class="post-header">
|
||||||
{% for entry in site.data.cv %}
|
<h1 class="post-title">
|
||||||
<a class="anchor" id="{{ entry.title }}"></a>
|
{{ page.title }}
|
||||||
|
{% if page.cv_pdf %}
|
||||||
|
<a
|
||||||
|
{% if page.cv_pdf contains '://' %}
|
||||||
|
href="{{ page.cv_pdf }}"
|
||||||
|
{% else %}
|
||||||
|
href="{{ page.cv_pdf | relative_url }}"
|
||||||
|
{% endif %}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
class="float-right"
|
||||||
|
>
|
||||||
|
<i class="fa-solid fa-file-pdf"></i>
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</h1>
|
||||||
|
{% if page.description %}
|
||||||
|
<p class="post-description">{{ page.description }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<div class="cv">
|
||||||
|
{% comment %} Determine which CV format to render {% endcomment %}
|
||||||
|
{% assign render_rendercv = false %}
|
||||||
|
{% assign render_jsonresume = false %}
|
||||||
|
|
||||||
|
{% if page.cv_format == 'rendercv' %}
|
||||||
|
{% assign render_rendercv = true %}
|
||||||
|
{% elsif page.cv_format == 'jsonresume' %}
|
||||||
|
{% assign render_jsonresume = true %}
|
||||||
|
{% else %}
|
||||||
|
{% comment %} Legacy behavior: RenderCV takes priority if both exist {% endcomment %}
|
||||||
|
{% if site.data.cv and site.data.cv.cv %}
|
||||||
|
{% assign render_rendercv = true %}
|
||||||
|
{% elsif site.data.resume %}
|
||||||
|
{% assign render_jsonresume = true %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if render_rendercv and site.data.cv and site.data.cv.cv %}
|
||||||
|
{% comment %} RenderCV format {% endcomment %}
|
||||||
|
{% assign cv = site.data.cv.cv %}
|
||||||
|
|
||||||
|
<!-- Header/Contact Information -->
|
||||||
|
{% if cv.name or cv.label or cv.location or cv.email or cv.phone or cv.website %}
|
||||||
<div class="card mt-3 p-3">
|
<div class="card mt-3 p-3">
|
||||||
<h3 class="card-title font-weight-medium">{{ entry.title }}</h3>
|
<h3 class="card-title font-weight-medium">Contact Information</h3>
|
||||||
|
<table class="table table-cv table-sm table-borderless">
|
||||||
|
{% if cv.name %}
|
||||||
|
<tr>
|
||||||
|
<td class="p-1 pr-2 font-weight-bold"><b>Name</b></td>
|
||||||
|
<td class="p-1 pl-2 font-weight-light">{{ cv.name }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% if cv.label %}
|
||||||
|
<tr>
|
||||||
|
<td class="p-1 pr-2 font-weight-bold"><b>Professional Title</b></td>
|
||||||
|
<td class="p-1 pl-2 font-weight-light">{{ cv.label }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% if cv.email %}
|
||||||
|
<tr>
|
||||||
|
<td class="p-1 pr-2 font-weight-bold"><b>Email</b></td>
|
||||||
|
<td class="p-1 pl-2 font-weight-light">{{ cv.email }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% if cv.phone %}
|
||||||
|
<tr>
|
||||||
|
<td class="p-1 pr-2 font-weight-bold"><b>Phone</b></td>
|
||||||
|
<td class="p-1 pl-2 font-weight-light">{{ cv.phone }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% if cv.address %}
|
||||||
|
<tr>
|
||||||
|
<td class="p-1 pr-2 font-weight-bold"><b>Location</b></td>
|
||||||
|
<td class="p-1 pl-2 font-weight-light">
|
||||||
|
{% if cv.address.street %}{{ cv.address.street }}, {% endif %}
|
||||||
|
{% if cv.address.city %}{{ cv.address.city }}, {% endif %}
|
||||||
|
{% if cv.address.region %}{{ cv.address.region }} {% endif %}
|
||||||
|
{% if cv.address.postalCode %}{{ cv.address.postalCode }}{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% if cv.website %}
|
||||||
|
<tr>
|
||||||
|
<td class="p-1 pr-2 font-weight-bold"><b>Website</b></td>
|
||||||
|
<td class="p-1 pl-2 font-weight-light">
|
||||||
|
<a href="{{ cv.website }}" target="_blank">{{ cv.website }}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Summary -->
|
||||||
|
{% if cv.summary %}
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Professional Summary</h3>
|
||||||
|
<p>{{ cv.summary | markdownify | remove: '<p>' | remove: '</p>' }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- RenderCV Sections - Merge Experience and Volunteer -->
|
||||||
|
{% comment %} First, combine Experience and Volunteer entries {% endcomment %}
|
||||||
|
{% assign combined_experience = cv.sections.Experience | concat: cv.sections.Volunteer %}
|
||||||
|
{% if combined_experience.size > 0 %}
|
||||||
|
<a class="anchor" id="experience"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Experience</h3>
|
||||||
<div>
|
<div>
|
||||||
{% if entry.type == 'list' %}
|
{% assign entries = combined_experience %}
|
||||||
{% include cv/list.liquid %}
|
{% include cv/experience.liquid %}
|
||||||
{% elsif entry.type == 'map' %}
|
</div>
|
||||||
{% include cv/map.liquid %}
|
</div>
|
||||||
{% elsif entry.type == 'nested_list' %}
|
{% endif %}
|
||||||
{% include cv/nested_list.liquid %}
|
|
||||||
{% elsif entry.type == 'time_table' %}
|
{% comment %} Now render all other sections except Experience and Volunteer {% endcomment %}
|
||||||
{% include cv/time_table.liquid %}
|
{% for section_pair in cv.sections %}
|
||||||
{% elsif entry.type == 'list_groups' %}
|
{% assign section_title = section_pair[0] %}
|
||||||
{% include cv/list_groups.liquid %}
|
{% assign section_entries = section_pair[1] %}
|
||||||
|
|
||||||
|
{% comment %} Skip Experience and Volunteer as we've already processed them combined {% endcomment %}
|
||||||
|
{% if section_title == 'Experience' or section_title == 'Volunteer' %}
|
||||||
|
{% continue %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<a class="anchor" id="{{ section_title | slugify }}"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">{{ section_title }}</h3>
|
||||||
|
<div>
|
||||||
|
{% if section_title == 'Education' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/education.liquid %}
|
||||||
|
{% elsif section_title == 'Awards' or section_title == 'Honors and Awards' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/awards.liquid %}
|
||||||
|
{% elsif section_title == 'Publications' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/publications.liquid %}
|
||||||
|
{% elsif section_title == 'Skills' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/skills.liquid %}
|
||||||
|
{% elsif section_title == 'Languages' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/languages.liquid %}
|
||||||
|
{% elsif section_title == 'Interests' or section_title == 'Academic Interests' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/interests.liquid %}
|
||||||
|
{% elsif section_title == 'Certificates' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/certificates.liquid %}
|
||||||
|
{% elsif section_title == 'Projects' or section_title == 'Open Source Projects' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/projects.liquid %}
|
||||||
|
{% elsif section_title == 'References' %}
|
||||||
|
{% assign entries = section_entries %}
|
||||||
|
{% include cv/references.liquid %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ entry.contents }}
|
<!-- Generic section -->
|
||||||
|
{% for entry in section_entries %}
|
||||||
|
{% if entry.bullet %}
|
||||||
|
<ul class="card-text font-weight-light list-group list-group-flush">
|
||||||
|
<li class="list-group-item">{{ entry.bullet | markdownify | remove: '<p>' | remove: '</p>' }}</li>
|
||||||
|
</ul>
|
||||||
|
{% elsif entry.label %}
|
||||||
|
<div class="card-text font-weight-light">
|
||||||
|
<strong>{{ entry.label }}:</strong> {{ entry.details }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="post">
|
|
||||||
<header class="post-header">
|
|
||||||
<h1 class="post-title">
|
|
||||||
{{ page.title }}
|
|
||||||
{% if page.cv_pdf %}
|
|
||||||
<a
|
|
||||||
{% if page.cv_pdf contains '://' %}
|
|
||||||
href="{{ page.cv_pdf }}"
|
|
||||||
{% else %}
|
|
||||||
href="{{ page.cv_pdf | relative_url }}"
|
|
||||||
{% endif %}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
class="float-right"
|
|
||||||
>
|
|
||||||
<i class="fa-solid fa-file-pdf"></i>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
</h1>
|
|
||||||
{% if page.description %}
|
|
||||||
<p class="post-description">{{ page.description }}</p>
|
|
||||||
{% endif %}
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<article>
|
{% elsif render_jsonresume and site.data.resume %}
|
||||||
<div class="cv">
|
{% comment %} JSONResume format {% endcomment %}
|
||||||
{% for data in site.data.resume %}
|
|
||||||
{% if site.jsonresume and site.jsonresume.size > 0 %}
|
<!-- Contact Information -->
|
||||||
{% unless site.jsonresume contains data[0] %}
|
{% if site.data.resume.basics %}
|
||||||
{% continue %}
|
|
||||||
{% endunless %}
|
|
||||||
{% endif %}
|
|
||||||
{% if data[0] == 'meta' or data[1].size == 0 %} {% continue %} {% endif %}
|
|
||||||
<a class="anchor" id="{{ data[0] }}"></a>
|
|
||||||
<div class="card mt-3 p-3">
|
<div class="card mt-3 p-3">
|
||||||
<h3 class="card-title font-weight-medium">{{ data[0] | capitalize }}</h3>
|
<h3 class="card-title font-weight-medium">Contact Information</h3>
|
||||||
<div>
|
{% assign basics = site.data.resume.basics %}
|
||||||
{% case data[0] %}
|
<table class="table table-cv table-sm table-borderless">
|
||||||
{% when 'basics' %}
|
{% if basics.name %}
|
||||||
{% include resume/basics.liquid %}
|
<tr>
|
||||||
{% when 'education' %}
|
<td class="p-1 pr-2 font-weight-bold"><b>Name</b></td>
|
||||||
{% include resume/education.liquid %}
|
<td class="p-1 pl-2 font-weight-light">{{ basics.name }}</td>
|
||||||
{% when 'work' %}
|
</tr>
|
||||||
{% include resume/work.liquid %}
|
{% endif %}
|
||||||
{% when 'volunteer' %}
|
{% if basics.label %}
|
||||||
{% include resume/volunteer.liquid %}
|
<tr>
|
||||||
{% when 'projects' %}
|
<td class="p-1 pr-2 font-weight-bold"><b>Professional Title</b></td>
|
||||||
{% include resume/projects.liquid %}
|
<td class="p-1 pl-2 font-weight-light">{{ basics.label }}</td>
|
||||||
{% when 'awards' %}
|
</tr>
|
||||||
{% include resume/awards.liquid %}
|
{% endif %}
|
||||||
{% when 'skills' %}
|
{% if basics.email %}
|
||||||
{% include resume/skills.liquid %}
|
<tr>
|
||||||
{% when 'publications' %}
|
<td class="p-1 pr-2 font-weight-bold"><b>Email</b></td>
|
||||||
{% include resume/publications.liquid %}
|
<td class="p-1 pl-2 font-weight-light">{{ basics.email }}</td>
|
||||||
{% when 'languages' %}
|
</tr>
|
||||||
{% include resume/languages.liquid %}
|
{% endif %}
|
||||||
{% when 'interests' %}
|
{% if basics.phone %}
|
||||||
{% include resume/interests.liquid %}
|
<tr>
|
||||||
{% when 'certificates' %}
|
<td class="p-1 pr-2 font-weight-bold"><b>Phone</b></td>
|
||||||
{% include resume/certificates.liquid %}
|
<td class="p-1 pl-2 font-weight-light">{{ basics.phone }}</td>
|
||||||
{% when 'references' %}
|
</tr>
|
||||||
{% include resume/references.liquid %}
|
{% endif %}
|
||||||
{% else %}
|
{% if basics.location %}
|
||||||
|
<tr>
|
||||||
|
<td class="p-1 pr-2 font-weight-bold"><b>Location</b></td>
|
||||||
|
<td class="p-1 pl-2 font-weight-light">
|
||||||
|
{% if basics.location.address %}{{ basics.location.address }}, {% endif %}
|
||||||
|
{% if basics.location.city %}{{ basics.location.city }}, {% endif %}
|
||||||
|
{% if basics.location.region %}{{ basics.location.region }} {% endif %}
|
||||||
|
{% if basics.location.postalCode %}{{ basics.location.postalCode }}{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% if basics.url %}
|
||||||
|
<tr>
|
||||||
|
<td class="p-1 pr-2 font-weight-bold"><b>Website</b></td>
|
||||||
|
<td class="p-1 pl-2 font-weight-light">
|
||||||
|
<a href="{{ basics.url }}" target="_blank">{{ basics.url }}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% endcase %}
|
<!-- Summary -->
|
||||||
|
{% if site.data.resume.basics.summary %}
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Professional Summary</h3>
|
||||||
|
<p>{{ site.data.resume.basics.summary | markdownify | remove: '<p>' | remove: '</p>' }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- JSONResume Sections - Merge work and volunteer into Experience -->
|
||||||
|
{% assign combined_experience = site.data.resume.work | concat: site.data.resume.volunteer %}
|
||||||
|
{% if combined_experience.size > 0 %}
|
||||||
|
<a class="anchor" id="experience"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Experience</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = combined_experience %}
|
||||||
|
{% include cv/experience.liquid %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endif %}
|
||||||
</div>
|
|
||||||
</article>
|
<!-- Education -->
|
||||||
</div>
|
{% if site.data.resume.education.size > 0 %}
|
||||||
{% endunless %}
|
<a class="anchor" id="education"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Education</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.education %}
|
||||||
|
{% include cv/education.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Awards -->
|
||||||
|
{% if site.data.resume.awards.size > 0 %}
|
||||||
|
<a class="anchor" id="awards"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Awards</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.awards %}
|
||||||
|
{% include cv/awards.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Publications -->
|
||||||
|
{% if site.data.resume.publications.size > 0 %}
|
||||||
|
<a class="anchor" id="publications"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Publications</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.publications %}
|
||||||
|
{% include cv/publications.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Skills -->
|
||||||
|
{% if site.data.resume.skills.size > 0 %}
|
||||||
|
<a class="anchor" id="skills"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Skills</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.skills %}
|
||||||
|
{% include cv/skills.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Languages -->
|
||||||
|
{% if site.data.resume.languages.size > 0 %}
|
||||||
|
<a class="anchor" id="languages"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Languages</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.languages %}
|
||||||
|
{% include cv/languages.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Interests -->
|
||||||
|
{% if site.data.resume.interests.size > 0 %}
|
||||||
|
<a class="anchor" id="interests"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Interests</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.interests %}
|
||||||
|
{% include cv/interests.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Certificates -->
|
||||||
|
{% if site.data.resume.certificates.size > 0 %}
|
||||||
|
<a class="anchor" id="certificates"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Certificates</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.certificates %}
|
||||||
|
{% include cv/certificates.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Projects -->
|
||||||
|
{% if site.data.resume.projects.size > 0 %}
|
||||||
|
<a class="anchor" id="projects"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">Projects</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.projects %}
|
||||||
|
{% include cv/projects.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- References -->
|
||||||
|
{% if site.data.resume.references.size > 0 %}
|
||||||
|
<a class="anchor" id="references"></a>
|
||||||
|
<div class="card mt-3 p-3">
|
||||||
|
<h3 class="card-title font-weight-medium">References</h3>
|
||||||
|
<div>
|
||||||
|
{% assign entries = site.data.resume.references %}
|
||||||
|
{% include cv/references.liquid %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<p>No CV data found. Please configure either RenderCV (cv.yml) or JSONResume (resume.json) data.</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
---
|
---
|
||||||
layout: cv
|
layout: cv
|
||||||
permalink: /cv/
|
permalink: /cv/
|
||||||
title: cv
|
title: CV
|
||||||
nav: true
|
nav: true
|
||||||
nav_order: 5
|
nav_order: 5
|
||||||
cv_pdf: /assets/pdf/example_pdf.pdf # you can also use external links here
|
cv_pdf: /assets/pdf/example_pdf.pdf # you can also use external links here
|
||||||
|
cv_format: rendercv # options: rendercv, jsonresume
|
||||||
description: This is a description of the page. You can modify it in '_pages/cv.md'. You can also change or remove the top pdf download button.
|
description: This is a description of the page. You can modify it in '_pages/cv.md'. You can also change or remove the top pdf download button.
|
||||||
toc:
|
toc:
|
||||||
sidebar: left
|
sidebar: left
|
||||||
|
|||||||
@ -3,9 +3,8 @@
|
|||||||
"name": "Albert Einstein",
|
"name": "Albert Einstein",
|
||||||
"label": "Scientist",
|
"label": "Scientist",
|
||||||
"image": "",
|
"image": "",
|
||||||
"email": "albert@einstein.de",
|
"email": "einstein@example.com",
|
||||||
"phone": "(912) 123-4567",
|
"phone": "(912) 123-4567",
|
||||||
"url": "https://alshedivat.github.io/al-folio/",
|
|
||||||
"summary": "A German-born theoretical physicist, widely ranked among the greatest and most influential scientists of all time",
|
"summary": "A German-born theoretical physicist, widely ranked among the greatest and most influential scientists of all time",
|
||||||
"location": {
|
"location": {
|
||||||
"address": "2712 Broadway St",
|
"address": "2712 Broadway St",
|
||||||
@ -14,23 +13,53 @@
|
|||||||
"countryCode": "US",
|
"countryCode": "US",
|
||||||
"region": "California"
|
"region": "California"
|
||||||
},
|
},
|
||||||
"profiles": [
|
"profiles": []
|
||||||
{
|
|
||||||
"network": "Twitter",
|
|
||||||
"username": "AlbertEinstein",
|
|
||||||
"url": "https://twitter.com/AlbertEinstein"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"work": [
|
"work": [
|
||||||
{
|
{
|
||||||
"name": "Institute for Advanced Study, Princeton University",
|
"name": "Institute for Advanced Study, Princeton University",
|
||||||
"position": "Professor of Theoretical Physics",
|
"position": "Professor of Theoretical Physics",
|
||||||
"url": "https://example.com",
|
"location": "Princeton University, NJ",
|
||||||
"startDate": "1933-01-01",
|
"startDate": "1933-01-01",
|
||||||
"endDate": "1955-01-01",
|
"endDate": "1955-01-01",
|
||||||
"summary": "Teaching at Palmer Physical Laboratory (now 302 Frist Campus Center). While not a professor at Princeton, I associated with the physics professors and continued to give lectures on campus.",
|
"summary": "Teaching at Palmer Physical Laboratory (now 302 Frist Campus Center). While not a professor at Princeton, I associated with the physics professors and continued to give lectures on campus.",
|
||||||
"highlights": ["Relativity"]
|
"highlights": ["Relativity", "Description 2."]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "California Institute of Technology",
|
||||||
|
"position": "Visiting Professor",
|
||||||
|
"location": "Pasadena, California, US",
|
||||||
|
"startDate": "1933-01-01",
|
||||||
|
"endDate": "1933-01-01",
|
||||||
|
"summary": "",
|
||||||
|
"highlights": ["Description 1.", "Description 2."]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kaiser Wilhelm Institute for Physics",
|
||||||
|
"position": "Director",
|
||||||
|
"location": "Berlin, Germany",
|
||||||
|
"startDate": "1917-01-01",
|
||||||
|
"endDate": "1933-01-01",
|
||||||
|
"summary": "",
|
||||||
|
"highlights": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Karl-Ferdinand University",
|
||||||
|
"position": "Professor of Theoretical Physics",
|
||||||
|
"location": "Prague, Czechoslovakia",
|
||||||
|
"startDate": "1911-01-01",
|
||||||
|
"endDate": "1917-01-01",
|
||||||
|
"summary": "",
|
||||||
|
"highlights": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "University of Zurich",
|
||||||
|
"position": "Associate Professor of Theoretical Physics",
|
||||||
|
"location": "Zurich, Switzerland",
|
||||||
|
"startDate": "1909-01-01",
|
||||||
|
"endDate": "1911-01-01",
|
||||||
|
"summary": "",
|
||||||
|
"highlights": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"volunteer": [
|
"volunteer": [
|
||||||
@ -38,7 +67,6 @@
|
|||||||
"organization": "People's Climate March",
|
"organization": "People's Climate March",
|
||||||
"location": "Zurich, Switzerland",
|
"location": "Zurich, Switzerland",
|
||||||
"position": "Lead Organizer",
|
"position": "Lead Organizer",
|
||||||
"url": "https://example.com",
|
|
||||||
"startDate": "2014-04-01",
|
"startDate": "2014-04-01",
|
||||||
"endDate": "2015-07-01",
|
"endDate": "2015-07-01",
|
||||||
"summary": "Lead organizer for the New York City branch of the People's Climate March, the largest climate march in history.",
|
"summary": "Lead organizer for the New York City branch of the People's Climate March, the largest climate march in history.",
|
||||||
@ -47,15 +75,27 @@
|
|||||||
],
|
],
|
||||||
"education": [
|
"education": [
|
||||||
{
|
{
|
||||||
"institution": "University of Zurich, Zurich, Switzerland",
|
"institution": "University of Zurich",
|
||||||
"location": "Zurich, Switzerland",
|
"location": "Zurich, Switzerland",
|
||||||
"url": "https://www.uzh.ch/",
|
"url": "https://www.uzh.ch/",
|
||||||
"area": "Software Development",
|
"area": "Physics",
|
||||||
"studyType": "PhD",
|
"studyType": "PhD",
|
||||||
"startDate": "1905-01-01",
|
"startDate": "1900-01-01",
|
||||||
"endDate": "1905-01-01",
|
"endDate": "1905-01-01",
|
||||||
"score": "10",
|
"score": "",
|
||||||
"courses": ["Theory of Relativity"]
|
"courses": ["Theory of Relativity"],
|
||||||
|
"highlights": ["Description 1.", "Description 2."]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"institution": "Eidgenössische Technische Hochschule",
|
||||||
|
"location": "Zurich, Switzerland",
|
||||||
|
"area": "Physics",
|
||||||
|
"studyType": "Federal teaching diploma",
|
||||||
|
"startDate": "1896-01-01",
|
||||||
|
"endDate": "1900-01-01",
|
||||||
|
"score": "",
|
||||||
|
"courses": [],
|
||||||
|
"highlights": ["Description 1.", "Description 2."]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"awards": [
|
"awards": [
|
||||||
@ -65,6 +105,12 @@
|
|||||||
"awarder": "Royal Swedish Academy of Sciences",
|
"awarder": "Royal Swedish Academy of Sciences",
|
||||||
"url": "https://www.nobelprize.org/prizes/physics/1921/einstein/biographical/",
|
"url": "https://www.nobelprize.org/prizes/physics/1921/einstein/biographical/",
|
||||||
"summary": "The Nobel Prizes are five separate prizes that, according to Alfred Nobel's will of 1895, are awarded to 'those who, during the preceding year, have conferred the greatest benefit to humankind.'"
|
"summary": "The Nobel Prizes are five separate prizes that, according to Alfred Nobel's will of 1895, are awarded to 'those who, during the preceding year, have conferred the greatest benefit to humankind.'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Max Planck Medal",
|
||||||
|
"date": "2029-01-01",
|
||||||
|
"awarder": "German Physical Society",
|
||||||
|
"summary": ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"certificates": [
|
"certificates": [
|
||||||
@ -72,48 +118,24 @@
|
|||||||
"name": "Machine Learning",
|
"name": "Machine Learning",
|
||||||
"date": "2018-01-01",
|
"date": "2018-01-01",
|
||||||
"issuer": "Stanford University",
|
"issuer": "Stanford University",
|
||||||
"url": "https://example.com",
|
|
||||||
"icon": "fa-solid fa-location-dot"
|
"icon": "fa-solid fa-location-dot"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Quantum Computing",
|
"name": "Quantum Computing",
|
||||||
"date": "2018-01-01",
|
"date": "2018-01-01",
|
||||||
"issuer": "Stanford University",
|
"issuer": "Stanford University",
|
||||||
"url": "https://example.com",
|
|
||||||
"icon": "fa-solid fa-tag"
|
"icon": "fa-solid fa-tag"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Quantum Information",
|
"name": "Quantum Information",
|
||||||
"date": "2018-01-01",
|
"date": "2018-01-01",
|
||||||
"issuer": "Stanford University",
|
"issuer": "Stanford University",
|
||||||
"url": "https://example.com",
|
|
||||||
"icon": "fa-solid fa-envelope"
|
"icon": "fa-solid fa-envelope"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Quantum Cryptography",
|
|
||||||
"date": "2018-01-01",
|
|
||||||
"issuer": "Stanford University",
|
|
||||||
"url": "https://example.com",
|
|
||||||
"icon": "fa-solid fa-hashtag"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Quantum Communication",
|
|
||||||
"date": "2018-01-01",
|
|
||||||
"issuer": "Stanford University",
|
|
||||||
"url": "https://example.com",
|
|
||||||
"icon": "fa-solid fa-calendar"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Quantum Teleportation",
|
|
||||||
"date": "2018-01-01",
|
|
||||||
"issuer": "Stanford University",
|
|
||||||
"url": "https://example.com",
|
|
||||||
"icon": "fa-solid fa-clipboard-check"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"publications": [
|
"publications": [
|
||||||
{
|
{
|
||||||
"name": "Zur Elektrody/namik bewegter Körper",
|
"name": "Zur Elektrodynamik bewegter Körper",
|
||||||
"publisher": "Annalen der Physik",
|
"publisher": "Annalen der Physik",
|
||||||
"releaseDate": "1905-06-30",
|
"releaseDate": "1905-06-30",
|
||||||
"url": "https://en.wikisource.org/wiki/Translation:On_the_Electrodynamics_of_Moving_Bodies",
|
"url": "https://en.wikisource.org/wiki/Translation:On_the_Electrodynamics_of_Moving_Bodies",
|
||||||
@ -179,12 +201,12 @@
|
|||||||
{
|
{
|
||||||
"name": "Professor John Doe",
|
"name": "Professor John Doe",
|
||||||
"icon": "fa-solid fa-laptop",
|
"icon": "fa-solid fa-laptop",
|
||||||
"reference": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit. D"
|
"reference": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Professor John Doe",
|
"name": "Professor Jane Smith",
|
||||||
"icon": "fa-solid fa-thumbtack",
|
"icon": "fa-solid fa-thumbtack",
|
||||||
"reference": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit. D"
|
"reference": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"projects": [
|
"projects": [
|
||||||
@ -193,8 +215,7 @@
|
|||||||
"summary": "Quantum computing is the use of quantum-mechanical phenomena such as superposition and entanglement to perform computation. Computers that perform quantum computations are known as quantum computers.",
|
"summary": "Quantum computing is the use of quantum-mechanical phenomena such as superposition and entanglement to perform computation. Computers that perform quantum computations are known as quantum computers.",
|
||||||
"highlights": ["Quantum Teleportation", "Quantum Cryptography"],
|
"highlights": ["Quantum Teleportation", "Quantum Cryptography"],
|
||||||
"startDate": "2018-01-01",
|
"startDate": "2018-01-01",
|
||||||
"endDate": "2018-01-01",
|
"endDate": "2018-01-01"
|
||||||
"url": "https://example.com"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
131
assets/rendercv/design.yaml
Normal file
131
assets/rendercv/design.yaml
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
design:
|
||||||
|
theme: classic
|
||||||
|
page:
|
||||||
|
# size: us-letter
|
||||||
|
# top_margin: 0.7in
|
||||||
|
# bottom_margin: 0.7in
|
||||||
|
# left_margin: 0.7in
|
||||||
|
# right_margin: 0.7in
|
||||||
|
show_footer: false
|
||||||
|
show_top_note: false
|
||||||
|
# colors:
|
||||||
|
# body: rgb(0, 0, 0)
|
||||||
|
# name: rgb(0, 79, 144)
|
||||||
|
# headline: rgb(0, 79, 144)
|
||||||
|
# connections: rgb(0, 79, 144)
|
||||||
|
# section_titles: rgb(0, 79, 144)
|
||||||
|
# links: rgb(0, 79, 144)
|
||||||
|
# footer: rgb(128, 128, 128)
|
||||||
|
# top_note: rgb(128, 128, 128)
|
||||||
|
# typography:
|
||||||
|
# line_spacing: 0.6em
|
||||||
|
# alignment: justified
|
||||||
|
# date_and_location_column_alignment: right
|
||||||
|
# font_family:
|
||||||
|
# body: Source Sans 3
|
||||||
|
# name: Source Sans 3
|
||||||
|
# headline: Source Sans 3
|
||||||
|
# connections: Source Sans 3
|
||||||
|
# section_titles: Source Sans 3
|
||||||
|
# font_size:
|
||||||
|
# body: 10pt
|
||||||
|
# name: 30pt
|
||||||
|
# headline: 10pt
|
||||||
|
# connections: 10pt
|
||||||
|
# section_titles: 1.4em
|
||||||
|
# small_caps:
|
||||||
|
# name: false
|
||||||
|
# headline: false
|
||||||
|
# connections: false
|
||||||
|
# section_titles: false
|
||||||
|
# bold:
|
||||||
|
# name: true
|
||||||
|
# headline: false
|
||||||
|
# connections: false
|
||||||
|
# section_titles: true
|
||||||
|
# links:
|
||||||
|
# underline: false
|
||||||
|
# show_external_link_icon: false
|
||||||
|
# header:
|
||||||
|
# alignment: center
|
||||||
|
# photo_width: 3.5cm
|
||||||
|
# photo_position: left
|
||||||
|
# photo_space_left: 0.4cm
|
||||||
|
# photo_space_right: 0.4cm
|
||||||
|
# space_below_name: 0.7cm
|
||||||
|
# space_below_headline: 0.7cm
|
||||||
|
# space_below_connections: 0.7cm
|
||||||
|
# connections:
|
||||||
|
# phone_number_format: national
|
||||||
|
# hyperlink: true
|
||||||
|
# show_icons: true
|
||||||
|
# display_urls_instead_of_usernames: false
|
||||||
|
# separator: ''
|
||||||
|
# space_between_connections: 0.5cm
|
||||||
|
# section_titles:
|
||||||
|
# type: with_partial_line
|
||||||
|
# line_thickness: 0.5pt
|
||||||
|
# space_above: 0.5cm
|
||||||
|
# space_below: 0.3cm
|
||||||
|
# sections:
|
||||||
|
# allow_page_break: true
|
||||||
|
# space_between_regular_entries: 1.2em
|
||||||
|
# space_between_text_based_entries: 0.3em
|
||||||
|
# show_time_spans_in:
|
||||||
|
# - experience
|
||||||
|
# entries:
|
||||||
|
# date_and_location_width: 4.15cm
|
||||||
|
# side_space: 0.2cm
|
||||||
|
# space_between_columns: 0.1cm
|
||||||
|
# allow_page_break: false
|
||||||
|
# short_second_row: true
|
||||||
|
# summary:
|
||||||
|
# space_above: 0cm
|
||||||
|
# space_left: 0cm
|
||||||
|
# highlights:
|
||||||
|
# bullet: •
|
||||||
|
# nested_bullet: •
|
||||||
|
# space_left: 0.15cm
|
||||||
|
# space_above: 0cm
|
||||||
|
# space_between_items: 0cm
|
||||||
|
# space_between_bullet_and_text: 0.5em
|
||||||
|
# templates:
|
||||||
|
# footer: '*NAME -- PAGE_NUMBER/TOTAL_PAGES*'
|
||||||
|
# top_note: '*LAST_UPDATED CURRENT_DATE*'
|
||||||
|
# single_date: MONTH_ABBREVIATION YEAR
|
||||||
|
# date_range: START_DATE – END_DATE
|
||||||
|
# time_span: HOW_MANY_YEARS YEARS HOW_MANY_MONTHS MONTHS
|
||||||
|
# one_line_entry:
|
||||||
|
# main_column: '**LABEL:** DETAILS'
|
||||||
|
# education_entry:
|
||||||
|
# main_column: |-
|
||||||
|
# **INSTITUTION**, AREA
|
||||||
|
# SUMMARY
|
||||||
|
# HIGHLIGHTS
|
||||||
|
# degree_column: '**DEGREE**'
|
||||||
|
# date_and_location_column: |-
|
||||||
|
# LOCATION
|
||||||
|
# DATE
|
||||||
|
# normal_entry:
|
||||||
|
# main_column: |-
|
||||||
|
# **NAME**
|
||||||
|
# SUMMARY
|
||||||
|
# HIGHLIGHTS
|
||||||
|
# date_and_location_column: |-
|
||||||
|
# LOCATION
|
||||||
|
# DATE
|
||||||
|
# experience_entry:
|
||||||
|
# main_column: |-
|
||||||
|
# **COMPANY**, POSITION
|
||||||
|
# SUMMARY
|
||||||
|
# HIGHLIGHTS
|
||||||
|
# date_and_location_column: |-
|
||||||
|
# LOCATION
|
||||||
|
# DATE
|
||||||
|
# publication_entry:
|
||||||
|
# main_column: |-
|
||||||
|
# **TITLE**
|
||||||
|
# SUMMARY
|
||||||
|
# AUTHORS
|
||||||
|
# URL (JOURNAL)
|
||||||
|
# date_and_location_column: DATE
|
||||||
34
assets/rendercv/locale.yaml
Normal file
34
assets/rendercv/locale.yaml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
locale:
|
||||||
|
language: english
|
||||||
|
# last_updated: Last updated in
|
||||||
|
# month: month
|
||||||
|
# months: months
|
||||||
|
# year: year
|
||||||
|
# years: years
|
||||||
|
# present: present
|
||||||
|
# month_abbreviations:
|
||||||
|
# - Jan
|
||||||
|
# - Feb
|
||||||
|
# - Mar
|
||||||
|
# - Apr
|
||||||
|
# - May
|
||||||
|
# - June
|
||||||
|
# - July
|
||||||
|
# - Aug
|
||||||
|
# - Sept
|
||||||
|
# - Oct
|
||||||
|
# - Nov
|
||||||
|
# - Dec
|
||||||
|
# month_names:
|
||||||
|
# - January
|
||||||
|
# - February
|
||||||
|
# - March
|
||||||
|
# - April
|
||||||
|
# - May
|
||||||
|
# - June
|
||||||
|
# - July
|
||||||
|
# - August
|
||||||
|
# - September
|
||||||
|
# - October
|
||||||
|
# - November
|
||||||
|
# - December
|
||||||
14
assets/rendercv/settings.yaml
Normal file
14
assets/rendercv/settings.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
settings:
|
||||||
|
render_command:
|
||||||
|
# Paths must be relative to _data/cv.yaml
|
||||||
|
typst_path: ../assets/rendercv/rendercv_output/NAME_IN_SNAKE_CASE_CV.typ
|
||||||
|
pdf_path: ../assets/rendercv/rendercv_output/NAME_IN_SNAKE_CASE_CV.pdf
|
||||||
|
markdown_path: ../assets/rendercv/rendercv_output/NAME_IN_SNAKE_CASE_CV.md
|
||||||
|
html_path: ../assets/rendercv/rendercv_output/NAME_IN_SNAKE_CASE_CV.html
|
||||||
|
png_path: ../assets/rendercv/rendercv_output/NAME_IN_SNAKE_CASE_CV.png
|
||||||
|
dont_generate_markdown: true
|
||||||
|
dont_generate_html: true
|
||||||
|
dont_generate_typst: false
|
||||||
|
dont_generate_pdf: false
|
||||||
|
dont_generate_png: true
|
||||||
|
bold_keywords: []
|
||||||
@ -1,3 +1,4 @@
|
|||||||
nbconvert
|
nbconvert
|
||||||
pyyaml
|
pyyaml
|
||||||
|
rendercv[full]
|
||||||
scholarly
|
scholarly
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user