Gépelj a kereséshez. Nyilakkal lépkedhetsz, Enter megnyit, Esc bezár.

Összes kutatás
DokumentumgenerálásÁllapot: 2026-10

Biztonságos LaTeX YAML-szövegből

Hogyan kerül a YAML-ben tárolt szabad szöveg LaTeX-sablonba úgy, hogy ne törje el a buildet, és a sablon olvasható LaTeX maradjon.

Kutatási kérdés: Hogyan kerülhet tetszőleges YAML-szöveg LaTeX-sablonba úgy, hogy egy speciális karakter soha ne törje el a fordítást?

Projektigény

A CV és a motivációs levél szövege YAML-ben van, és LaTeX-en keresztül PDF-fé fordul. A tartalomban gyakori a &, %, #, _ és $, amely LaTeX-ben vezérlőkarakter, nyers LaTeX pedig nem lehet benne.

Módszer és ellenőrzés

  • Jinja2 LaTeX-barát delimiterekkel (\VAR{}, \BLOCK{}, \#{}), trim_blocks és lstrip_blocks mellett.
  • Escape a Jinja2 finalize hookjában, így minden változókimenetre lefut; az autoescape kikapcsolva marad, mert HTML-re készült.
  • Jelölő típus (Raw) a már biztonságos LaTeX-szövegre, és külön URL-szűrő.
  • pytest LaTeX nélkül: speciális karakterek, backslash és kapcsos zárójel, kiemelésjelek, páratlan jelölés, hiányzó érték, URL-szűrő és a blokk-tagek üres sorai. A teljes build nyolc PDF-et fordít két nyelven, két változatban.

Eredmények

  • Az alapértelmezett {{ }} delimiterek ütköznek a LaTeX kapcsos zárójeleivel; saját delimiterekkel a sablon olvasható LaTeX marad.
  • A finalize-beli escape-et egyetlen változónál sem lehet elfelejteni, ezért biztonságosabb a változónkénti szűrőnél.
  • A kétszeres escape ellen egyetlen jelölő típus elég.
  • A \href-ben lévő URL-ben csak a % és a # escape-elendő; a teljes escape elrontja a linket.
  • trim_blocks és lstrip_blocks nélkül a blokksorok üres sorokat hagynak, amit a LaTeX bekezdéstörésnek vesz.
  • A YAML flow mappingben egy idézőjel nélküli vessző csendben extra kulcsot hoz létre; a nyelvi párok ellenőrzése ezt build hibává teszi.

Döntés

Escape a finalize-ban, a Raw mint kifejezett kivétel, és külön URL-szűrő. A tartalomban egyetlen jelölés megengedett, a **kiemelés**, amelyet a build \textbf{}-re fordít.

Korlátok és nyitott kérdések

  • A pdfLaTeX-szel használt karakterkészletre ellenőrizve; a Unicode-különlegességek, például matematikai jelek nincsenek tesztelve.
  • A kiemelésen kívül nincs szövegközi jelölés, például link vagy lista a folyó szövegben.

Források