Layout Rules
How these are measuredThere is one rule
Every line you type has to fit on the line it is rendered as. Everything below is that rule applied to a particular box on the page.
It matters because of how the CV is built. When you type three profile lines, the generator does not hand LaTeX a paragraph to break wherever it likes — it joins your lines with a forced break, one for each line you wrote. So a line that is too wide is not quietly re-flowed. LaTeX breaks it where it runs out of room and the words left over land on a line of their own:
you typed: ...with experience in AI, quality assurance, and software development, and a
you get: ...with experience in AI, quality assurance, and software development, and
a
That stray "a" costs a whole line of the page and reads as a mistake. It is the reason the editor now measures each line as you type it, and the reason a line that does not fit is an error rather than a warning.
How a line is measured
Not by counting characters. A character count cannot answer the question,
because the same 90 characters are half a line of i and an
overflowing line of w. Instead the width of the text is added up
glyph by glyph, in the font the PDF is really set in — Latin Modern
Sans 10 at 9.963 pt — and compared with the measured width of
the column it is rendered into.
The editor runs that arithmetic in your browser, from
/api/metrics, and the exporter runs
the identical arithmetic on the server against the identical table. The
percentage under an input and the error that blocks an export therefore
cannot disagree.
The character figures in the tables below are a budget, not the
rule: they say roughly how many characters of ordinary prose fit
across that column, which is a useful thing to know while writing. A line of
narrow letters may run past its figure and still fit; a line of wide ones may
fall short of it and not. Nothing here is set by hand — change
cv.tex.j2 and every number moves with it.
One deliberate strictness: TeX will squeeze a line up to about 3% over by compressing the spaces between its words, and left to itself it sometimes does. The editor does not allow it. A line that only fits because its spaces were compressed sits visibly tighter than the lines around it, and a rule that depends on the paragraph breaker's mood is not one you can write to. A line is judged at normal word spacing, so every line on the page is set the same way.
Header
| Field | Limit | Note |
|---|---|---|
| Full name (first + last) | 21 chars | Combined, including space |
| Contact text (phone, email, LinkedIn…) | 54 chars | Displayed text, not the URL |
Profile
| Field | Limit | Note |
|---|---|---|
| Profile line | 127 chars | Each line of the profile paragraph |
| Profile lines | 1 to 4 | Every line but the last must be full, and none may overflow — see Line breaks |
Experience
Column split: 73% left (title, company, summary, bullets) · 27% right (date, location)
| Field | Limit | Note |
|---|---|---|
| Title + company (combined) | 84 chars | Both on the same line, separated by ", " |
| Date | 32 chars | Right column |
| Location | 32 chars | Right column, below date |
| Summary line | 92 chars | Each line of the summary paragraph — see Line breaks |
| Bullet point line | 123 chars | Each line within a bullet — see Line breaks |
Projects
A project entry has the same fields as an experience entry and is checked against the same limits — the section header is the only difference. "Context" (client, school, "Projet personnel") is stored in the company field, so it counts towards the combined title limit above.
| Field | Limit | Note |
|---|---|---|
| Title + context (combined) | 84 chars | Same cap as title + company |
| Date / Location | 32 / 32 chars | Right column |
| Summary line | 92 chars | See Line breaks |
| Bullet point line | 123 chars | See Line breaks |
Education
| Field | Limit | Note |
|---|---|---|
| Degree | 84 chars | Left column (73%) |
| Date | 32 chars | Right column |
| Institution | 34 chars | Right column, below date |
Certifications
| Field | Limit | Note |
|---|---|---|
| Certification name | 113 chars | Single line |
| Year | 4 chars | Right side, e.g. 2024 |
Languages
| Field | Limit | Note |
|---|---|---|
| The whole line | 117 chars | The section is one line: "Arabe (Langue maternelle), Français (Courant)". This joined width is the rule |
| Language name | 27 chars | A share of that line, as guidance — e.g. "Français" |
| Level | 30 chars | A share of that line, as guidance — e.g. "Langue maternelle" |
| Max languages shown | 4 | Entries beyond this are ignored |
Where you break a line
The profile, every summary and every bullet are stored line by line, and each stored line becomes a forced break in the PDF. LaTeX cannot move a word across one of your breaks, so where you put them is where they stay.
| Situation | Level | What to do |
|---|---|---|
| A line is wider than its column | Error | LaTeX breaks it for you and strands the last word or two on a line of their own. The editor names the stranded words and says how many characters to cut. Saving and exporting are both blocked. |
| A line stops while the first word of the next line would still have fitted | Error | Leaves a visible hole mid-paragraph. Pull the word up, or merge the two lines. |
| A line covers less than 85% of its column, but the next word genuinely does not fit | Warning | The line will look sparse — reword it if you can. Export is still allowed. |
| The last line of a field is short | Allowed | That is how a paragraph ends. It still may not be too wide. |
Bullets are judged one bullet at a time — a short bullet next to a long one is fine, and only breaks inside a single bullet are suspect.
Page budget
One page, filled. An A4 page with these margins holds 62.0 lines at the 10 pt class's 12 pt baseline, and a CV has to reach 60.5 of them to count as filling it.
| What costs a line | Cost |
|---|---|
| Each rendered line of profile, summary or bullet text | 1 |
| An experience or project entry's title row | 1 |
| An entry's Technologies line | 1 |
| Each education entry (degree + field) | 2 |
| Each certification | 1 |
| Each skill group | 1 |
| The languages row | 2 + 0.44 |
| Each section heading after the first | 1.33 |
| Each bullet after the first in an entry | 0.08 |
The last two used to cost nothing, which is how a CV could measure "52 of 52" with no issues at all and still print onto a second page: seven section headings take up about nine lines of a page that nothing was charging for. They are measured now, off a compiled PDF, like everything else.
Note that the count is of rendered lines, not typed ones. A line too wide for its column costs two, which is the other half of why an overflowing line is an error.