mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
fix(latex): brace bracket-leading bullets, document escapes, pin pdftotext encoding
Three findings from the 2026-08-19 review (F9, F31, F34):
- F9: every placeholder bullet written as \item [text] let LaTeX parse
the bracketed text as the item's optional label, rendering it clipped
off the left page edge and absent from the PDF text layer ("Achievement"
appeared 9 times in cv/main_example.tex and 0 times in the extraction,
with a clean compile and green CI). Bullets are now braced as
\item {[text]} in the example CV and in the template
06-cover-letter-templates.md teaches, and CI's stock PDF assertions
additionally require "Achievement" to survive pdftotext.
- F31: 05-cv-templates.md gains a "LaTeX Special Characters" section and
06's is completed beyond \_ and \&. The load-bearing case is an
unescaped % in a quantified achievement bullet: it starts a LaTeX
comment and silently deletes the rest of the line from the PDF.
- F34: the documented ATS extraction commands (apply.md,
05-cv-templates.md, CLAUDE.md) now carry -enc UTF-8. Xpdf-based
pdftotext builds default to Latin-1 output, so a correct non-ASCII CV
failed the replacement-character parseability check.
framework_version: 05-cv-templates.md 1.4.1 -> 1.4.2,
06-cover-letter-templates.md 1.0.1 -> 1.0.2. All three pinned by the new
tests/test_latex_guidance.py (9 tests; suite now 261).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
40022dd8b9
commit
b2545d5121
@@ -1,5 +1,5 @@
|
||||
---
|
||||
framework_version: 1.0.1
|
||||
framework_version: 1.0.2
|
||||
---
|
||||
|
||||
# Cover Letter Templates and Tailoring Guide
|
||||
@@ -92,9 +92,9 @@ The font wrapper is mandatory — if you just move `\begin{itemize}` outside `\l
|
||||
|
||||
{\raggedright\fontspec[Path = OpenFonts/fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont
|
||||
\begin{itemize}
|
||||
\item [Concrete achievement/skill 1]
|
||||
\item [Concrete achievement/skill 2]
|
||||
\item [Concrete achievement/skill 3]
|
||||
\item {[Concrete achievement/skill 1]}
|
||||
\item {[Concrete achievement/skill 2]}
|
||||
\item {[Concrete achievement/skill 3]}
|
||||
\end{itemize}\par}
|
||||
|
||||
\lettercontent{[Connection to company - why this role, why this company specifically]}
|
||||
@@ -146,10 +146,14 @@ The font wrapper is mandatory — if you just move `\begin{itemize}` outside `\l
|
||||
- 3-5 bullets is ideal
|
||||
- Start each bullet with bold label or action verb
|
||||
- Use `\textbf{Label:}` for category-style bullets
|
||||
- A bullet whose text begins with a literal `[` must be braced: `\item {[text]}`. Unbraced, LaTeX parses `[text]` as `\item`'s optional label and renders it off the left page edge, missing from the PDF text layer entirely
|
||||
|
||||
### LaTeX Special Characters
|
||||
- Underscore: `\_`
|
||||
- Ampersand: `\&`
|
||||
Escape these wherever they appear in body text:
|
||||
- Ampersand: `\&` (company names: Brüel \& Kjær, H\&M) - unescaped, the compile fails loudly
|
||||
- Percent: `\%` ("grew revenue 30\%") - unescaped, it does **not** fail: everything after the `%` on that line is silently eaten as a LaTeX comment
|
||||
- Dollar: `\$`, hash: `\#`, underscore: `\_`
|
||||
- Tilde: `\textasciitilde{}`, caret: `\textasciicircum{}`, backslash: `\textbackslash{}`
|
||||
|
||||
### Non-English Cover Letters
|
||||
- Same template structure, just write content in the posting's language
|
||||
|
||||
Reference in New Issue
Block a user