Archive for the ‘LaTeX’ Category.

Creating sparklines with LaTeX

Sparklines, invented by Edward Tufte (check out his awesome books!), are an interesting way of visualizing information inside the text. For more information on the theoretical background check Prof. Tufte’s page https://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR.

For LaTeX users there are a few ways of using them inside LaTeX which we will briefly introduce in this article.

1. Using the sparklines package.

Examples taken from the package documentation.

\documentclass[12pt]{article}
 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{sparklines}
 
\begin{document}
 
Hello, I am a 
\begin{sparkline}{10}
\sparkrectangle 0.0 1.1
\sparkdot 0.25 0.62 blue
\sparkdot 1 0.2 red
\spark 0.1 0.95  0.2 0.8  0.3 0.3  0.4 0.52  0.5 0.62
0.6 0.7   0.7 0.5  0.8 0.4  0.9 0.25  1 0.2 /
\end{sparkline}
sparkline in a document.
 
You can also 
\begin{sparkline}{5}
\sparkspike .083 .18
\sparkspike .25 .55
\sparkspike .417 1
\sparkspike .583 .62
\sparkspike .75 .42
\sparkspike .917 .5
\end{sparkline}
use sparkbars.
 
Both types can
\begin{sparkline}{5}
\sparkspike .083 .18
\sparkspike .25 .55
\sparkspike .417 1
\sparkspike .583 .62
\sparkspike .75 .42
\sparkspike .917 .5
\spark 0.1 0.95  0.2 0.8  0.3 0.3  0.4 0.52  0.5 0.62
0.6 0.7   0.7 0.5  0.8 0.4  0.9 0.25  1 0.2 /
\sparkdot 1 0.2 blue
\end{sparkline} also be combined.
 
\end{document}

2. Using the AfterTheFlood OTF font with the spark-OTF package by Herbert Voß

A few days ago I found information about a sparklines OTF font on Twitter which I then shared with the German TeX community. Herbert Voß created a few commands to use these fonts inside documents and packaged them.

When you update your TeX Live 2017 you should automatically get this package. In addition you need to install the fonts from After the Flood which are available from github.

Remark: as of 2017-09-24 the spark-otf package seems to have issues when compiled with xeLaTeX (at least with Windows). Use luaLaTeX to compile this. Update: With version 0.04 of the package xelatex is working fine.

\documentclass[12pt]{article}
 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{sparklines}
 
\begin{document}
 
Hello, I am a 
\begin{sparkline}{10}
\sparkrectangle 0.0 1.1
\sparkdot 0.25 0.62 blue
\sparkdot 1 0.2 red
\spark 0.1 0.95  0.2 0.8  0.3 0.3  0.4 0.52  0.5 0.62
0.6 0.7   0.7 0.5  0.8 0.4  0.9 0.25  1 0.2 /
\end{sparkline}
sparkline in a document.
 
You can also 
\begin{sparkline}{5}
\sparkspike .083 .18
\sparkspike .25 .55
\sparkspike .417 1
\sparkspike .583 .62
\sparkspike .75 .42
\sparkspike .917 .5
\end{sparkline}
use sparkbars.
 
 
Both types can
\begin{sparkline}{5}
\sparkspike .083 .18
\sparkspike .25 .55
\sparkspike .417 1
\sparkspike .583 .62
\sparkspike .75 .42
\sparkspike .917 .5
\spark 0.1 0.95  0.2 0.8  0.3 0.3  0.4 0.52  0.5 0.62
0.6 0.7   0.7 0.5  0.8 0.4  0.9 0.25  1 0.2 /
\sparkdot 1 0.2 blue
\end{sparkline} also be combined.
 
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Presentation on „LaTeX and EPUB“

This entry is part 3 of 3 in the series LWARP

