Archive for the ‘Tipps & Tricks’ Category.

Einen Gutschein mit LaTeX entwerfen

Hier der Code, um einen Gutschein mit LaTeX zu entwerfen. Der Code stammt vor allem aus der Anleitung von pgfornaments. Der Code ist nicht „minimal“, das liefere ich gelegentlich nach.

\documentclass[ngerman, a5paper]{article} 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\PassOptionsToPackage{dvipsnames,svgnames}{xcolor}  
\usepackage{graphicx,rotating} 
\usepackage[object=vectorian]{pgfornament}
\usepackage{tkzexample,tikzrput,pict2e,picture} 
\usetikzlibrary{shapes.geometric,calc} 
\usepackage{eso-pic,calc} 
\usepackage{fancyvrb}
\fvset{fontsize=\normalsize}  
 
\makeatletter
\AddToShipoutPicture{%
  \begingroup 
    \setlength{\@tempdima}{2mm}%
    \setlength{\@tempdimb}{\paperwidth-\@tempdima-2cm}%
    \setlength{\@tempdimc}{\paperheight-\@tempdima}%
    \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimc}){%
            \pgfornament[color=Maroon,anchor=north west,width=2cm]{63}} 
    \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdima}){%
            \pgfornament[color=Maroon,anchor=south west,width=2cm,symmetry=h]{63}}
    \put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdimc}){%
            \pgfornament[color=Maroon,anchor=north east,width=2cm,symmetry=v]{63}} 
    \put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdima}){%
            \pgfornament[color=Maroon,anchor=south east,width=2cm,symmetry=c]{63}}    
  \endgroup  
} 
\let\strippt\strip@pt     
\makeatother   
\newcommand{\eachpageornament}{%
\begin{picture}(0,0)
\put(0,0){\pgfornament[width=1cm]{41}};
\put(\strippt\textwidth,0){\pgfornament[width=1cm,symmetry=v]{41}}; 
\put(0,-\strippt\textheight){\pgfornament[width=1cm,symmetry=h]{41}}; 
\put(\strippt\textwidth,-\strippt\textheight){\pgfornament[width=1cm,symmetry=c]{41}};  % 
\end{picture}}   
 
 \usepackage{aurical}
\setkeys{Gin}{width=\linewidth,totalheight=\textheight,keepaspectratio}
\usepackage{array,booktabs} % book-quality tables
\usepackage{multicol} % multiple column layout facilities
\usepackage[babel=true]{microtype}
\usepackage[ngerman]{babel}   
\usepackage{blindtext} 
\pagestyle{empty}
 
\begin{document}
 \Fontlukas
 
\begin{center}
{\Huge Gutschein}
\end{center}
 
\large\noindent \blindtext
 
\vspace*{1.5em}\noindent Max\hfill Moritz
 
\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

Kalender mit tikz-calendar erstellen

This entry is part 3 of 3 in the series Kalender mit tikz-kalender

Hier ein Beispiel, wie man mit tikz-calendar Jahreskalender erstellen kann. Kalenderereignisse müssen in einer externen Datei abgelegt werden, im Beispiel ist das die meineevents.events.

Die Farbnamen für die einzelnen Elemente lassen sich in https://www.sciencetronics.com/greenphotons/wp-content/uploads/2016/10/xcolor_names.pdf nachlesen.

\documentclass{tikz-kalender}
 
\setup{%
lang=german,
year=2020,
showweeknumbers=true,
title={Urlaub},
xcoloroptions={x11names},
titleColor=cyan, 
eventColor=brown,
periodColor=lime,
monthBGcolor=red,
monthColor=Purple0,
workdayColor=yellow,
saturdayColor=magenta,
sundayColor=orange,
events={meineevents} % Einbinden der events-Datei
}
 
\begin{document}
\makeKalender
\end{document}

Hier der Inhalt der meineevents.events:

\event{\year-10-09}{John Lennon (1940)}
\event{2020-10-03}{Tag d. dt. Einheit}
\event*{2020-04-12}{Ostersonntag}
\period{2020-02-01}{2020-02-06}[color=Gray0,name={Urlaub}]; 

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

Zwei Aufgabenblätter auf einer Seite mit LaTeX

Für meine Studierenden erstelle ich diverse Übungsblätter, damit das Thema „Python“ etwas anschaulicher wird. Dazu nutze ich ein angepasstes LaTeX-Template, mit dem ich die Seite dupliziere und in verkleinerter Form auf das DIN A4-Blatt bringe.

