{"id":1962,"date":"2018-06-18T21:12:11","date_gmt":"2018-06-18T21:12:11","guid":{"rendered":"http:\/\/blog.datentraeger.li\/?p=1962"},"modified":"2018-09-03T08:55:00","modified_gmt":"2018-09-03T08:55:00","slug":"latex-start","status":"publish","type":"post","link":"https:\/\/blog.datentraeger.li\/?p=1962","title":{"rendered":"LaTeX Start"},"content":{"rendered":"<p>Eigentlich wollte ich nur zum Thema Markdown was schreiben, irgendwie ist\u2019s dann doch etwas ausgeartet bei mir und ich hab mir \u00fcber\u2019s Wochenende mal ein bisschen LaTeX angeschaut (was ich sowieso schon lange, lange mal machen wollte&#8230;). Und ich muss gestehen, mir taugt das ganze recht gut. Hab das ganze schon mal ganz kurz beim Thema <a href=\"https:\/\/blog.datentraeger.li\/?p=677\">Markdown f\u00fcr Pr\u00e4sentationen<\/a> angeschnitten&#8230;<\/p>\n<p>Ich verwende LibreOffice eigentlich h\u00f6chstselten (nicht, dass die Software schlecht ist, jedoch f\u00fcr meine Bed\u00fcrfnisse zu bloatet). Generell reicht mir ein Markdown-File, was ja an und f\u00fcr sich sehr viele Vorteile bietet<\/p>\n<ul>\n<li>Plaintext Files<\/li>\n<li>was heisst, Versionsverwaltung ist easy<\/li>\n<li>zum Erstellen reicht ein Editor nach eigenem Gusto<\/li>\n<\/ul>\n<p>Wenn man aber nach aussen etwas senden sollte, ist Markdown doch recht eingeschr\u00e4nkt, darum hab ich mal LaTeX ein bisschen angeschaut. Ist jetzt nicht so, dass ich ein \u201cLaTeX-Master\u201d werden will \u2013 meine Dokumente sind in der Regel recht simpel: Titelseite, TOC und einige Abs\u00e4tze, vielleicht ab und an eine Tabelle und ein Bild. Und wenn man da mal ein passendes &#8216;Template&#8217; hat, ist die ganze Sache doch recht einfach, auch wenn man l\u00e4nger nicht mit LaTeX gearbeitet haben sollte.<\/p>\n<p>Das ganze hier ist komplett chaotisch aufgebaut, soll ja auch nur f\u00fcr mich als Spickzettel dienen&#8230; \ud83d\ude09<\/p>\n<h1>Installation<\/h1>\n<p>Wenn man nicht gleich texlive-full montiert, reichen diese Packages aus<\/p>\n<pre class=\"lang:default decode:true \">texlive-base texlive-lang-german texlive-latex-extra<\/pre>\n<p>Das ist auch Speicherm\u00e4ssig nicht ganz so wild, wie die komplette Texlive-Suite<\/p>\n<blockquote><p>Need to get 118 MB\/142 MB of archives.<br \/>\nAfter this operation, 415 MB of additional disk space will be used.<\/p><\/blockquote>\n<p>und nun kann man auch schon loslegen<\/p>\n<h1>tex-File<\/h1>\n<p>Legt man sich nun also ein .tex-File an, dann startet ein solches etwa in dieser Form:<\/p>\n<pre class=\"lang:tex decode:true \">\\documentclass[a4paper,12pt]{article}\r\n\r\n\\usepackage[utf8]{inputenc}\r\n\\usepackage[ngerman]{babel} % benoetigt package 'texlive-lang-german' !\r\n\\usepackage{xcolor}         % rgb textfarben\r\n\\usepackage{lastpage}       % fuer 'Seite x\/xx'\r\n% schriften, sh. https:\/\/de.sharelatex.com\/learn\/Font_typefaces\r\n\\usepackage{tgbonum}\r\n\\usepackage{graphicx}       % fuer Bilder\r\n\\usepackage{fancyhdr}       % fuer header fancy\r\n\\usepackage[left=25mm,right=20mm,top=20mm,bottom=20mm]{geometry} % Randabstaend\r\n<\/pre>\n<p>F\u00fcr Kommentare verwendet man %. Bei documentclass definiert man die Seiten- und Schriftgr\u00f6sse sowie den Dokumententyp (was ich aber bisher auch nicht weiter beachtet hab).<br \/>\nusepackage ist, soweit ich verstanden hab, so etwas wie ein include einer anderen Klasse. Im Beispiel sind einfach mal einige aufgelistet.<\/p>\n<h2>Dokument<\/h2>\n<p>Das eigentliche Dokument findet innerhalb eines begin- und end-Abschnittes statt<\/p>\n<pre class=\"lang:tex decode:true \">\\begin{document}\r\n...\r\n\\end{document}\r\n<\/pre>\n<h2>Titelseite<\/h2>\n<p>Eine Titelseite erstellt man ganz einfach mit maketitle innerhalb des document-Feldes<\/p>\n<p>Die Informationen holt sich LaTeX von den gegebenen Informationen<\/p>\n<pre class=\"lang:tex decode:true \">\\documentclass{article}\r\n\\title{Dokument-Titel}\r\n\\author{Peter Beck}\r\n\\date{\\today}\r\n\\begin{document}\r\n   \\pagenumbering{gobble}\r\n   \\maketitle\r\n   \\newpage\r\n   Hello world!\r\n\\end{document}\r\n<\/pre>\n<p>selbstverst\u00e4ndlich l\u00e4sst sich das auch weiter definieren, z.B.<\/p>\n<pre class=\"lang:tex decode:true \">\\title{\r\n  \\includegraphics[width=3.5cm]{\/pfad\/zum\/Bild\/bild1.png} \\\\\r\n  {\\color{blue}\\small\\textbf{ein blauer Text, einfach weil's lustig ist}} \\\r\n  \\vspace*{2.5cm} \\\\\r\n  \\includegraphics[width=5cm]{\/pfad\/zu\/anderem\/Bild\/bild2.png}\r\n  \\vspace*{2.5cm} \\\\\r\n  \\textbf{\\huge Dokument-Titel} \\\\\r\n  \\Large{Untertitel} \\\\\r\n  \\vspace{0.5cm}\r\n}\r\n<\/pre>\n<h2>Mehrspaltiger Text<\/h2>\n<p>Wenn man ein Dokument mit zwei Spalten erstellen m\u00f6chte, kann man das bereits in der documentclass definieren<\/p>\n<pre class=\"lang:tex decode:true \">\\documentclass[twocolumn]{article}\r\n<\/pre>\n<p>Falls man jedoch nur innerhalb des Textes teilweise mehrere Spalten verwenden m\u00f6chte, kann man das entweder mittels \\twocolumn aktivieren (bzw. wieder mit \\onecolumn deaktivieren. Besser gef\u00e4llt mir jedoch das Paket &#8216;<a href=\"https:\/\/www.teuderun.de\/latex\/layout\/twocolum\/\" target=\"blank\">multicolumn<\/a>&#8216;. Damit lassen sich auch mehr als zwei Spalten definieren.<\/p>\n<pre class=\"lang:tex decode:true \">\\usepackage{multicolumn}\r\n...\r\n\\begin{multicols}{2}\r\n  Text\r\n\\end{multicols}\r\n<\/pre>\n<h1>Schriften<\/h1>\n<p>Generell sollte man man fontenc setzen, damit es zu keinen Problemem mit der Darstellung von Umlauten kommt..<\/p>\n<pre class=\"lang:tex decode:true \">\\usepackage[T1]{fontenc}\r\n<\/pre>\n<p>Mittels \\textrm verwendet man normale Schrift, \\textsf ist f\u00fcr Serifenlose Schrift und \\texttt verwendet man bei Schreibmaschinenschriften.<\/p>\n<p>Damit man nun aber Times oder Helvetica verwenden kann, muss man diese erst importieren<\/p>\n<pre class=\"lang:tex decode:true \">\\usepackage{mathptmx}       % Hier steckt Times drin\r\n\\usepackage[scaled]{helvet} % font helvetica\r\n<\/pre>\n<p>Und dann testen wir das ganze mal&#8230;<\/p>\n<pre class=\"lang:tex decode:true \">Dieser Text ist normaler Text und deshalb in Times\\\\\r\n\\textsf{Dies ist serifenfreier Text und deshalb in Helvetica}\\\\\r\n\\texttt{Dies ist Text in Maschinenschrift und deshalb in Courier}\\\\\r\n<\/pre>\n<p>Um eine spezifische Schrift in einem Abschnitt\/Textteil zu verwenden, verwendet man fontfamily\/selectfont. Zu dem Thema gibt&#8217;s aber einiges zu lesen&#8230;auf <a href=\"https:\/\/tex.stackexchange.com\/questions\/25249\/how-do-i-use-a-particular-font-for-a-small-section-of-text-in-my-document\" target=\"blank\">Stackexchange<\/a> wird das ein wenig erl\u00e4utert&#8230;<\/p>\n<pre class=\"lang:tex decode:true \">{\\fontfamily{}\\selectfont ....}\r\n<\/pre>\n<p><a href=\"http:\/\/www.tug.dk\/FontCatalogue\/\" target=\"blank\">Hier<\/a> findet man weitere Informationen zu Schriften in LaTeX.<\/p>\n<h1>Kopf- \/ Fusszeilen<\/h1>\n<p>Mittels headings kann man Kopf- und Fusszeilen definieren. Folgende Werte sind auch erlaubt: empty, plain und fancy (ben\u00f6tigt fancyhdr). Ein paar Beispiele:<\/p>\n<pre class=\"lang:tex decode:true \">\\pagestyle{fancy}\r\n\\chead{zentrierter Headertitel}\r\n\\lfoot{linke Fusszeile}\r\n\\cfoot{zentrierte Fusszeile}\r\n\\rfoot{\\thepage{} von \\pageref{LastPage}} % rechts, LastPage ben\u00f6tigt lastpage...\r\n<\/pre>\n<h2>Seitenumbruch<\/h2>\n<pre class=\"lang:tex decode:true \">\\newpage<\/pre>\n<h2>Seitennummerierung<\/h2>\n<p>Seitenzahlen werden mit \\pagenumbering gesetzt. Auf einer Titelseite will man in der Regel jedoch keine Seitenzahl. Mit gobble vor \\maketitle wird das deaktiviert<\/p>\n<pre class=\"lang:tex decode:true \">\\pagenumbering{gobble}<\/pre>\n<p>Ansonsten kann man die Seitenzahlen entweder mit 1,2,3&#8230; oder I,II,III,&#8230; angeben<\/p>\n<pre class=\"lang:tex decode:true \">\\pagenumbering{arabic}\r\n\\pagenumbering{roman}<\/pre>\n<h1>Abschnitte<\/h1>\n<p>Titel k\u00f6nnen straightforward mit section, subsection etc angelegt werden. Gibt&#8217;s nicht viel zu berichten.<\/p>\n<pre class=\"lang:tex decode:true \">\\section{Absatztitel}<\/pre>\n<pre class=\"lang:tex decode:true \">\\subsection{Absatz}<\/pre>\n<p>Eine Besonderheit ist noch, dass ein Alternativ-Text gesetzt werden kann, welcher im TOC verwendet wird (z.B. Kurzform, wenn&#8217;s ein langer Titel ist)<\/p>\n<pre class=\"lang:tex decode:true \">\\section[ALTERNATIV]{Abschnitt}<\/pre>\n<h2>TOC<\/h2>\n<p>Ein Inhaltsverzeichnis legt man mittels tableofcontents an<\/p>\n<pre class=\"lang:tex decode:true \">\\tableofcontents<\/pre>\n<h2>Abschnitt ohne TOC-Eintrag<\/h2>\n<p>Verwendet man *, kann man einen Abschnitt definieren, welcher <b>nicht<\/b> im TOC erscheint<\/p>\n<pre class=\"lang:tex decode:true \">\\section*{Titel erscheint nicht im TOC}<\/pre>\n<h1>Textformatierung<\/h1>\n<p>Ohne grossen Kommentar<\/p>\n<pre class=\"lang:tex decode:true \">Text in \\textbf{fett} oder \\underline{unterstrichen} oder \\textit{kursiv}.\r\n<\/pre>\n<h2>Textausrichtung<\/h2>\n<pre class=\"lang:tex decode:true \">\\begin{flushleft}Dieser Text ist linksb\u00fcndig\r\n\\end{flushleft}\r\n\r\n\\begin{center}Dieser Text ist zentriert\r\n\\end{center}\r\n\r\n\\begin{flushright}Dieser Text ist rechtsb\u00fcndig\r\n\\end{flushright}<\/pre>\n<h1>Code-Schnipsel<\/h1>\n<p>Code-Schnipsel kann man mittels verbatim einf\u00fcgen<\/p>\n<pre class=\"lang:tex decode:true \">\\begin{verbatim}\r\n#!\/bin\/bash\r\necho Hello World\r\n\\end{verbatim}<\/pre>\n<p>M\u00f6chte man den Schnipsel in einer Box mit Rahmen dargestellt haben, muss das Package moreverb geladen werden<\/p>\n<pre class=\"lang:default decode:true \">\\usepackage{moreverb}\r\n\r\n \\begin{boxedverbatim} \r\n#!\/bin\/bash\r\necho 'Hello World'\r\n\\end{boxedverbatim}\r\n<\/pre>\n<h1>Aufz\u00e4hlungen<\/h1>\n<h2>Punkte<\/h2>\n<p>Nummerierungen macht man mit itemize<\/p>\n<pre class=\"lang:tex decode:true \">\\begin{itemize}\r\n  \\item jeder Eintrag wird mit einem Punkt angezeigt\r\n  \\item Es ist egal, wie lange der Text der Zeile ist\r\n\\end{itemize}<\/pre>\n<p>Wenn man den Abstanz zwischen der Aufz\u00e4hlung verkleinern m\u00f6chte, kann man itemsep verwenden<\/p>\n<pre class=\"lang:tex decode:true \">\\begin{itemize}\r\n  \\setlength\\itemsep{0em}\r\n  \\item ...\r\n  ...\r\n<\/pre>\n<h1>Nummern<\/h1>\n<p>Nummerierungen werden mit enumerate erstellt<\/p>\n<pre class=\"lang:tex decode:true \">\\begin{enumerate}\r\n  \\item This is the first entry in our list\r\n  \\item The list numbers increase with each entry we add\r\n\\end{enumerate}<\/pre>\n<h1>Bilder<\/h1>\n<p>Nur ganz kurz oberfl\u00e4chlich mit einem Beispiel angerissen, ohne auf <a href=\"https:\/\/en.wikibooks.org\/wiki\/LaTeX\/Floats,_Figures_and_Captions\" target=\"blank\">figure<\/a> einzugehen:<\/p>\n<pre class=\"lang:tex decode:true \">\\includegraphics[width=2cm]{\/home\/peter\/Pictures\/doofes\/ackackack.jpg} \r\n<\/pre>\n<p>Es l\u00e4sst sich auch by <a href=\"https:\/\/de.sharelatex.com\/learn\/Inserting_Images\" target=\"blank\">default ein Bildpfad<\/a> festlegen<\/p>\n<pre class=\"lang:tex decode:true \">\\graphicspath{ {.\/images\/} }\r\n<\/pre>\n<h1>Tabellen<\/h1>\n<p>Kleine Tabellen sind noch ganz ok, aber sobald es etwas komplexer wird, finde ich (als blutiger Anf\u00e4nger) recht m\u00fchsam. Dann verwende ich <a href=\"http:\/\/www.tablesgenerator.com\" target=\"blank\">Tables Generator<\/a>. Das ist ein Online-LaTeX-Tabellen Generator. W\u00fcrde ich manuell glaub ich verzweifeln, bei gewissen Layouts&#8230;<\/p>\n<p>Bei einer etwas l\u00e4ngeren Tabelle hatte ich auch das Problem, dass die &#8220;\u00fcber die Seite raus ging&#8221;, also nur halb sichtbar war. Das kann man jedoch recht simpel durch anpassen der Schriftgr\u00f6sse umgehen (zb. nach \\begin{table} einfach noch \\scriptsize (oder was auch immer) setzen).<\/p>\n<h1>Variabeln<\/h1>\n<p>Man kann auch eigene Variabeln definieren<\/p>\n<pre class=\"lang:tex decode:true \">\\newcommand{\\docauthor}{Peter V. Beck}\r\n\\newcommand{\\doctitle}{Dokument-Titel}\r\n\\newcommand{\\docsubtitle}{Dokument-Subtitle}\r\n\\newcommand{\\authoremail}{name@foo.bar}<\/pre>\n<p>Das kommt mir grad zugut, wenn man Dokumente aufsplittet, was ich gleich erw\u00e4hne&#8230;<\/p>\n<h1>Aufsplitten des Dokuments<\/h1>\n<p>Ein Dokument l\u00e4sst sich in mehrere tex-Files aufsplitten. Finde ich auf den ersten Blick schon n\u00fctzlich:<br \/>\nSo kann man eine fix definierte Titelseite f\u00fcr alle Dokumente einsetzen. \u00c4ndert 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.<\/p>\n<p>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 &#8216;titelseite.tex&#8217;, schaut das so aus:<\/p>\n<pre class=\"lang:tex decode:true \">\\input{titelseite}<\/pre>\n<p>und nat\u00fcrlich auch hier: Variabeln machen das ganze noch simpler&#8230; \ud83d\ude09<\/p>\n<h1>PDF Erstellung<\/h1>\n<p>Um ein PDF zu erstellen verwendet man pdflatex. Ich mach das direkt aus vim<\/p>\n<pre>:!pdflatex %<\/pre>\n<p>Es gibt jedoch auch andere Tools, wie beispielsweise <a href=\"https:\/\/packages.debian.org\/search?keywords=rubber&amp;searchon=names&amp;suite=all&amp;section=all\" target=\"blank\">rubber<\/a> die hierzu verwendet werden k\u00f6nnen.<\/p>\n<h2>Makefiles<\/h2>\n<p>Uch, damit hab ich nicht gerechnet, aber man kann makefiles schreiben f\u00fcr LaTeX-Dokumente. Dazu legt man einfach das entsprechende File an (Makefile) und bef\u00fcllt dies mit den gew\u00fcnschten Werten. Ein ultrasimples Makefile schaut etwa so aus:<\/p>\n<pre>paper=texfilename_ohne_extension\r\n\r\npdf:\r\n  pdflatex ${paper}.tex\r\n\r\nread:\r\n  zathura ${paper}.pdf &amp;\r\n\r\nclean:\r\n  rm -f ${paper}.{log,aux,out,toc}\r\n<\/pre>\n<p>Nun kann man das ganze einfach mit einem make kompilieren.<\/p>\n<p>Ein bisschen ein erweitertes Makefile (bin nur am rumtesten)<\/p>\n<pre>paper=filename\r\nshell=\/bin\/bash\r\n\r\npdf:\r\n  rubber --pdf ${paper}.tex\r\n\r\nodt:\r\n  pandoc -f latex -t odt -o ${paper}.odt ${paper}.tex\r\n\r\nhtml:\r\n  [ -d html ] || mkdir html\r\n  htlatex ${PAPER}.tex \"\" \"\" -dhtml\/\r\n\r\nall:\r\n  make pdf\r\n  make odt\r\n  make html\r\n\r\nread:\r\n  zathura ${paper}.pdf &amp;\r\n\r\nclean:\r\n  rubber --clean ${paper}\r\n\r\nwatch:\r\n  @while true; do inotifywait ${paper}.tex; sleep 0.01; make all; done\r\n<\/pre>\n<p>nun kann man zb. ein make watch starten und das Tex-File bearbeiten. Ist das ganze in einem PDF-Reader ge\u00f6ffnet, hat man sozusagen eine Live-Preview und ben\u00f6tigt kein vim-plugin dazu.<\/p>\n<h2>PDF-Metadaten<\/h2>\n<p>Gleich zu Beginn ist mir aufgefallen, dass die PDF-Metadaten nicht gesetzt wurden. Das kann man so \u00e4ndern:<\/p>\n<pre class=\"lang:tex decode:true\">\\usepackage[\r\n  pdftitle={Titel des Dokuments},\r\n  pdfsubject={Eine kurze Beschreibung, worum es geht},\r\n  pdfauthor={Peter V. Beck, I.},\r\n  pdfkeywords={meta, information, pdf, hyperref, latex}\r\n]{hyperref}\r\n<\/pre>\n<h1>Konvertierung<\/h1>\n<p>Konvertierung ? Dazu gibt es doch pandoc&#8230; damit kann man z.B. auch sehr einfach aus einem LaTeX-File ein ODT erstellen<\/p>\n<pre>pandoc -f latex -t odt -o output.odt input.tex<\/pre>\n<h1>Vorlagen<\/h1>\n<p>Auf <a href=\"https:\/\/www.overleaf.com\/\" target=\"blank\">Overleaf<\/a> findet man \u00fcberigens auch zahlreiche Templates f\u00fcr LaTeX&#8230;<\/p>\n<h1>Fazit<\/h1>\n<p>Wenn ich ehrlich bin \u2013 mir gef\u00e4llt das ganze eigentlich ganz gut&#8230; deswegen werde ich in n\u00e4chster Zeit auch versuchen, LaTeX \u00f6fter einzusetzen und dann seh ich schon, wie das ganze l\u00e4uft. Wie gesagt, ich will hier kein &#8216;Master&#8217; werden und f\u00fcr meine Nutzung ist das auch absolut nicht n\u00f6tig.<\/p>\n","protected":false},"excerpt":{"rendered":"Eigentlich wollte ich nur zum Thema Markdown was schreiben, irgendwie ist\u2019s dann doch etwas ausgeartet bei mir und ich hab mir \u00fcber\u2019s Wochenende mal ein bisschen LaTeX angeschaut (was ich sowieso schon lange, lange mal machen wollte&#8230;). Und ich muss gestehen, mir taugt das ganze recht gut. Hab das ganze&hellip;\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[52],"tags":[],"class_list":["post-1962","post","type-post","status-publish","format-standard","hentry","category-latex"],"_links":{"self":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1962"}],"version-history":[{"count":68,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1962\/revisions"}],"predecessor-version":[{"id":2154,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1962\/revisions\/2154"}],"wp:attachment":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}