Posts tagged ‘LaTeX’

Menübefehl-Sequenzen mit LaTeX darstellen

Auf tex.stackexchange kam heute die Frage auf, wie man beliebig lange Menübefehl-Sequenzen mit LaTeX darstellen kann (http://tex.stackexchange.com/questions/40613/create-a-command-for-menu-sequences). Da ich dies auch gelegentlich benötige, hier eine Kopie der Lösung:

\documentclass{article}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\begin{document}
\newcounter{menucount}\newcounter{curitem}% Counters
\newcommand{\menuitem}{\texttt}% Menu item formatting
\newcommand{\menusep}{\ensuremath{\rightarrow}}% Menu separator
\newcommand{\menuend}{\relax}% Menu end
\newcommand{\menulist}[1]{% \menulist{<menu list>}
  \setcounter{menucount}{0}\setcounter{curitem}{0}% Reset menucount & curitem
  \renewcommand*{\do}[1]{\stepcounter{menucount}}%
  \menulistparser{#1}% Count menu items
  \renewcommand*{\do}[1]{\menuitem{##1}\stepcounter{curitem}\ifnumless{\value{curitem}}{\value{menucount}}{\menusep}{\menuend}}%
  \menulistparser{#1}% Process list
}
\DeclareListParser{\menulistparser}{:}% List separator is ':'
 
\menulist{File:New:Class}% 3 menu items
 
\menulist{Tools:Options:Advanced:Properties:Document}% 5 menu items
 
\menulist{}% 0 menu items/empty list
 
\menulist{Help}% 1 menu item
 
\renewcommand{\menusep}{~\rule{1ex}{1ex}~}\renewcommand{\menuend}{!}% Different separator and end
\menulist{Your:Menu:Sequence:Here}
 
\end{document}

Nachtrag vom 23.03.2012:

Es geht sogar noch eleganter:

\documentclass[justified]{tufte-book}
\usepackage{lipsum}
\begin{document}
\def\spacer{\hspace{3pt}}
\def\test{}
%\def\test{\includegraphics[height=7pt]{./graphics/web/add.png}}
\def\alist{Dashboard, Content, Structure, Hello~yannis, Log Out, \test}
\makeatletter
\noindent\fbox{%
\begin{minipage}{9cm}
\noindent\colorbox{black}{\small
\@for \i:=\alist \do{\color{white}
  \texttt\i\spacer 
}}
\smallskip
\tiny \lipsum[1-2]
\end{minipage}}
\makeatother
\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

Inhalte umrahmen mit mdframed.sty

Das mdframed Paket bietet eine Vielzahl von Möglichkeiten, Text oder andere Inhalte mit Rahmen zu versehen. Die folgenden Beispiele sind der Dokumentation des Pakets entnommen:

\documentclass{scrartcl}
\usepackage[]{mdframed}
\begin{document}
 
\begin{mdframed}
Hallo Welt!\newline Foobar
\end{mdframed}
 
\newmdenv [linecolor=red, frametitle=Infobox,leftmargin=3cm,rightmargin=3cm]{infobox}
 
\begin{infobox}[ backgroundcolor=yellow ]
foo
foo
foo
\end{infobox}
 
\begin{verbatim}
Hallo
Welt
\end{verbatim}
 
\surroundwithmdframed[linewidth=2pt ]{verbatim}
 
\begin{verbatim}
Hallo
Welt
\end{verbatim}
 
\mdfdefinestyle{mystyle}{leftmargin=0pt ,linecolor=blue}
 
\begin{mdframed}[style=mystyle]
foo
\end{mdframed}
 
\newmdtheoremenv [linecolor=blue]{lemma}{Lemma}[section]
 
\section{abc}
 
\begin{lemma}[Some title]
foo
foo
foo
foo
foo
foo
\end{lemma}
 
\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

Verschiedene Versionen eines Textes mit tagging.sty

Mit dem relativ neuen tagging Paket lassen sich recht einfach unterschiedliche Versionen eines Textes erzeugen. Das folgende Beispiel soll dies verdeutlichen: Je nachdem, wie \usetag gesetzt ist, wird entweder der als „contribution“ oder der als „distribution“ markierte Text gesetzt.

\documentclass{scrartcl}
\usepackage[]{tagging}
\begin{document}
 
\usetag{distribution}
 
\tagged{contribution}{Please pay the amount of 100 Euro to the following account}
\tagged{distribution}{We will transfer 100 Euro to the following account}
 
\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

LaTeX: Das soul Paket und UTF8

Beim morgendlichen TeXen ist mir eben aufgefallen, dass das soul Paket (mit dem man wunderbar unterstreichen, durchstreichen und markieren kann) Probleme mit utf8 hat. Glücklicherweise bin ich nicht der Erste, der diese Probleme hat: Heiko Oberdiek hat mit soulutf8 [1] schon ein Paket bereitgestellt, das den notwendigen utf8 Support schafft.

[1] ftp://ftp.tex.ac.uk/pub/tex/macros/latex2e/contrib/oberdiek/soulutf8.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

Schneller TeXen mit Autohotkey, Autokey, Textexpander & Co – Teil 1

In zwei kurzen Beiträgen hatte ich bereits Tools vorgestellt, die Tastaturkürzel in komplette Textteile expandieren [1] [2]. Auch wenn viele Editoren geeignete Shortcuts mitbringen, sehe ich persönlich noch immer eine immense Zeitersparnis beim Einsatz dieser Shortkey-Expander. Heute möchte ich auf mein aktuelles Setup mit Autohotkey eingehen, in weiteren Teilen stelle ich dann Autokey für Linux und Textexpander für den Mac vor.

Die Installation von Autohotkey [3] ist ziemlich einfach. Beim ersten Start bietet das Tool an, eine entsprechende .ahk Datei anzulegen. Meine .ahk Datei habe ich im Dropbox-Ordner abgelegt und lediglich eine Verknüpfung zu dieser Datei im Autostart-Ordner angelegt. Vorteil ist, dass dadurch sowohl auf meinem Desktop als auch auf meinem Laptop immer die aktuellste Version verfügbar ist.

Schauen wir uns mal einige Definitionen an. Die ersten Kürzel, die ich definiert habe, waren die für die Eingabe von Dokumentstrukturen.

:*:s#::\section{{}{}}{LEFT}
:*:ss#::\subsection{{}{}}{LEFT}
:*:sss#::\subsubsection{{}{}}{LEFT}

Die Syntax bedeutet: Wann immer der User s# drückt, füge ein \section{} in den Text ein und gehe ein Zeichen nach links. Die geschweiften Klammern der \section Befehle müssen dabei escaped werden, da geschweifte Klammern in Autohotkey selbst aktive Zeichen sind.

Da es in den meisten Dokumenten auch einen standardmäßigen Satz an Klassen- und Paketdefinitionen gibt, lassen sich diese auch wunderbar per Kürzel definieren:

:*:doc#::\documentclass{{}scrartcl{}}`r`r\begin{{}document{}}`r`r`r\end{{}document{}}
:*:st#::\usepackage[utf8]{{}inputenc{}}`r\usepackage[T1]{{}fontenc{}}`r\usepackage{{}booktabs{}}`r
:*:u#::\usepackage[]{{}{}}{LEFT}

Da zu einer öffnenden Klammer auch in 99,99% der Fälle auch die schließende Klammer gehört, lässt sich hier auch ein Shortcut definieren, die pro Nutzung zwei Tastendrücke spart:

:*:(::(){LEFT}
:*:{::{{}{}}{LEFT}
:*:[::[]{LEFT}

Erhebliches Einsparpotential bieten auch Kürzel für die Textauszeichnung, \begin{}/\end{} und die verschiedenen Aufzählungen:

:*:bf#::\textbf{{}{}}{LEFT}
:*:it#::\textit{{}{}}{LEFT}
:*:tt#::\texttt{{}{}}{LEFT}

:*:b#::\begin{{}{}}{LEFT}
:*:e#::\end{{}{}}{LEFT}

:*:desc#::\begin{{}description{}}`r\item[]`r\item[]`r\item[]`r\end{{}description{}}{UP 3}{LEFT}
:*:enum#::\begin{{}enumerate{}}`r\item `r\item `r\item `r\end{{}enumerate{}}{UP 3}
:*:item#::\begin{{}itemize{}}`r\item `r\item `r\item `r\end{{}itemize{}}{UP 3}
:*:i#::\item{Space}
:*:di#::\item[]{LEFT}

Da sich mit Autohotkey auch einfache Datumsberechnungen ausführen lassen und ich einige Male am Tag das aktuelle oder gestrige Datum benötige, habe ich diese auch als Kürzel abgelegt.

:*:g#::
   Gestern = %A_Now%
   EnvAdd, Gestern, -1, Days
   FormatTime, Gestern, %Gestern%, dd.MM.yyyy
   Send, %Gestern%
   Return
:*:ä#::
   Heute = %A_Now%
   FormatTime, Heute, %Heute%, dd.MM.yyyy
   Send, %Heute%
   Return
:*:m#::
   Morgen = %A_Now%
   EnvAdd, Morgen, 1, Days
   FormatTime, Morgen, %Morgen%, dd.MM.yyyy
   Send, %Morgen%
Return

Im nächsten Teil geht es dann darum, wie sich diese Kürzel unter Linux definieren lassen.

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

Das standalone Paket – Bilder und andere Dokumentteile separat TeXen

Über die CTAN News Liste bin ich auf das standalone Paket von Martin Scharrer gestoßen. Dieses Paket erlaubt es, Grafiken und andere Dokumentteile separat in externen, eigenständig kompilierbaren Dateien zu erstellen und trotzdem bei Bedarf in ein zentrales Dokument zu übernehmen. Dabei ist die jeweilige Seite, die generiert wird, nur so groß wie die Grafik selbst, manuelles Croppen kann man sich ersparen.

Hier eine kurze Anleitung:

Das Dokument, das einzubetten ist, wird in einer Instanz der standalone Klasse eingebettet. (Hinweis: Die Grafik stammt von http://www.texample.net/tikz/)

\documentclass[tikz]{standalone}
 
\begin{document}
\begin{tikzpicture}[scale=1.5]
    % Draw axes
    \draw [<->,thick] (0,2) node (yaxis) [above] {$y$}
        |- (3,0) node (xaxis) [right] {$x$};
    % Draw two intersecting lines
    \draw (0,0) coordinate (a_1) -- (2,1.8) coordinate (a_2);
    \draw (0,1.5) coordinate (b_1) -- (2.5,0) coordinate (b_2);
    % Calculate the intersection of the lines a_1 -- a_2 and b_1 -- b_2
    % and store the coordinate in c.
    \coordinate (c) at (intersection of a_1--a_2 and b_1--b_2);
    % Draw lines indicating intersection with y and x axis. Here we use
    % the perpendicular coordinate system
    \draw[dashed] (yaxis |- c) node[left] {$y'$}
        -| (xaxis -| c) node[below] {$x'$};
    % Draw a dot to indicate intersection point
    \fill[red] (c) circle (2pt);
\end{tikzpicture}
\end{document}

Das Hauptdokument lädt dann das standalone Paket und fügt die externe Datei mittels \input ein:

\documentclass{scrartcl}
\usepackage{standalone}
\usepackage{tikz}
\begin{document}
 
Hi, I'm the main document.
 
\input{subdoc1}
 
\end{document}

Mehr Informationen finden sich in der Anleitung auf CTAN: http://mirror.ctan.org/macros/latex/contrib/standalone.

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: Umlaute in utf8 Listings korrekt ausgeben

Seit ich auf utf8-Encoding in meinen LaTeX-Dokumenten umgestellt habe, hatte ich Probleme, wenn einzufügende Listings Umlaute enthielten. Heute habe ich mal die Lösung gesucht:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[]{listings}
 
\begin{document}
 
\begin{lstlisting}[inputencoding={utf8},extendedchars=false]
öäöü
\end{lstlisting}
 
\end{document}

Nachtrag: So einfach war es dann doch nicht, Wörter mit Umlauten wurden beim Satz komplett zerlegt. Eine Nachfrage bei Stackexchange http://tex.stackexchange.com/questions/39640/typesetting-utf8-listings-with-german-umlaute brachte dann aber eine Lösung:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[]{listings}
 
\lstset{literate=%
    {Ö}{{\"O}}1
    {Ä}{{\"A}}1
    {Ü}{{\"U}}1
    {ß}{{\ss}}1
    {ü}{{\"u}}1
    {ä}{{\"a}}1
    {ö}{{\"o}}1
    {~}{{\textasciitilde}}1
}
\begin{document}
    \begin{lstlisting}[language={[LaTeX]TeX}]
    Staatsangehörigkeit
    \end{lstlisting}
\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

HP 12C Tasten mit LaTeX darstellen

Aus gegebenem Anlass muss ich die Tastendrücke eines HP 12C Taschenrechners mit LaTeX darstellen. Bei der Umsetzung war das folgende Beispiel von texample.net von großem Vorteil: http://www.texample.net/tikz/examples/class-diagram/. (Eine Alternative wäre das keystroke Paket von Rolf Niepraschk gewesen.)

\documentclass[12pt]{scrartcl}
\usepackage[]{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning,shapes,shadows}
 
\tikzstyle{abstract}=[rectangle, draw=black, rounded corners, fill=gray!20,drop shadow, text centered,  text=black, text width=8mm]
\tikzstyle{fkey}=[rectangle, draw=black, rounded corners, fill=orange,drop shadow, text centered,  text=black, text width=8mm]
\tikzstyle{gkey}=[rectangle, draw=black, rounded corners, fill=blue!40,drop shadow, text centered,  text=black, text width=8mm]
 
\newcommand{\mykey}[2]{%
\begin{tikzpicture} \node (Item) [abstract, rectangle split, rectangle split parts=2]{\textbf{\scriptsize{#1}} \nodepart{second}\textbf{\tiny{#2}}};%
\end{tikzpicture}}
 
\newcommand{\myfkey}{%
\begin{tikzpicture} \node (Item) [fkey, rectangle split, rectangle split parts=2]{\textbf{\footnotesize{f}} \nodepart{second}};%
\end{tikzpicture}}
 
\newcommand{\mygkey}{%
\begin{tikzpicture} \node (Item) [gkey, rectangle split, rectangle split parts=2]{\textbf{\footnotesize{g}} \nodepart{second}};%
\end{tikzpicture}}
 
\begin{document}
 
 \mykey{n}{$12x$}
 
 \mykey{SST}{$\Delta \text{DYS}$}
 
 \myfkey
 
 \mygkey
 
 \mykey{Enter}{=}
 
\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

Formulare ausfüllen mit LaTeX

Anbei mal ein Beispiel, wie man mit LaTeX Papierformulare ausfüllen kann, Grundlage war ein eingescanntes Avery Zweckform-Formular vom Typ Überweisungsformular 2816, formular.pdf, über das entsprechende Textfelder gelegt sind. Das geänderte Spacing ist eigentlich nicht nötig, ich wollte aber genau in die einzelnen Buchstabenfelder reindrucken.

\documentclass[fontsize=14pt,ngerman]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[]{graphicx}
 
 
\newcommand{\mybank}{MBS Potsdam}
\newcommand{\myblz}{15070000}
\newcommand{\myaccount}{1234567890}
\newcommand{\sender}{Uwe Ziegenhagen}
\newcommand{\receiver}{Stammtisch}
\newcommand{\receiverbank}{KSK Köln}
\newcommand{\receiverblz}{14080000}
\newcommand{\receiveraccount}{3234567891}
\newcommand{\amount}{123,45----}
\newcommand{\reference}{Beitrag 2010}
\newcommand{\morereference}{Uwe Ziegenhagen,Köln}
 
% to position textblocks on the page
\usepackage[absolute,overlay]{textpos}
\setlength{\TPHorizModule}{1mm}
\setlength{\TPVertModule}{1mm}
 
\usepackage[]{microtype}
%use textls{<Text>} to control space between characters
 
% override definition of pagesize
\usepackage[screen,paperheight=29.7cm,
paperwidth=21cm, left=0mm,right=0mm,
top=0mm,bottom=0mm]{geometry} %
 
\usepackage{eso-pic}
% to include the scanned form in the background
% useful for positioning the boxes
 
\usepackage[num]{isodate} % Date i dd.mm.yyyy Format
 
\newcommand{\mtscale}{250} % scaling factor for the \textls command
\newcommand{\boxfactor}{1.3} % Scalefactor for the text
 
% put everything in one command
\newcommand{\putformtext}[1]{\scalebox{\boxfactor}{\texttt{\textls[\mtscale]{#1}}}} % 
 
\begin{document}
% next line requires scanned form
\AddToShipoutPicture*{\put(0,0){\includegraphics{formular}}}
 
\begin{textblock*}{50mm}(1mm,9mm)
\putformtext{\mybank}
\end{textblock*}
 
\begin{textblock*}{50mm}(65mm,9mm)
\putformtext{\myblz}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,22mm)
\putformtext{\receiver}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,31mm)
\putformtext{\receiveraccount}
\end{textblock*}
 
\begin{textblock*}{50mm}(98mm,31mm)
\putformtext{\receiverblz}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,39mm)
\putformtext{\receiverbank}
\end{textblock*}
 
\begin{textblock*}{50mm}(78mm,48mm)
\putformtext{\amount}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,56mm)
\putformtext{\reference}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,65mm)
\putformtext{\morereference}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,73mm)
\putformtext{\sender}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,82mm)
\putformtext{\myaccount}
\end{textblock*}
 
\begin{textblock*}{50mm}(58mm,97mm)
\texttt{\today}
\end{textblock*}
 
%%%%%%%%%%%%%%%%%%%%%%% Zweiter Teil
 
\begin{textblock*}{50mm}(1mm,114mm)
\putformtext{\mybank}
\end{textblock*}
 
 
\begin{textblock*}{50mm}(65mm,114mm)
\putformtext{\myblz}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,128mm)
\putformtext{\receiver}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,137mm)
\putformtext{\receiveraccount}
\end{textblock*}
 
\begin{textblock*}{50mm}(98mm,137mm)
\putformtext{\receiverblz}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,145mm)
\putformtext{\receiverbank}
\end{textblock*}
 
\begin{textblock*}{50mm}(78mm,153mm)
\putformtext{\amount}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,163mm)
\putformtext{\reference}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,170mm)
\putformtext{\morereference}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,179mm)
\putformtext{\sender}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,188mm)
\putformtext{\myaccount}
\end{textblock*}
\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

Terme wegstreichen mit LaTeX

Ausgehend von einer Frage auf der MikTeX-Mailingliste hier ein schönes Beispiel für das Wegstreichen von Termen mit Hilfe des cancel-Pakets, gefunden unter http://anrg.usc.edu/~joonahn/www/index.php/Canceling_Terms_in_LaTeX_Math:

\documentclass{scrartcl}
\usepackage{cancel} 
\begin{document}
 
\[ a + b + \cancel{c} = \cancel{c} + d + e \] 
 
\[ a + b + \cancelto{0}{c} = d + e \] 
 
\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