LaTeX Start
Eigentlich wollte ich nur zum Thema Markdown was schreiben, irgendwie ist’s dann doch etwas ausgeartet bei mir und ich hab mir über’s Wochenende mal ein bisschen LaTeX angeschaut (was ich sowieso schon lange, lange mal machen wollte…). Und ich muss gestehen, mir taugt das ganze recht gut. Hab das ganze schon mal ganz kurz beim Thema Markdown für Präsentationen angeschnitten…
Ich verwende LibreOffice eigentlich höchstselten (nicht, dass die Software schlecht ist, jedoch für meine Bedürfnisse zu bloatet). Generell reicht mir ein Markdown-File, was ja an und für sich sehr viele Vorteile bietet
- Plaintext Files
- was heisst, Versionsverwaltung ist easy
- zum Erstellen reicht ein Editor nach eigenem Gusto
Wenn man aber nach aussen etwas senden sollte, ist Markdown doch recht eingeschränkt, darum hab ich mal LaTeX ein bisschen angeschaut. Ist jetzt nicht so, dass ich ein “LaTeX-Master” werden will – meine Dokumente sind in der Regel recht simpel: Titelseite, TOC und einige Absätze, vielleicht ab und an eine Tabelle und ein Bild. Und wenn man da mal ein passendes ‘Template’ hat, ist die ganze Sache doch recht einfach, auch wenn man länger nicht mit LaTeX gearbeitet haben sollte.
Das ganze hier ist komplett chaotisch aufgebaut, soll ja auch nur für mich als Spickzettel dienen… 😉
Installation
Wenn man nicht gleich texlive-full montiert, reichen diese Packages aus
texlive-base texlive-lang-german texlive-latex-extra
Das ist auch Speichermässig nicht ganz so wild, wie die komplette Texlive-Suite
Need to get 118 MB/142 MB of archives.
After this operation, 415 MB of additional disk space will be used.
und nun kann man auch schon loslegen
tex-File
Legt man sich nun also ein .tex-File an, dann startet ein solches etwa in dieser Form:
\documentclass[a4paper,12pt]{article} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} % benoetigt package 'texlive-lang-german' ! \usepackage{xcolor} % rgb textfarben \usepackage{lastpage} % fuer 'Seite x/xx' % schriften, sh. https://de.sharelatex.com/learn/Font_typefaces \usepackage{tgbonum} \usepackage{graphicx} % fuer Bilder \usepackage{fancyhdr} % fuer header fancy \usepackage[left=25mm,right=20mm,top=20mm,bottom=20mm]{geometry} % Randabstaend
Für Kommentare verwendet man %. Bei documentclass definiert man die Seiten- und Schriftgrösse sowie den Dokumententyp (was ich aber bisher auch nicht weiter beachtet hab).
usepackage ist, soweit ich verstanden hab, so etwas wie ein include einer anderen Klasse. Im Beispiel sind einfach mal einige aufgelistet.
Dokument
Das eigentliche Dokument findet innerhalb eines begin- und end-Abschnittes statt
\begin{document} ... \end{document}
Titelseite
Eine Titelseite erstellt man ganz einfach mit maketitle innerhalb des document-Feldes
Die Informationen holt sich LaTeX von den gegebenen Informationen
\documentclass{article} \title{Dokument-Titel} \author{Peter Beck} \date{\today} \begin{document} \pagenumbering{gobble} \maketitle \newpage Hello world! \end{document}
selbstverständlich lässt sich das auch weiter definieren, z.B.
\title{ \includegraphics[width=3.5cm]{/pfad/zum/Bild/bild1.png} \\ {\color{blue}\small\textbf{ein blauer Text, einfach weil's lustig ist}} \ \vspace*{2.5cm} \\ \includegraphics[width=5cm]{/pfad/zu/anderem/Bild/bild2.png} \vspace*{2.5cm} \\ \textbf{\huge Dokument-Titel} \\ \Large{Untertitel} \\ \vspace{0.5cm} }
Mehrspaltiger Text
Wenn man ein Dokument mit zwei Spalten erstellen möchte, kann man das bereits in der documentclass definieren
\documentclass[twocolumn]{article}
Falls man jedoch nur innerhalb des Textes teilweise mehrere Spalten verwenden möchte, kann man das entweder mittels \twocolumn aktivieren (bzw. wieder mit \onecolumn deaktivieren. Besser gefällt mir jedoch das Paket ‘multicolumn‘. Damit lassen sich auch mehr als zwei Spalten definieren.
\usepackage{multicolumn} ... \begin{multicols}{2} Text \end{multicols}
Schriften
Generell sollte man man fontenc setzen, damit es zu keinen Problemem mit der Darstellung von Umlauten kommt..
\usepackage[T1]{fontenc}
Mittels \textrm verwendet man normale Schrift, \textsf ist für Serifenlose Schrift und \texttt verwendet man bei Schreibmaschinenschriften.
Damit man nun aber Times oder Helvetica verwenden kann, muss man diese erst importieren
\usepackage{mathptmx} % Hier steckt Times drin \usepackage[scaled]{helvet} % font helvetica
Und dann testen wir das ganze mal…
Dieser Text ist normaler Text und deshalb in Times\\ \textsf{Dies ist serifenfreier Text und deshalb in Helvetica}\\ \texttt{Dies ist Text in Maschinenschrift und deshalb in Courier}\\
Um eine spezifische Schrift in einem Abschnitt/Textteil zu verwenden, verwendet man fontfamily/selectfont. Zu dem Thema gibt’s aber einiges zu lesen…auf Stackexchange wird das ein wenig erläutert…
{\fontfamily{}\selectfont ....}
Hier findet man weitere Informationen zu Schriften in LaTeX.
Kopf- / Fusszeilen
Mittels headings kann man Kopf- und Fusszeilen definieren. Folgende Werte sind auch erlaubt: empty, plain und fancy (benötigt fancyhdr). Ein paar Beispiele:
\pagestyle{fancy} \chead{zentrierter Headertitel} \lfoot{linke Fusszeile} \cfoot{zentrierte Fusszeile} \rfoot{\thepage{} von \pageref{LastPage}} % rechts, LastPage benötigt lastpage...
Seitenumbruch
\newpage
Seitennummerierung
Seitenzahlen werden mit \pagenumbering gesetzt. Auf einer Titelseite will man in der Regel jedoch keine Seitenzahl. Mit gobble vor \maketitle wird das deaktiviert
\pagenumbering{gobble}
Ansonsten kann man die Seitenzahlen entweder mit 1,2,3… oder I,II,III,… angeben
\pagenumbering{arabic} \pagenumbering{roman}
Abschnitte
Titel können straightforward mit section, subsection etc angelegt werden. Gibt’s nicht viel zu berichten.
\section{Absatztitel}
\subsection{Absatz}
Eine Besonderheit ist noch, dass ein Alternativ-Text gesetzt werden kann, welcher im TOC verwendet wird (z.B. Kurzform, wenn’s ein langer Titel ist)
\section[ALTERNATIV]{Abschnitt}
TOC
Ein Inhaltsverzeichnis legt man mittels tableofcontents an
\tableofcontents
Abschnitt ohne TOC-Eintrag
Verwendet man *, kann man einen Abschnitt definieren, welcher nicht im TOC erscheint
\section*{Titel erscheint nicht im TOC}
Textformatierung
Ohne grossen Kommentar
Text in \textbf{fett} oder \underline{unterstrichen} oder \textit{kursiv}.
Textausrichtung
\begin{flushleft}Dieser Text ist linksbündig \end{flushleft} \begin{center}Dieser Text ist zentriert \end{center} \begin{flushright}Dieser Text ist rechtsbündig \end{flushright}
Code-Schnipsel
Code-Schnipsel kann man mittels verbatim einfügen
\begin{verbatim} #!/bin/bash echo Hello World \end{verbatim}
Möchte man den Schnipsel in einer Box mit Rahmen dargestellt haben, muss das Package moreverb geladen werden
\usepackage{moreverb} \begin{boxedverbatim} #!/bin/bash echo 'Hello World' \end{boxedverbatim}
Aufzählungen
Punkte
Nummerierungen macht man mit itemize
\begin{itemize} \item jeder Eintrag wird mit einem Punkt angezeigt \item Es ist egal, wie lange der Text der Zeile ist \end{itemize}
Wenn man den Abstanz zwischen der Aufzählung verkleinern möchte, kann man itemsep verwenden
\begin{itemize} \setlength\itemsep{0em} \item ... ...
Nummern
Nummerierungen werden mit enumerate erstellt
\begin{enumerate} \item This is the first entry in our list \item The list numbers increase with each entry we add \end{enumerate}
Bilder
Nur ganz kurz oberflächlich mit einem Beispiel angerissen, ohne auf figure einzugehen:
\includegraphics[width=2cm]{/home/peter/Pictures/doofes/ackackack.jpg}
Es lässt sich auch by default ein Bildpfad festlegen
\graphicspath{ {./images/} }
Tabellen
Kleine Tabellen sind noch ganz ok, aber sobald es etwas komplexer wird, finde ich (als blutiger Anfänger) recht mühsam. Dann verwende ich Tables Generator. Das ist ein Online-LaTeX-Tabellen Generator. Würde ich manuell glaub ich verzweifeln, bei gewissen Layouts…
Bei einer etwas längeren Tabelle hatte ich auch das Problem, dass die “über die Seite raus ging”, also nur halb sichtbar war. Das kann man jedoch recht simpel durch anpassen der Schriftgrösse umgehen (zb. nach \begin{table} einfach noch \scriptsize (oder was auch immer) setzen).
Variabeln
Man kann auch eigene Variabeln definieren
\newcommand{\docauthor}{Peter V. Beck} \newcommand{\doctitle}{Dokument-Titel} \newcommand{\docsubtitle}{Dokument-Subtitle} \newcommand{\authoremail}{name@foo.bar}
Das kommt mir grad zugut, wenn man Dokumente aufsplittet, was ich gleich erwähne…
Aufsplitten des Dokuments
Ein Dokument lässt sich in mehrere tex-Files aufsplitten. Finde ich auf den ersten Blick schon nützlich:
So kann man eine fix definierte Titelseite für alle Dokumente einsetzen. Ändert man dieses und erstellt ein Dokument neu, hat man automatisch das aktuelle Titelblatt. Um das ganze generisch zu definieren, kann man in der Titelseite Variabeln verwenden. Sehr cool.
Um also die Titelseite einzubinden, reicht ein input (anstatt maketitle, denn der ist in der anderen Datei definiert) aus. Nehmen wir also an, die Titelseite nennt sich ‘titelseite.tex’, schaut das so aus:
\input{titelseite}
und natürlich auch hier: Variabeln machen das ganze noch simpler… 😉
PDF Erstellung
Um ein PDF zu erstellen verwendet man pdflatex. Ich mach das direkt aus vim
:!pdflatex %
Es gibt jedoch auch andere Tools, wie beispielsweise rubber die hierzu verwendet werden können.
Makefiles
Uch, damit hab ich nicht gerechnet, aber man kann makefiles schreiben für LaTeX-Dokumente. Dazu legt man einfach das entsprechende File an (Makefile) und befüllt dies mit den gewünschten Werten. Ein ultrasimples Makefile schaut etwa so aus:
paper=texfilename_ohne_extension pdf: pdflatex ${paper}.tex read: zathura ${paper}.pdf & clean: rm -f ${paper}.{log,aux,out,toc}
Nun kann man das ganze einfach mit einem make kompilieren.
Ein bisschen ein erweitertes Makefile (bin nur am rumtesten)
paper=filename shell=/bin/bash pdf: rubber --pdf ${paper}.tex odt: pandoc -f latex -t odt -o ${paper}.odt ${paper}.tex html: [ -d html ] || mkdir html htlatex ${PAPER}.tex "" "" -dhtml/ all: make pdf make odt make html read: zathura ${paper}.pdf & clean: rubber --clean ${paper} watch: @while true; do inotifywait ${paper}.tex; sleep 0.01; make all; done
nun kann man zb. ein make watch starten und das Tex-File bearbeiten. Ist das ganze in einem PDF-Reader geöffnet, hat man sozusagen eine Live-Preview und benötigt kein vim-plugin dazu.
PDF-Metadaten
Gleich zu Beginn ist mir aufgefallen, dass die PDF-Metadaten nicht gesetzt wurden. Das kann man so ändern:
\usepackage[ pdftitle={Titel des Dokuments}, pdfsubject={Eine kurze Beschreibung, worum es geht}, pdfauthor={Peter V. Beck, I.}, pdfkeywords={meta, information, pdf, hyperref, latex} ]{hyperref}
Konvertierung
Konvertierung ? Dazu gibt es doch pandoc… damit kann man z.B. auch sehr einfach aus einem LaTeX-File ein ODT erstellen
pandoc -f latex -t odt -o output.odt input.tex
Vorlagen
Auf Overleaf findet man überigens auch zahlreiche Templates für LaTeX…
Fazit
Wenn ich ehrlich bin – mir gefällt das ganze eigentlich ganz gut… deswegen werde ich in nächster Zeit auch versuchen, LaTeX öfter einzusetzen und dann seh ich schon, wie das ganze läuft. Wie gesagt, ich will hier kein ‘Master’ werden und für meine Nutzung ist das auch absolut nicht nötig.