Last weekend I gave a presentation (in German) on „LaTeX and EPUB“ on the Dante Autumn Conference in Mönchengladbach. You can find the slides and examples in my github repository: https://github.com/UweZiegenhagen/TalksAndArticles/tree/master/2017-Dante-Herbst-LaTeX-ePub.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit LaTeX HTML und EPUB erzeugen: EPUB-Erstellung

This entry is part 2 of 3 in the series LWARP

In Teil 2 dieser Artikelreihe schauen wir uns das Musterdokument mal etwas an:

  • Genutzt wird hier die book-Klasse. Ich habe es schon mit den „deutschen“ Klassen wie scrartcl probiert, aber Fehlermeldungen erhalten
  • Als nächstes kommt die Unterscheidung für pdflatex und xelatex/lualatex
  • gefolgt vom Laden des lwarp-Pakets mit diversen Einstellungen
  • makeidx, hyperref und xcolor sind auch bekannte Pakete
% Save this as tutorial.tex for the lwarp package tutorial.
\documentclass{book}
\usepackage{iftex}
% --- LOAD FONT SELECTION AND ENCODING BEFORE LOADING LWARP ---
\ifPDFTeX
\usepackage{lmodern} % pdflatex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\else
\usepackage{fontspec} % XeLaTeX or LuaLaTeX
\fi
% --- LWARP IS LOADED NEXT ---
 
\usepackage[
% HomeHTMLFilename=index, % Filename of the homepage.
% HTMLFilename={node-}, % Filename prefix of other pages.
% IndexLanguage=english, % Language for xindy index, glossary.
% latexmk, % Use latexmk to compile.
% OSWindows, % Force Windows. (Usually automatic.)
% mathjax, % Use MathJax to display math.
]{lwarp}
% \boolfalse{FileSectionNames} % If false, numbers the files.
 
% --- OTHER PACKAGES ARE LOADED AFTER LWARP ---
\usepackage{makeidx} \makeindex
\usepackage{xcolor} % (Demonstration purposes only.)
\usepackage{hyperref,cleveref} % LOAD THESE LAST!
 
% --- LATEX AND HTML CUSTOMIZATION ---
\title{The Lwarp Tutorial}
\author{Some Author}
\setcounter{tocdepth}{2} % Include subsections in the \TOC.
\setcounter{secnumdepth}{2} % Number down to subsections.
\setcounter{FileDepth}{1} % Split \HTML\ files at sections
\booltrue{CombineHigherDepths} % Combine parts/chapters/sections
\setcounter{SideTOCDepth}{1} % Include subsections in the side\TOC
 
\HTMLAuthor{Some Author} % Sets the HTML meta author tag.
\HTMLLanguage{en-US} % Sets the HTML meta language.
\HTMLDescription{A description.}% Sets the HTML meta description.
\HTMLFirstPageTop{Name and \fbox{HOMEPAGE LOGO}}
\HTMLPageTop{\fbox{LOGO}}
\HTMLPageBottom{Contact Information and Copyright}
\CSSFilename{lwarp_sagebrush.css}
 
\begin{document}
\maketitle % Or titlepage/titlingpage environment.
% An article abstract would go here.
\tableofcontents % MUST BE BEFORE THE FIRST SECTION BREAK!
\listoffigures
\chapter{First chapter}
\section{A section}
This is some text which is indexed.\index{Some text.}
\subsection{A subsection}
See \cref{fig:withtext}.
\begin{figure}\begin{center}
\fbox{\textcolor{blue!50!green}{Text in a figure.}}
\caption{A figure with text\label{fig:withtext}}
\end{center}\end{figure}
\section{Some math}
Inline math: $r = r_0 + vt - \frac{1}{2}at^2$
followed by display math:
\begin{equation}
a^2 + b^2 = c^2
\end{equation}
\printindex
\end{document}

Dieses Beispiel „dampfen“ wir jetzt etwas zusammen, um etwas einfacheren Code für unser erstes Epub zu erhalten. Wir ändern die Klasse auf „article“ und fügen zusätzlich noch \booltrue{FormatEPUB} ein, um die Konvertierung ins EPub zu unterstützen (siehe Handbuch)