%!TEX TS-program = Arara
% arara: pdflatex: {shell: yes}
% arara: pdflatex: {shell: yes}
% arara: clean: { extensions: [ log, aux, nav, out, snm, vrb, toc ] }
 
\documentclass[a4paper,ngerman,12pt]{exam} 
 
\usepackage{babel}
\usepackage[a4paper,top=2.5cm,bottom=3cm,left=2.5cm,right=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage{csquotes}
\usepackage{paralist}
\usepackage[math]{iwona}
\usepackage{textcomp}
\usepackage{listings}
\usepackage{xcolor}
 
\pointpoints{Punkt}{Punkte}
\bonuspointpoints{Bonuspunkt}{Bonuspunkte}
\renewcommand{\solutiontitle}{\noindent\textbf{Lösung:}\enspace}
 
\chqword{Frage}   
\chpgword{Seite} 
\chpword{Punkte}   
\chbpword{Bonus Punkte} 
\chsword{Erreicht}   
\chtword{Gesamt}
 
\pagestyle{headandfoot}
\runningheadrule
 
%%%%%%%
\definecolor{hellgelb}{rgb}{1,1,0.8}
\definecolor{lightgelb}{rgb}{1,1,0.8}
\definecolor{colKeys}{rgb}{0,0,1}
\definecolor{colIdentifier}{rgb}{0,0,0}
\definecolor{colComments}{rgb}{1,0,0}
\definecolor{colString}{rgb}{0,0.5,0}
 
\usepackage{listings}
\lstset{%
    float=hbp,%
    basicstyle=\ttfamily\footnotesize, %
    identifierstyle=\color{colIdentifier}, %
    keywordstyle=\color{colKeys}, %
    stringstyle=\color{colString}, %
    commentstyle=\color{colComments}, %
    columns=flexible, %
    tabsize=2, %
    frame=single, %
    upquote=true,%
    extendedchars=true, %
    showspaces=false, %
    showstringspaces=false, %
    numbers=left, %
    numberstyle=\tiny, %
    breaklines=true, %
    backgroundcolor=\color{hellgelb}, %
    breakautoindent=true, %
    captionpos=b%
}
 
%%%%%%%%%%%%
\lstset{literate=%
    {Ö}{{\"O}}1
    {Ä}{{\"A}}1
    {Ü}{{\"U}}1
    {ß}{{\ss}}1
    {ü}{{\"u}}1
    {ä}{{\"a}}1
    {ö}{{\"o}}1
    {~}{{\textasciitilde}}1
}
 
 
 
\usepackage{pgfpages}                                 % <— load the package
\usepackage{atbegshi}
 
\newcommand{\twoonone}{% 
  \pgfpagesuselayout{2 on 1}[a4paper,landscape,border shrink=5mm] % <— set options
  % duplicate the content at shipout time
  \AtBeginShipout{%
    \pgfpagesshipoutlogicalpage{1}\copy\AtBeginShipoutBox%
    \pgfpagesshipoutlogicalpage{2}\box\AtBeginShipoutBox%
    \pgfshipoutphysicalpage%
  }}
 
 
 
\firstpageheader{WS~2018/2019}{Skriptsprachenprogrammierung}{Dr.~Uwe Ziegenhagen}
\runningheader{WS~2018/2019}{Skriptsprachenprogrammierung}{Dr.~Uwe Ziegenhagen}
\firstpagefooter{\today}{}{\thepage\,/\,\numpages}
\runningfooter{\today}{Mitte unten}{\thepage\,/\,\numpages}
 
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt}
 
 
\twoonone % two pages on one
 
\begin{document}
 
\vspace*{0.5cm}
\begin{center}
\huge\bfseries Arbeitsblatt 02: Datentypen
\end{center}
\vspace*{0.5cm}
 
\section*{Aufgaben}
 
\begin{questions}
\question Welche Datentypen kennen Sie in Python?
 
\begin{itemize}
	\item 
	\item 
	\item 
	\item 
	\item 
\end{itemize}
 
\question Erstellen Sie verschiedene Variablen mit unterschiedlichen Datentypen! Führen Sie verschiedene Grundrechenarten mit den Datentypen durch.
 
\question Satz des Pythagoras: Berechnen Sie mittels Python die Hypotenuse eines Dreiecks, dessen Katheten 3 und 4 Zentimeter lang sind. Prüfen Sie die Datentypen der Variablen mittels \texttt{type()} Funktion! Warum gibt es Unterschiede in den Typen?
 
\question Richten Sie einen String beliebiger Länge bei der Ausgabe auf der Kommandozeile rechtsbündig aus! Hinweise: Gehen Sie von einer Zeilenbreite von 60 Zeichen aus. Benutzen Sie die \texttt{len()} Funktion, um die Länge der Zeichenkette zu bestimmen.
 
\question Nutzen Sie die \texttt{int()}, \texttt{float()} und \texttt{str()} Funktion, um verschiedene Datentypen umzuwandeln!
 
\question Hier kommt ein Listing
 
\begin{lstlisting}[language={Python}]
def create_bruch():
    zahlen = list(range(1,13))
    zaehler = random.choice(zahlen)
    zahlen.remove(zaehler)
    nenner = random.choice(zahlen)
    return 1234
\end{lstlisting}
 
\end{questions}
 
\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

Benannte Referenzen in LaTeX

Neben \ref{} und \pageref{} gibt es mit \nameref noch einen weiteren Befehl zur Referenzierung von Labels. \nameref{} gibt dabei den Titel des referenzierten Abschnitts aus. Daraus kann man dann auch einen \niceref{} Befehl bauen, der sowohl den Titel als auch die Seitenzahl in Klammern referenziert.

\documentclass[12pt,ngerman]{scrartcl}
 
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{hyperref}
\usepackage{fdsymbol}
 
\newcommand{\niceref}[1]{\enquote{\nameref{sec:abschnitt}} (\(\triangleright\)~\pageref{sec:abschnitt})}
 
\begin{document}
 
Siehe Abschnitt \ref{sec:abschnitt} mit dem Namen \nameref{sec:abschnitt} auf Seite \pageref{sec:abschnitt}.\vspace*{1cm}
 
Siehe Abschnitt  \niceref{sec:abschnitt}.
 
\clearpage
 
\section{Ein Abschnitt im Dokument}\label{sec:abschnitt}
 
\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

Slides for my TUG 2019 presentations in Palo Alto

This year I was able to visit the TUG 2019 meeting in Palo Alto, California. I gave two talks, one on LaTeX & Python, the other one on the creation of exams using the exam class. Find below the slides, all sources are included in the PDF and accessible at least via Adobe Reader.

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

Zwei DIN A5 Seiten auf einer DIN A4 Seite setzen

Für meine Studentinnen und Studenten erstelle ich zu jeder Vorlesung eine kurze Wiederholung auf Basis der exam Klasse. Üblicherweise reicht ein DIN A5 Blatt, daher liegt es nahe, zwei DIN A5 Blätter auf ein DIN A4 Blatt zu drucken.

Um nicht den Text zweimal setzen zu müssen, gibt es zwei nützliche Lösungen (neben der Nutzung von Adobe Acrobat):


Duplizieren der Seite mittels pdftk:

Für pdftk habe ich eine kleine Batch-Datei duplicate.bat geschrieben, die dann mittels duplicate datei1.pdf datei2.pdf aufgerufen wird.


@echo off
pdftk %1 cat 1-end 1-end output %2


Duplizieren der Seiten in LaTeX mittels pgfpages

Über TSX (https://tex.stackexchange.com/questions/142187/compile-two-a5-pages-on-one-a4-page/142272) bin ich auf eine Lösung gestoßen, die im LaTeX-Lauf selbst die Seite dupliziert:

\documentclass[a4paper,ngerman,12pt]{article}
 
\usepackage{pgfpages}                                 % <— load the package
\pgfpagesuselayout{2 on 1}[a4paper,landscape,border shrink=5mm] % <— set options
 
\usepackage{atbegshi}  % duplicate the content at shipout time
\AtBeginShipout{%
  \pgfpagesshipoutlogicalpage{1}\copy\AtBeginShipoutBox
  \pgfpagesshipoutlogicalpage{2}\box\AtBeginShipoutBox
  \pgfshipoutphysicalpage
}
 
\usepackage{blindtext}
\begin{document}
 
\blindtext[3]
 
\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

Einfach neue globale Optionen setzen und auswerten

Von Marei aus Regensburg (Danke!) stammt das folgende Beispiel. Es zeigt, wie man mit expl3 Syntax einfach neue globale Optionen setzen und auswerten kann.

\documentclass[lang]{scrartcl} 
 
\usepackage{expl3} 
 
\ExplSyntaxOn 
\exp_args:Nc \clist_map_inline:nn {@classoptionslist}{% 
\str_case_x:nn {#1}{% 
{kurz}{\newcommand{\myname}{Max}}%
{lang}{\newcommand{\myname}{Max~Mustermann}}}} 
\ExplSyntaxOff
 
\begin{document} 
 
\myname
 
\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

Serifenlose Mathematik mit Fira Math

Hier ein kurzes Beispiel für den serifenlosen Mathematik-Font Fira Math.

\documentclass{article}
\usepackage{amsmath}
\usepackage[mathrm=sym]{unicode-math}
\setmathfont{Fira Math}
 
\begin{document}
\[
x_{1,2} = -\frac{p}{2} \pm \sqrt{\left(\frac{p}{2}\right)^2 - q}
 \]
\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

Lernkarten mit LaTeX erstellen

Vor einigen Wochen habe ich eine Möglichkeit gesucht, Lernkarten mittels LaTeX zu erstellen: Frage auf der Vorderseite, Antwort auf der Rückseite.

Auf github habe ich dann https://github.com/kellertuer/Kartei gefunden, das genau diese Anforderungen umsetzt. Das Projekt ist leider noch nicht auf CTAN, vielleicht werde ich dem Autor mal dabei helfen. Aktuell muss man halt alle Dateien von github holen und a) in den lokalen TeX-Baum legen oder b) einfach in das eigene Projektverzeichnis packen.

Hier jetzt ein Beispiel:

\documentclass[a6paper,12pt,print,grid=front]{kartei}
 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{graphicx}
\usepackage[sfdefault]{plex-sans} 
\usepackage[]{blindtext}
\setlength{\parindent}{6pt}
\setlength{\parskip}{0pt}
 
\begin{document}
	\begin{karte}[Oben links]{Wie groß ist die mittlere Entfernung zwischen Erde und Sonne?}[Oben rechts]
	149.600.000 km
	\end{karte}
	\begin{karte}[Oben links]{Wie groß ist die mittlere Entfernung zwischen Erde und Mond?}[Oben rechts]
	384.400 km
	\end{karte}
	\begin{karte}[Oben links]{Wie groß ist die mittlere Entfernung zwischen Erde und Andromeda?}[Oben rechts]
	2.537.000 Lichtjahre
	\end{karte}
	\begin{karte}[Oben links]{Wie groß ist die mittlere Entfernung zwischen Erde und Andromeda?}[Oben rechts]
	\blindtext
	\end{karte}
\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

Syntaxhighlighting mit Pygments und LaTeX (Beamer-Version)

Das minted-Syntaxhighlighting für eingebetteten Code funktioniert natürlich auch für Beamer-Präsentationen. (Hinweis: Python und pygments müssen installiert sein, --shell-escape muss aktiviert sein)

\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
 
\usepackage{xcolor}
\definecolor{colBack}{rgb}{1,1,0.8}
 
\usepackage{minted}
\setminted[python]{frame=lines, framesep=2mm, baselinestretch=1.2, bgcolor=colBack,fontsize=\footnotesize,linenos}
\setminted[text]{frame=lines, framesep=2mm, baselinestretch=1.2, bgcolor=colBack,fontsize=\footnotesize,linenos}
 
\usepackage{fancyvrb}
\makeatletter
\newenvironment{pycode}[1]%
  {\xdef\d@tn@me{#1}\xdef\r@ncmd{python #1.py > #1.plog}%
  \typeout{Writing file #1}\VerbatimOut{#1.py}% 
  }
  {\endVerbatimOut %
 \toks0{\immediate\write18}%
 \expandafter\toks\expandafter1\expandafter{\r@ncmd}%
 \edef\d@r@ncmd{\the\toks0{\the\toks1}}\d@r@ncmd %
 \noindent Input
 \inputminted{python}{\d@tn@me.py}%
 \noindent Output
 \inputminted{text}{\d@tn@me.plog}%
}
\makeatother
 
\begin{document}
 
\begin{frame}[containsverbatim]
\frametitle{Python Code Evaluation}
 
\begin{pycode}{abc}
import pandas as pd
print(pd.__version__);
print(123+456)
\end{pycode}
 
\end{frame}
 
\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