Slik setter du automatisk inn fotografier i LaTeX-filer

I forrige uke forklarte jeg blant annet hvordan du genererer "mange forskjellige kalendere, hver tilpasset for en annen venn eller slektning, nesten automatisk". Jeg nevnte også at det ville være ganske enkelt å legge til forskjellige bilder til hver av disse kalenderene.

Denne uken skal jeg vise deg hvordan du gjør nettopp det, det vil si hvordan du setter inn fotografier eller andre grafiske filer i LaTeX-filer. Det første jeg skal forklare er hvorfor jeg vil gjøre det, og hvorfor jeg tror at enhver Linux-bruker som ønsker å automatisere så mye som mulig sin databehandlingsaktivitet, bør kjenne et triks som dette.

Denne teknikken har mye mer generell bruk enn du kanskje tror ved første blikk. LaTeX-filer produserer profesjonelle, virkelig vakre utskrifter og PDF-filer - på måter som er mye mer sofistikerte og kraftige enn noen desktop office suite kan gjøre.

Det er mange gratis programvare av alle slag som kan sende ut dataene sine i LaTeX-format, og mange flere LaTeX-maler som er tilgjengelige online. Å vite hvordan du kan legge dine egne bilder i dem (eller andre data) betyr å kunne tilpasse programmene og dokumentene uten å være programmerer.

Dette er mulig fordi LaTeX (og TeX, som LaTeX er basert på) er åpne, enkle tekstbaserte formater. Følgelig er automatisk innsetting av bilder i en allerede eksisterende LaTeX-fil så enkel som å finne og erstatte de riktige ASCII-strengene med sed, awk, Perl eller hva slags tekstbehandlingsverktøy du liker best.

La oss se hvordan trikset fungerer ved å legge til et bilde i LaTeX-kalenderen jeg viste forrige uke.

Figur A

Hvordan pal-programmet genererer ser ut som figur A, og dette er kodebiten av LaTeX-koden som genererer oppføringen "Alice's Birthday":
 \ textbf {\ textit {\ Large 20}} {\ raggedright 
 $ \ cdot $ Alice bursdag 
 } \ vspace {.3in} & 
 \ textbf {\ textit {\ Large 21}} {\ raggedright 
 } \ vspace {.9in} & 

Den grunnleggende prosedyren for å legge til et bilde i en LaTeX-fil er veldig enkel og består av to trinn. Den første er å legge til kommandoen for å bruke grafikkpakken, rett etter erklæringen av dokumentklassen:

 \ Document 12pt {} artikkelen 
 \ Usepackage {graphicx} 

Det andre er å sette inn, på riktig sted av koden, kommandoen som faktisk laster inn et bilde. Denne eneste ekstra linjen lagt til etter "Alice's Birthday":

 $ \ cdot $ Alice bursdag 
 } 
 \ Includegraphics målestokk = 0, 30 {} tux.png 
endrer den tilsvarende siden i kalenderen som i figur B.

Figur B

Du vil umiddelbart merke at innsettingen endret høyden på en rad i kalenderen. Jeg skal snakke om det om et øyeblikk. Før det, la oss se hvordan du gjør prosessen med å sette inn generisk kode automatisk. Det er mange måter å gjøre det på. Det jeg bruker, halvparten for personlig smak og halvparten for latskap (en av de store dyderne til hver programmerer) er Perl-kommandoer:

 perl -pi.bak -e / / (\\ dokument. *) / $ 1 \ n \\ usepackage {graphicsx} / 'mal.latex 
 perl -pi.bak -e 'undef $ /; $ A =; $ A = ~ s / (Alice. * Bursdag \ s *}) / $ 1 \ n \\ inkluderer degrafikk skala = 0.30 \ {tux.png \} / m; skriv ut $ A; ' template.latex 

De flere kommandolinjebryterne ber Perl (se detaljer her) om å utføre koden mellom anførselstegn, direkte inne i filen som er sendt som siste argument. Den første linjefeltet legger til kommandoen for bruk av pakken, rett etter linjen som begynner med \\ dokumentstrengen. Den andre er mer komplisert, fordi den må redigere en flerstrengsstreng. Derfor definerer det opptaksseparatoren ($ /) for å laste inn hele filen i en $ A-variabel, og bruker "m" -modifisereren til å finne strengen den må legge til den andre LaTeX-kommandoen.

Hva med den modifiserte rekkehøyden?

Når jeg forbereder kalendere på denne måten, legger jeg personlig igjen de høyere radene som de er, siden jeg foretrekker den uregelmessige utformingen. Hvis du ikke tåler det, har du i stedet to løsninger. Den ene er å lære mye mer LaTeX enn jeg har vist her, og lage din tilpassede mal (som er helt fin, rett utenfor rammen for akkurat dette innlegget). En annen løsning er å gi bildene dine forskjellige størrelser (se Ressurser nedenfor) og / eller leke med de horisontale og vertikale avstandskommandoene (hspace og vspace), for å flytte hvert bilde i sin celle og endre rommet rundt det.

Figur C

Figur C viser hva som skjedde (sammenlign det med figur B) da jeg manuelt redigerte LaTeX-koden rundt bildet på denne måten:

$ \ cdot $ Alice bursdag

}

\ Vspace {.30in}

\ includedegraphics skala = 0, 20 {tux.png} \ vspace {.02in} &

Skaler det opp

Selvfølgelig, hvis du bare måtte redigere en fil, bare en gang, bør du ignorere skripting og bare endre filen, som forklart over, med hvilken som helst tekstredigerer eller (mye bedre) med LaTeX-frontender som Kile. Å legge til skripting til bildet er et must når du trenger å generere mange forskjellige filer, mange ganger, hver med forskjellige bilder, ut av den samme malen. I en slik situasjon, en enkel skallsløyfe som dette:

 for VENN i Ted Alice Bob 
 gjøre 
 ekko perl -pi.bak -e "'"' undef $ /; $ A =; $ A = ~ s / ('$ FRIEND'. * Bursdag \ s *}) / $ 1 \ n \\ includedegraphics skala = 0.30 \ {'$ FRIEND'.png \} / m; skriv ut $ A; '"'" >> make_calendars 
 ferdig 
oppretter og lagrer i make_calendars alle kommandoene som Linux-boksen din må kjøre for å gjøre jobben for deg. Endelig kan tekststrenger bokstavelig talt være hva som helst. Derfor er det verdt å lære å behandle LaTeX-filer med skallskript fordi det kan gjøre mye mer enn å sette inn bilder . Jeg brukte for eksempel den samme generelle teknikken som ble forklart her for å transformere ren tekstfiler i Lulu.com-klare PDF-filer. ressurser
  • Inkludert grafikk i et LaTeX-dokument
  • LaTeX / Importer grafikk fra Wikibooks
  • LaTeX: Bilder

© Copyright 2021 | pepebotifarra.com