\documentclass{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
 
\usepackage{lwarp}
\booltrue{FormatEPUB} % !
 
\usepackage{hyperref,cleveref}
 
\title{The Lwarp Tutorial}
\author{Uwe Ziegenhagen}
 
\setcounter{FileDepth}{1} 
\booltrue{CombineHigherDepths}
\setcounter{SideTOCDepth}{1}
 
\HTMLAuthor{Uwe Ziegenhagen}
\HTMLLanguage{de-DE}
\HTMLDescription{Mein erstes LaTeX-Epub}
 
\begin{document}
\maketitle 
 
\tableofcontents
 
\section{Hallo}
 
\blindtext[20]
 
\section{Welt}
 
\blindtext[20]
 
 
\end{document}

Diese Datei übersetzen wir anschließend mit pdflatex und lwarpmk html. Erzeugt werden jetzt die Hauptdatei im HTML sowie die beiden HTML-Dateien für die Sections. Zeit, diese jetzt nach EPUB zu bringen.

Mittel der Wahl ist dabei die eierlegende Wollmilchsau der E-Books, calibre. Also installieren und starten, diese Software ist für alle gängigen Betriebssysteme verfügbar.

In Calibre müssen wir noch einige Einstellungen vornehmen, das lwarp-Handbuch gibt vor, welche:

  • Unter Einstellungen, Erweiterungen, Dateityp-Erweiterungen muss das HTML to ZIP Plugin aktiviert sein
  • Wir müssen Calibre noch mitteilen, welche HTML-Tags den Umbrüchen entsprechen. Dazu gehen wir zu Einstellungen, Allgemeine Optionen, Strukturerkennung und setzten „Kapitel erkennen“ auf //h:h4

Damit ist die Konfiguration abgeschlossen, wir können die HTML-Dateien jetzt umwandeln. Dazu die HTML-Datei zu Calibre hinzufügen und mit „Bücher konvertieren“ umwandeln. Calibre erzeugt dann nach wenigen Sekunden ein EPUB, das in unserer Ebook-Bibliothek liegt.

Hier wieder das ZIP mit allen Dateien und den Ausgabe-Dateien.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit LaTeX HTML und EPUB erzeugen

This entry is part 1 of 3 in the series LWARP

Mit LWARP (https://www.ctan.org/pkg/lwarp?lang=de) gibt es ein neues Paket für die Umwandlung von LaTeX nach HTML. Die Besonderheit — was ich zumindest noch in keinem anderen Paket gesehen habe — ist die Unterstützung von EPUB. Leider geschieht dies (noch) nicht in dem Sinne, dass das Übersetzen ein fertiges EPUB erzeugt. Ein passender Workflow, der das zum Erstellen des finalen EPUBs genutzte Calibre einbindet, ist aber vielleicht möglich.

In Teil 1 dieser Artikelreihe möchte ich kurz zeigen, was man zum Übersetzen des Musterdokuments benötigt.

  • Ein sehr aktuelles TeX Live 2017. Das Paket ist initial im März 2016 erschienen, aktuell ist gerade Version 37 (!). Respekt für die Arbeit! Wer also nur die TeX Live Version der DVD nutzt, sollte ein Online-Update machen.
  • Calibre, die eierlegende Wollmichsau für E-Books

Legen wir los und folgen mal der Anleitung!

  1. Wir legen einen neuen Ordner an, hier ist E:\lwarp-beispiel
  2. Aus der Doku (erreichbar per texdoc lwarp auf der Kommandozeile) kopieren wir das Beispiel, bei mir auf den Seiten 46 und 47
    Wenn es dabei den folgenden oder einen ähnlichen Fehler gibt, hat man die Seitenzahl mit kopiert… (diese dann entfernen)


    See the LaTeX manual or LaTeX Companion for explanation.
    Type H for immediate help.
    ...

    l.38 l
    warp 47
    ?

  3. Mit pdflatex übersetzen. Das lwarp Paket erzeugt noch eine Reihe weiterer Dateien, unter anderem für CSS und eine Konfigurationsdatei für das lwarp-Paket.
  4. Wechsel in die Kommandozeile und in das Verzeichnis
  5. Führe den Befehl lwarpmk html aus
  6. im Verzeichnis sollte jetzt die HTML Datei erzeugt worden sein

Mein komplettes Projektverzeichnis habe ich mal gezippt, ladet dazu die Datei lwarp-beispiel herunter.

Im nächsten Teil schauen wir uns mal das Musterdokument genauer an und wandeln es in EPUB um.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

LaTeX für Geisteswissenschaftler: Der nächtliche Build-Prozess

Vor einer Weile haben sich ein paar TeXies zusammengefunden, um gemeinsam ein Skript/Buch zum Thema „LaTeX für Geisteswissenschaftler“ zu schreiben. Das Skript sowie alle Dateien ist auf github verfügbar. Ich schreibe das Kapitel zu git und SVN (aktuell noch auf der TODO-Liste) und kümmere mich um den nächtlichen Build.

  1. Ich habe hier einen kleinen Intel Nuc (Intel DN2820FYKH) mit Celeron Prozessor, der unter Ubuntu läuft.
  2. Auf der Maschine läuft Jenkins, ein Java-basiertes Build-Tool
  3. In Jenkins habe ich einen Workflow definiert, der:
    • das Arbeitsverzeichnis löscht
    • alle Dateien aus Github auscheckt
    • LuaLaTeX, Biblatex, LuaLaTex über den Code laufen und das Ergebnis in das „FinalesPDF“ Verzeichnis packt.
  4. Wenn der Build erfolgreich war, wird zusätzlich eine Blinkstick LED (https://www.blinkstick.com) auf grün gesetzt, sonst auf rot. Wenn ich morgens ins Wohnzimmer komme, sehe ich so auf einen Blick, ob es Probleme gab oder nicht.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mehr zu Emacs

Nachdem mir ein Kollege in der Firma gezeigt haben, wie er Emacs produktiv einsetzt, wird es jetzt Zeit, Emacs deutlich intensiver und ausführlicher zu behandeln. Meine Erfahrungen werde ich in einem Skript sammeln, das passende Github-Repo für den TeX-Code habe ich bereits angelegt. Wer mitmachen möchte, kann sich gern bei mir melden.

Github Repo

Hier noch ein empfehlenswerter Link zu vielen Emacs-Themen: https://github.com/emacs-tw/awesome-emacs

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Neue Version des varsfromjobname Pakets

Letzten Montag habe ich die neue Version meines varsfromjobname Pakets auf CTAN hochgeladen, es gibt auch ein Github Repo dazu: https://github.com/UweZiegenhagen/VarsFromJobname

What does this package do?

Using varsfromjobname.sty one can easily extract information from the filename, if it follows a certain form.

The standard LaTeX command \jobname returns the name of the LaTeX (master) file. If the filename consists of tokens separated by hyphen we can easily extract certain tokens that can be used inside the document.

The package expects the filename to be of the form one-two-three-four-five-six-seven-eight-nine.tex and offers the following commands:


\getfromjobname{param}, with param in the range of 1 to 9 (a highlevel interface to the following commands)

\getonefromjobname
\gettwofromjobname
\getthreefromjobname
\getfourfromjobname
\getfivefromjobname
\getsixfromjobname
\getsevenfromjobname
\geteightfromjobname
\getninefromjobname

Why can it be useful?

You can use this package for example to define the date of the document in the filename, personally I use it e.g. for scrlttr2 letters.

Change History

  • Version 0.5, as of January 11th 2009: Initial version published
  • Version 1.0, to be published May 2017: Added various commands which extract necessary information also from included documents. Modified code as suggested by egreg

Shortcomings

  • \getfromjobname is not fully expandable, use one of the other commands if you need expansion
  • Version 1.0 cannot extract information from included sub-documents
  • The package cannot handle more than nine tokens, see the reference to egreg’s answer on TSX below for an updated version

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Folien vom Informatiktag 2017 in Wuppertal

Hier meine Folien vom 16. Informatiktag in Wuppertal sowie ein Beispiel für die Erstellung von Klausurblättern mit LaTeX.

Wuppertal Folien (PDF)

exam Beispiel (TeX)

exam Beispiel (PDF)

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Generating a normal distribution table with SciPy

Here’s a simple example how one can generate a normal distribution table with Python and scipy so that it can be imported into LaTeX.

Example-03.zip

# -*- coding: utf-8 -*-
"""
Created on Mon Mar 13 21:14:17 2017
@author: Uwe Ziegenhagen, ziegenhagen@gmail.com
 
Creates a CDF table for the standard normal distribution
 
use booktabs package in the preamble and put 
the generated numbers inside (use only one backslash!)
 
\\begin{tabular}{r|cccccccccc} \\toprule
<output here>
\\end{tabular}
"""
 
from scipy.stats import norm
 
print(norm.pdf(0))
print(norm.cdf(0),'\r\n')
 
horizontal = range(0,10,1)
vertikal = range(0,37)
 
header = ''
for i in horizontal:
    header = header + '& ' + str(i/100)
 
print(header, '\\\\ \\midrule')
 
for j in vertikal:  
    x = j/10
    print('\\\\', x)
    for i in horizontal:
        y = x + i/100
        print('& ', "{:10.4f}".format(norm.cdf(y),4))
 
 
print('\\\\ \\bottomrule \r\n')

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

LaTeX-Dateien vergleich mit latexdiff

latexdiff ist Bestandteil von TeX Live und erlaubt es, die Unterschiede zwischen zwei LaTeX-Dateien hervorzuheben. Hier ein Beispiel mit einem kurzen Textschnipsel aus der Wikipedia:

Das Original (Giraffe1.tex)

\documentclass[12pt,ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\begin{document}
 
Die Giraffen (Giraffa) sind eine Gattung der Säugetiere aus der Ordnung der Paarhufer. Ursprünglich wurden ihr mit Giraffa camelopardalis und der Trivialbezeichnung \enquote{Giraffe} nur eine einzige Art zugewiesen. Molekulargenetische Untersuchungen aus dem Jahr 2016 zeigen jedoch, dass die Gattung wenigstens vier Arten mit sieben eigenständigen Populationen umfasst. Die Giraffen stellen die höchsten landlebenden Tiere der Welt. Zur Unterscheidung vom verwandten Okapi (sogenannte \enquote{Waldgiraffe}) werden sie auch als Steppengiraffen bezeichnet.
 
\end{document}

Eine Version mit leichten Änderungen (Giraffe2.tex)

\documentclass[12pt,ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\begin{document}
 
Die Giraffen (Giraffa) sind eine Gattung der Säugetiere aus der Ordnung der Paarhufer. Ursprünglich wurden ihr mit Giraffa camelopardalis und der Trivialbezeichnung \enquote{Giraffe} nur eine einzige Art zugewiesen. Untersuchungen aus dem Jahr 2016 zeigten jedoch, dass die Gattung wenigstens 4 Arten mit 7 eigenständigen Populationen umfasst. Die Giraffen stellen die höchsten landlebenden Tiere der Welt. Zur Unterscheidung vom verwandten Okapi (der sogenannten \enquote{Waldgiraffe}) werden sie auch als Steppengiraffen bezeichnet.
 
\end{document}

Auf der Kommandozeile ruft man jetzt auf latexdiff Giraffe1.tex Giraffe2.tex > Giraffediff.tex und übersetzt die neu erzeugte Datei nach PDF, das dann wie folgt aussieht:

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website