Videregående L A TEX-kursus. Tobias Steinmann & Martin Heller
Indholdsfortegnelse Kursets indhold: Kort intro. Gennemgang af ca. 50 L A TEX-funktioner. Opgave med mange af de gennemgåede funktioner. Stil spørgsmål! Kig i vores L A TEX-bøger.
Om os og lynkurset Om os: Afholder begynderkurser i L A TEX. Skriver vejledninger, laver skabeloner osv. Support via email og Messenger/ICQ! Kursets formål: Visning af nyttige egenskaber ved L A TEX (aha-oplevelser). Inspirere jer til at gå videre (det må I selv have sjov med). Farvekonvention: præambel kode output kompilering.
Om at finde information Udgangspunktet: 1 Jeg ved ikke hvad der findes. Fair nok! 2 Jeg går ud fra at der er pakker til alt. Korrekt Og hvor finder man denne information? Spørg os (og kig på vores hjemmeside). Kig i The not so short Introduction to L A TEX (især matematik). I L A TEX-arkivet på www.ctan.org. På www.tex.ac.uk - i FAQ en. På Google seriøst. I nyhedsgrupper, eks. via groups.google.com. Via andre studerende og undervisere. Moralprædiken: Det gælder ikke om at vide alt, men at vide hvor man kan finde information om det man ønsker.
Navnekonvention Opbygningen af et L A TEX-dokument ser overordnet således ud: \documentclass{klasse } Præambel TTyper af klasser: article: små rapporter report: større rapporter (PMP, PEP, Ph.D) memoir: udvidet report \begin{document} Selve dokumentet \end{document} Mere info på http://www.student.dtu.dk/~latex book: bøger og hjælp på latex@student.dtu.dk
Filformater Et par af de mest benyttede filformater: Tabel: Filtyper Filendelse aux log toc lof lot sty dtx cls Egenskaber midlertidig hjælpefil det samme som der bliver udskrevet til skærmen under kompilering indholdsfortegnelse liste over figurer liste over tabeller pakker Dokumenteret kildekode (kompileres med latexkommandoen) klasser (memoir.cls)
Xfig og Dia Xfig er et simpelt vektorbaseret tegneprogram, som er installeret i G-baren. Udenfor DTU kan Xfig bruges med ThinLinc (remote), jfig (java) eller ved installation (er med i Linux distributionerne). Figurer kan eksporteres til: billeder (EPS, herefter epstopdf for PDF-format). til kode der kan inkluderes af L A TEX eksempelvis (E)EPIC, MetaPost og L A TEX Picture. Det er også muligt at eksportere billedfiler hvor der er brugt L A TEX-skrifttyper (Combined PS/LaTeX med special-tekst). Vi har skrevet en kort vejledning til Xfig. Kig også på hjemmesiden efter rapporter hvor Xfig-figurer er brugt. Alternativ/supplement til Xfig: Dia (Windows, Linux, mv., men desværre ikke i databarerne). Dia kan importere/exportere fra/til Xfig, og har ikke de samme skavanker som Xfig har.
Egne kommandoer Nye kommandoer letter arbejdet og forøger konsistensen af rapportens udseende. Kommandoer kan også rettes til. \newcommand{\lang}{laaaang Titel\xspace} 1. \definecolor{red}{rgb}{1,0,0} og \newcommand{\roed}[1]{\color{red}#1} \roed{rød}. \newcommand{\billede}[4]{ \begin{figure}[#1] \centering \includegraphics[width=#2\textwidth]{billeder/#3} \caption{#4}\label{fig:#3} \end{figure} } \billede{htb}{0.9}{filnavn}{caption}. Med \renewcommand kan man modificere en allerede defineret kommando (men pas på det er en farlig kommando...!). 1 Med \usepackage{xspace} (\titel{} tekst \titel tekst).
Smarte referencer Henvisninger der tager højde for type og placering kan laves med prettyref- og varioref-pakkerne. Med \vref vises hvor henvisningen er (undtagen hvis den står på samme side), og \pref (forkortet \prettyref) tager skridtet videre og angiver hvilken type det er, foruden hvor referencen er. Type Eksempel Kode \vref 1 på side 25 \vref{fig:1} \pref figur 1 på side 25 \pref{fig:1} \pref tabel 1 på side 6 \pref{tab:filtyper} \usepackage{varioref}, \usepackage{prettyref} og klasse-option danish skal benyttes (samt en \newrefformat af label-typerne (se kildekoden til disse slides), eksempelvis \newrefformat{sec}{afsnit \vref{#1}}) for at det virker.
Citeringer Referencerne til kilderne kan præsenteres på mange forskellige måder. Her antages det at natbib-pakken (\usepackage{natbib}) er brugt med \bibliographystyle{abbrvnat} og at der kaldes med \cite<udvidelser>{nielsen} som er skrevet af Jacob Nielsen i 2005. Eksempler: \citeauthor Nielsen \citeyear 2005 \citep (Nielsen, 2005) \citet Nielsen (2005) I natbib kan paranteserne, seperatorerne (komma, semikolon) mv. udskiftes med bl.a. \bibpunct-kommandoen. Flere kilder i samme reference: \cite{kilde1,kilde2}. Næste slide: Litteraturlistens udseende.
Litteraturlisten Litteraturlisten og referencerne i teksten hertil kan sættes op på mange forskellige måder: \bibliographystyle{style} bestemmer udseendet af litteraturlisten. Danske styles: dk-<style> er de danske udgaver af standardstyles ene. dk-alpha: Ved flere forfattere bliver and til og, og navneforkortelsen bliver til deres efternavnes forbogstaver. Hint: Brug af {} om {S}tore bogs{t}aver/{ord} får dem til at forblive store, selvom BibTEX prøver at gøre dem små. \usepackage{citeref} 2 indsætter sidenumre hvorfra der bliver refereret til denne kilde i litteraturlisten. hyperref-pakken har en lignende indstilling, men der er lidt bøvl med den. Med custom-bib -pakken kan man bestemme udseendet af litteraturlisten ved at udfylde et meget langt spørgeskema. 2 Med \renewcommand{\bf}{\bfseries}.
Lister af... Man kan lave lister af: Figurer - \listoffigures Tabeller - \listoftables Listings - \listoflistings (med listings-pakken). Andre former for floats man evt. selv har defineret. En liste oprettes med \listof{type }{titel }. Typen er den type man har brugt i et newfloat -miljø med \newfloat{type}{placering}{fil-endelse}. Læs mere i float-pakkens dokumentation om dette.
Marginnoter Marginnoter laves med \marginpar{}-kommandoen. Marginnoterne skifter side med \reversemarginpar. \marginparwidth bestemmer bredden af marginnoterne. \marginparsep bestemmer afstanden mellem brødteksten og marginnoten. Apropos marginer, så sættes marginbredden bedst med geometry-pakken.
hyperref hyperref-pakken er et must hvis ens dokumenter har et elektronisk liv. Pakken gør referencer klikbare, man får automatisk interne links, og man kan lave eksterne hyperlinks osv. Med pakken kan man blandt andet: Indstille farverne (RGB). Skifte mellem farvede rammer eller farvet tekst ved (interne) links og citeringer. Lave eksterne links (\href{mailto:latex@gbar.dtu.dk}{latex@gbar.dtu.dk} eller \url{http://www.student.dtu.dk/ latex}). Automatisk få gjort indholdsfortegnelserne klikbare. Indsætte informationer om dokumentet og indholdsfortegnelse i PDF en.
LATEX HTML L A TEX-dokumenter kan konverteres til HTML. Vi anbefaler at man bruger en af følgende to metoder. L A TEX2HTML Eksternt program. Kræver Perl og måske andre ikke-standard programmer og sprog, men virker i G-databaren. Det er en anelse langhåret hvis man vil ændre på opsætningen. TEX4ht Internt program (pakke). Nemmere umiddelbart at gå til. Resultatet vil aldrig blive lige så godt som i L A TEX, og jo mere man har fusket med sit dokument og jo mere avanceret det er, des dårlige bliver resultatet. Læs mere om L A TEX HTML i The L A TEX Web Companion (DTV har den).
Counters Counters er velkendte, for det er dem man får ud af en \ref, \pageref, \eqref, \vref, \pref... kommandoerne. Man kan: Ændre på counters med \addtocounter{footnote}{1} hvis man vil springe et nummer over. (\stepcounter{navn} tæller automatisk counteren op). Oprette egne counters med \newcounter{navn} Vise en counters værdi med \value{navn} Formatere en counters værdi med eks. \Roman{navn} (her: \Roman{page} XVI).
Listings-pakken Listings-pakken bruges til inkludering af kildekode (indhold som ikke skal fortolkes). Pakken er langt bedre end andre former for verbatim-brug. Med pakken kan man blandt andet: Indsætte linjenumre (mange muligheder). Definere skrifttyperne på mange måder (linjenumrene, teksten, mv.). Indsætte labels i kildekoden og referere til linjenummeret. Inkludere udvalgte linjer fra den inkluderede fil. Oprette en liste over listings (analogt til LoF/LoT). Indsætte boxe rundt om kildekoden. Texthighlight e den inkluderede tekst. Vi har skrevet en kort vejledning til listings-pakken, som ligger på hjemmesiden. På næste side er et eksempel med Java-kode vist.
Listings-pakken 1 import p a r s e r ; import j a v a cup. r u n t i m e. Symbol ; import j a v a. i o. ; 2 3 c l a s s Main { 4 5 s t a t i c boolean do debug p a r s e = f a l s e ; 6 s t a t i c p u b l i c v o i d main ( S t r i n g a r g v [ ] ) { 7 8 / S t a r t t h e p a r s e r / 9 t r y { 10 p a r s e r p = new p a r s e r ( new L e x e r ( new F i l e R e a d e r ( a r g v [ 0 ] ) ) ) ; 11 O b j e c t r e s u l t = p. p a r s e ( ). v a l u e ; 12 } 13 catch ( E x c e p t i o n e ) { 14 / do c l e a n u p h e r e p o s s i b l y r e t h r o w e / 15 } f i n a l l y { 16 / do c l o s e out h e r e / 17 } 18 } 19 }
Beamer-klassen til slides Denne præsentation (slides) er lavet med Beamer-klassen. En slide laves med \frame-kommandoen. Afsnit og underafsnit laves med \section hhv. \subsection (bemærk hvordan disse optræder i slides ene øverst). Det er muligt på samme frame at få indhold til at forsvinde og nyt indhold til at komme frem. Videoklip osv. kan integreres. Kan kompileres med både latex (kladde!) og pdflatex. Forskellige grafiske temaer kan nemt vælges. Kildekoden til denne præsentation og til en anden præsentation med andre grafiske funktioner ligger på hjemmesiden. Den omfangsrige manual forklarer langt mere.
memoir memior-klassen er en udvidelse af de normale klasser, og er for dem som gerne vil rode noget mere opsætningen af et L A TEX-dokument. memoir erstatter (kombinerer) article-, report- og book-klasserne. På hjemmesiden ligger en rapport skrevet med memoir-klassen. I den dertilhørende kildekode er vist hvor relativt nemt opsætningen kan laves når man bruger memoir-pakken. memoir-manualen er over 200 sider lang og forklarer, udover hvordan memoir-klassen er opbygget, også hvordan man bør udforme dokumenter efter læsevenlighed mv.
Indeks Et indeks er nemt at lave. 1 \usepackage{makeidx} skal indføres i præamblet. 2 De ord der skal tilføjes laves som label s i teksten, bare med kommandoen \index{ord}. Sub-indeks laves med eksempelvis \index{ord!sub-ord}. Se i lshort (texdoc lshort afns. 4.3/s. 67) hvordan man kan sætte indekset grafisk op på andre måder med fremhævning af ord og/eller sidetal. 3 \makeindex fortæller L A TEX at der skal laves et indeks. 4 \printindex indsætter indekset. 5 Kør først latex filnavn. Herefter skal makeindex filnavn køres for at generere listen, og latex filnavn skal køres for at få indekset med i dokumentet.
fancyhdr fancyhdr: one-side Med \usepackage{fancyhdr} kan headers og footers bestemmes. Man kan benytte sig af standard-opsætningerne \pagestyle{navn}: empty, plain, headings, fancy. Fancy er skal bruges hvis man vil gøre som vist her. Med \lhead{tekst} kan den venstre header bestemmes, og med \cfoot{side \thepage{} af \pageref{lastpage}} 3 sættes den centrerede tekst i footeren til en sidefortegnelse. Denne brug er perfekt til oneside klasse-option. Brug \renewcommand{\footrulewidth}{0.4pt} til at lave en vandret streg mellem body en og footeren (og vice versa med headeren). 3 Med \usepackage{lastpage}.
fancyhdr fancyhdr: two-side For dokumenter med to sider (twoside klasse-option) kan man også definere hvad der skal stå i felterne på samme måde som med oneside. LE CE RE Venstre sider LE CE RE LO CO RO Højre sider LO CO RO (L=left, R=right, E=even/venstre side, O=odd/højre side) \fancyhf{} fjerner alle headers og footers. \fancyhead[le]{\leftmark} KAPITEL 3. TESTS... \fancyfoot[le,ro]{\rightmark} 2.2 TEST AF... \fancyfoot[c]{\thepage} 3 (på begge sider)
Endnotes Endnotes: Samme som footnotes, men med valgfri placering. Brug: 1 \usepackage{endnotes}. 2 \renewcommand\notesname{slutnoter}. 3 Indsættelse af noter: \endnote{tekst i en endnote}. 4 \endnotemark[1] genbrug af endnotes. 5 Indsættelse af slutnoterne: \theendnotes. 6 Genstart nummereringen efter brug: \setcounter{endnote}{0}. Ekstra: Hvis man ombestemmer sig: \let\footnote=\endnote. Med \url og \href skal man tilføje \expandafter: \endnote{\expandafter\url{http://www.google.dk}}. Med \usepackage{hyperendnote} (findes på hjemmesiden og via groups.google.com) er slutnoternes numre klikbare.
subfig Med subfig-pakken kan flere figurer placeres ved siden af hinanden og derved få samme nummer, men hvert sit sub-index:...figur a... (a) Det er så figur a....figur b... (b) Det er så figur b. Figur: Den samlede figurtekst. Referer til hver subfigur: \ref{fig:a} 1(a). Hver sub-figur laves med: \subfloat[caption][sub-caption]{\label{fig:a}<figur>}.
filecontents Med \filecontents-miljøet kan en fil, der er delt op i flere filer, samles i én fil. Ved kompilering bliver hvert filecontents-miljø lavet om til en fil, som så kan inkluderes i dokumentet. Eksempel: 1 \documentclass{article} 2 \usepackage{filecontents} 3 \begin{document} 4 \begin{filecontents}{1.tex} 5 Teksten hér bliver lagt i filen 1.tex. 6 \end{filecontents} 7 \input{1.tex} 8 \end{document} filecontents* fjerner udkommenterede oplysninger om generering af filen fra den genererede fil (til filer med kildekode).
gnuplot Gnuplot er et program til at lave grafer af forskellige typer: Grafer kan laves ud fra datafiler med kolonner af data. Grafer kan laves ud fra funktioner, fx sin x. Man kan også lave 3D plots. Grafer eksporteres som PostScript. Mere information på http://www.gnuplot.info/ og http://kortlink.dk/ny4 (eksempler). gnuplot er installeret i G-baren. Bemærk at det hele foregår med datafiler (rene tekst-filer) og en kommando-prompt.
Generelt om floats \usepackage{showlabels} viser hvor labels er placeret i teksten (vises i margin) og navnene på disse labels. Med \usepackage{float} kan parameteren H ved indsættelse af et figure-miljø bruges til at tvinge en figur til at blive placeret her og kun her (skal ikke misbruges). \FloatBarrier 4 tvinger floats til at blive placeret inden der fortsættes. Hvis pakke-option section benyttes, vil \section inkludere et kald med \Floatbarrier. Fungerer lidt ligesom \clearpage. \usepackage{refcheck} kigger efter ligegyldige labels, unavngivne ligninger, ubrugte bibliography-referencer og skriver alle labels keys /navne i marginen. 4 \usepackage{placeins} skal benyttes. (fortsættes...)
Generelt om floats Placer først floats efter at der er blevet refereret til dem med \usepackage{flafter}. Indsæt billeder ved siden af teksten med wrapfigure-miljøet. Her kan bredden, placering og indhugget mv. bestemmes. Se andre metoder på http://kortlink.dk/peq. Modificer udseendet af en hel række eller søjle i en tabel med array-pakken (se http://kortlink.dk/nxu).
Generelt om floats Captions: usepackage[font=small,labelfont=bf]{caption} modificerer caption en. (fortsættes...) \ c a p t i o n s e t u p [ f i g u r e ] { format=hang,% t e k s t e n i n d r y k k e s på de e f t e r f ø l g e n d e l i n j e r, så f i g u r x. x s t å r a l e n e j u s t i f i c a t i o n=j u s t i f i e d,% s t a n d a r d s i n g l e l i n e c h e c k=f a l s e,% % en c a p t i o n på kun 1 l i n j e b l i v e r i k k e c e n t r e r e t f o n t={ s m a l l },% e g e n s k a b e r f o r både l a b e l og t e k s t. l a b e l f o n t={ b f },% e g e n s k a b e r n e f o r e k s. Tabel 2. 2 t e x t f o n t={ i t },% e g e n s k a b e r n e f o r t e k s t e n width=. 89\ t e x t w i d t h,% c a p t i o n ens bredde a b o v e s k i p=5 pt,% området under c a p t i o n en b e l o w s k i p=0 pt,% området under c a p t i o n en p o s i t i o n=below,% kan også s æ t t e s t i l above }
Skrifttyper Eksperimenter med andre skrifttyper: Courier: \usepackage{mathptmx}, \usepackage[scaled=.90]{helvet}, \usepackage{courier}. Palatino: \usepackage{mathpazo}, \usepackage[scaled=.95]{helvet}, \usepackage{courier} (kombiner evt. med \usepackage{luximono}). Med \usepackage{courier} kan tekst med \texttt-skrift sættes som fed skrift også. Skriften er tyndere end den normale \texttt måske for tynd ved små størrelser. Andet: Brug \sfseries, \bfseries, \itseries til miljøer mv. (fortsættes...)
Skrifttyper \fontsize{size}{skip} kan laves til en nem kommando: \newcommand{\stor}{\fontsize{70}{80}\selectfont} size er skriftstørrelsen, skip er størrelsen på \baselineskip (begge i pt). Tommelfingerregel: skip bør være ca. 1,2 gange større end skriftstørrelsen. (Se http://kortlink.dk/nxp.) Med \usepackage{relsize} kan man gøre teksten større eller mindre end det den er nu ved at ændre ved den relative størrelse med kommandoer som \smaller, \larger osv. For at gøre skriftstørrelsen tyndere kan man udskifte eks. chapter, section og subsection-skiften med en sans serif-type (gør den også smallere!): \usepackage{sectsty} \allsectionsfont{\usefont{ot1}{phv}{bc}{n}\selectfont}
Skrifttyper Brug SIstyle 5 til at skrive tal med SI enheder: \SI{1e3}{kg.mˆ{-3}} giver 1 10 3 kg m 3 Brug mhchem 6 til at skrive kemi: \ce{2h + O -> H2O} giver 2 H + O H 2 O Læs dokumentationen til de to pakker for flere tricks. 5 \usepackage{sistyle} 6 \usepackage{mhchem}
Andre småting Konverter Excels.xls-filer til.tex-filer med gnumeric. Hvis der skal ændres på diverse indholdsfortegnelser (ToC, LoF eller LoT), så tag et kig på tocloft-pakken. med minitoc-pakken kan man indsætte en mini-toc over et kapitels afsnit i starten af et kapitel. Små symboler af enhver art kan findes i overflod på http://www.ctan.org/tex-archive/info/symbols/ comprehensive/. Eksempelvis checklister:... Lav pænere brøker med 3 / 7 (se i kildekoden hvordan). Lav fancy chapters (kapiteloverskrifter i report, book, memoir) med \usepackage{fncychap}. Skift mellem forskellige standard-temaer (se manualen), eller hack dig til din egen. Se også de rapporter der ligger på hjemmesiden.
Andre småting På CTAN Graham Williams s catalogue (http://www.ctan.org/tex-archive/help/catalogue/) er pakker vist efter type. Brug denne metode som alternativ til en wildcard-søgning på CTAN. Fodnoter i tabeller, afsnit, captions mv.? Kig på http://kortlink.dk/pdz Hvordan får man L A TEX til at dele ordene ordentligt? Brug hyphen show-kommandoen på DVI-filen til at få vist alle orddelte ord (se http://kortlink.dk/pdy). \pretolerance=2500 jo højere jo mindre orddeling.
Samarbejde/CVS Samarbejde er svært. Hvem har nu nyeste version af dokumentet? Man kommer langt med at have en aktiv tovholder der gider at holde styr på filer. CVS (Concurrent Versions System) er den aktive tovholder der holder styr på versioner, og hvem der har lavet hvad. CVS sikrer at alle altid har seneste version. CVS er indbygget i mange L A TEX editorer. Man kan med fordel dele dokumentet så meget op at alle ikke arbejder på samme afsnit på samme tid.
Nyhedsgrupper Nyhedsgrupper har altid svar på standardspørgsmål... og næsten altid svar på alt andet om L A TEX. Seriøst. Det er et vidensarkiv uden sammenligning. Ellers er der jo altid Google. Google groups godt til søgning: http://groups.google.com. Decideret nyhedslæser: For dem der bruger nyhedsgrupper til mere end bare at søge i. Følgende grupper er især interessante: dk.edb.tekst er den officielle danske L A TEX-nyhedsgruppe. comp.text.tex er den internationale ditto. Husk om nyhedsgrupper: Søg før du spørger.
På hjemmesiden (www.student.dtu.dk/ latex/) er mere information om de nævnte emner. Kig på de forskellige pakkers manualer. De er ofte ret lige til at gå til. Bogen The L A TEX Companion (2. udgave!) er guld værd: 1.000 siders gennemgang af L A TEX og dets pakker. Dyr, men rigtig god. Lån den evt. på DTV eller IMMs bibliotek. Tag et kig på en gratis L A TEX-bog fra Århus Universitet: http://www.imf.au.dk/system/latex/bog/ Send os gerne spørgsmål til os via latex@student.dtu.dk eller via ICQ/Messenger. Tobias & Martin