* prepare the base for typst * rename theme folders * rename themes * rename themes * update testdata with new theme names * rename themes * fix docs issues * fundamentals * fundamental renames * generalize `create_a_latex_file` * generalize render_a_pdf_from_latex * make latex optional dependency, and add typst as dependency * first tests with typst * finish `markdown_to_typst` * fix `markdown_to_latex` * finish `markdown_to_typst` * first steps towards Typst RenderCV themes * first draft of classic theme * start working on new design options * work on new design options * make default theme: "classic" * start integrating design options with templates * rename typst variables * start working on connections integration * polish connections * polish design options and themes * fix spelling mistakes and improve typst themes * use ms instead of s in printer * improve templates * fix typos * use ms instead of s in printer * improve typst templates * improve * improve * improve * improve * make PyMuPDF optional * rename last_updated_date_style to last_updated_date_template * revert changelog * progress * improve * exclude gifs from sdist * update tests * improve templates * improve templater * data: update `sample_content.yaml` * improve * remove latex support * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * remove testdata * remove latex * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * rename `locale_catalog` to `locale` * docs: update developer guide faq * add new input, rendercv_settings.date * add show_time_span_in * create a new function, parse_validation_errors * improve templates * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * improve * update templates * fix experience entry * improve * finish templates * update tests * update testdata * remove time_machine * update sample content * improve * add sb2nov theme * update options * update theme.options * update theme.options * update theme options * create engineeringresumes templates * add engineering resumes * format * update templates * add new theme * fix a typo in sample content * update templating system * update options * add photo support * update workflows * improve templates * improve parse_validation_errors * create a new interface for web * fix summary * improve * resolve typing issues * update mkdocs.yaml * update pyproject.toml * update docs scripts * update testdata * update tests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * rename column template fields * update * update test data * add moderncv * fix problems * moderncv * create moderncv * fix tests * update * update * update templates * update * use optional dependencies * fix * improve * aa * a * update * update * update * update * rename * update * update * update * improve * update * update * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * update * update * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * format * update changelog * update examples * update entry figures * update schema --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
4.0 KiB
Frequently Asked Questions (FAQ)
How to use it with JSON Resume?
You can use jsonresume-to-rendercv to convert your JSON Resume file to a RenderCV input file.
How to use it with Docker?
RenderCV's Docker image is available on Docker Hub.
If you have Docker installed, you can use RenderCV without installing anything else. Run the command below to open a Docker container with RenderCV installed.
docker run -it -v ./rendercv:/rendercv docker.io/rendercv/rendercv:latest
Then, you can use RenderCV CLI as if it were installed on your machine. The files will be saved in the rendercv directory.
How to create a custom theme?
RenderCV is a general Typst-based CV framework. It allows you to use any Typst code to generate your CVs. To begin developing a custom theme, run the command below.
rendercv create-theme "mycustomtheme"
This command will create a directory called mycustomtheme, which contains the following files:
├── mycustomtheme
│ ├── __init__.py
│ ├── Preamble.j2.typ
│ ├── Header.j2.typ
│ ├── EducationEntry.j2.typ
│ ├── ExperienceEntry.j2.typ
│ ├── NormalEntry.j2.typ
│ ├── OneLineEntry.j2.typ
│ ├── PublicationEntry.j2.typ
│ ├── TextEntry.j2.typ
│ ├── SectionBeginning.j2.typ
│ └── SectionEnding.j2.typ
└── Your_Full_Name_CV.yaml
The files are copied from the classic theme. You can update the contents of these files to create your custom theme.
To use your custom theme, update the design.theme field in the YAML input file as shown below.
cv:
...
design:
theme: mycustomtheme
Then, run the render command to render your CV with mycustomtheme.
!!! note Since JSON Schema will not recognize the name of the custom theme, it may show a warning in your IDE. This warning can be ignored.
Each of these *.j2.typ files is Typst code with some Python in it. These files allow RenderCV to create your CV out of the YAML input.
The best way to understand how they work is to look at the templates of the built-in themes:
For example, the content of ExperienceEntry.j2.typ for the classic theme is shown below:
\cventry{
((* if design.show_only_years *))
<<entry.date_string_only_years>>
((* else *))
<<entry.date_string>>
((* endif *))
}{
<<entry.position>>
}{
<<entry.company>>
}{
<<entry.location>>
}{}{}
((* for item in entry.highlights *))
\cvline{}{\small <<item>>}
((* endfor *))
The values between << and >> are the names of Python variables, allowing you to write a Typst CV without writing any content. They will be replaced with the values found in the YAML input. The values between ((* and *)) are Python blocks, allowing you to use loops and conditional statements.
The process of generating Typst files like this is called "templating," and it is achieved with a Python package called Jinja.
The __init__.py file found in the theme directory defines the design options of the custom theme. You can define your custom design options in this file.
For example, an __init__.py file is shown below:
from typing import Literal
import pydantic
class YourcustomthemeThemeOptions(pydantic.BaseModel):
theme: Literal["yourcustomtheme"]
option1: str
option2: str
option3: int
option4: bool
RenderCV will then parse your custom design options from the YAML input. You can use these variables inside your *.j2.typ files as shown below:
<<design.option1>>
<<design.option2>>
((* if design.option4 *))
<<design.option3>>
((* endif *))
!!! info
Refer here for the complete list of CLI options available for the create-theme command.