Author Archive

Mit ifdraft und tagging Dokumentteile ausblenden.

Hier ein Beispiel für die Kombination von ifdraft und tagging. Grundsätzlich würde ifdraft für viele Zwecke ausreichen, tagging bietet aber ein sauberes Interface und einige zusätzliche Befehle.

\documentclass[draft]{scrartcl} % delete the global option draft to see the difference
\usepackage[]{ifdraft}
\usepackage[]{tagging}
\ifdraft{\usetag{draft}}{\usetag{final}}
\begin{document}
 
\iftagged{draft}{Some text, if draft is set.}{Some text, if draft has not been set.}
 
\begin{taggedblock}{draft}
This is a draft block!
\end{taggedblock}
 
\begin{taggedblock}{final}
This is a final block!
\end{taggedblock}
 
\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

In Excel den Monats- und Quartalsersten/-letzten bestimmen

Den ersten und letzten Tag eines Monats bzw. Quartals kann man recht einfach in Excel bestimmen.

Sei in A1 ein Datum, für das die Werte bestimmt werden sollen.

  • Monatserster: =DATUM(JAHR(A1);MONAT(A1);1)
  • Monatsletzter: =DATUM(JAHR(A1);MONAT(A1)+1;1)-1
  • Quartalserster: =DATUM(JAHR(A1);MONAT(A1)-REST(MONAT(A1)-1;3);1)
  • Quartalsletzter: =DATUM(JAHR(A1);MONAT(A1)+REST(3-MONAT(A1);3)+1;)

Hier noch ein paar Datumsformeln:

  • Quartal =AUFRUNDEN(MONAT(A1)/3;0)

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 3

Teil 3 in der Reihe [1] zeigt einige Beispiele, wie man in Autokey Tastaturkürzel definiert.

Hier ein Beispiel, wie aus doc# ein minimales LaTeX-Dokument expandiert wird. Hinter dem \end{document} stehen die Befehle, um den Cursor drei Zeilen nach oben zu bewegen. Die folgenden Befehle werden unterstützt:

  • <left>
  • <right>
  • <up>
  • <down>
  • <enter>
  • <delete>

Nach der Definition des expandierten Texts muss noch das Kürzel definiert werden (Abbreviations => Set). Da nach der Eingabe von doc# das doc# entfernt werden soll und sofort ersetzt werden soll, setzt man

  • Remove typed abbreviation
  • Trigger immediately (don’t require a trigger character)

Um Datum und Zeit ausgeben zu lassen, kann man die folgenden Skripte nutzen:

ä#
output = system.exec_command("date +'%d.%m.%Y'")
keyboard.send_keys(output)

z#
output = system.exec_command("date +'%R'")
keyboard.send_keys(output)

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 Python LaTeX-Code erzeugen

Die programmatische Erstellung von LaTeX-Code durch ein Framework hat mich schon immer interessiert, über ein stackexchange Posting (http://tex.stackexchange.com/questions/41875/generate-latex-truth-table-with-python-cheetah) wurde jetzt auch mein Interesse an der Erzeugung durch Python geweckt.

Hier ein Beispiel für die Erzeugung von LaTeX durch das Python Cheetah framework:

from Cheetah.Template import Template
definition = """\\documentclass{article}
 
\\title{$paper.title}
\\author{$author.name}
 
\\begin{document}
 
\\maketitle
 
 
\\end{document}"""
 
class author:
    """A simple example author class"""
    name = "Uwe Ziegenhagen"
    def f(self):
        return 'Hello World'
 
class paper:
    """A simple example paper class"""
    title = "My First paper"
    def f(self):
        return 'hello world'
 
 
uwe = author()
mypaper = paper()
 
print Template(definition, searchList=[{'author' : uwe,'paper' : mypaper}])

Erzeugt wird dadurch folgendes Dokument:

\documentclass{article}

\title{My First paper}
\author{Uwe Ziegenhagen}

\begin{document}

\maketitle

\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

Unterschiedliche Bilder für Druck und Screen

PDFlatex unterstützt die Ausgabe unterschiedlicher Grafikversionen für Print und Screen. Die einzige Bedingung ist, dass beide Grafiken die gleiche Breite und Höhe haben.

Hier ein Beispiel:

\documentclass{scrartcl}
\usepackage[]{graphicx}
\begin{document}
 
\includegraphics[print=print.jpg]{draft.jpg}
 
\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 füllen mit LaTeX

Wie man mit lpic.sty Formulare füllt, habe ich in einem früheren Blogeintrag bereits gezeigt: (http://uweziegenhagen.de/?p=1208). Hier ein neues Beispiel, dieses Mal für einen Kaufvertrag über ein gebrauchtes Rad, den man unter www.vsf.de/fileadmin/vsf/downloads/kaufvertragprivat.pdf herunterladen kann.

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[left=0cm,right=0cm,top=0cm,bottom=0cm]{geometry}
\usepackage[]{graphicx}
\usepackage[]{lpic}
\setlength{\parindent}{0pt}
\begin{document}
\begin{lpic}[]{kaufvertragprivat(0.999)} % coords(20)
\lbl[t]{41,248;\textcolor{black}{\small \textbf{Max Mustermann}}}
\lbl[t]{130,248;\textcolor{black}{\small \textbf{Martina Musterfrau}}}
\lbl[t]{55,240;\textcolor{black}{\small \textbf{Musterstr. 2, 12345 Musterstadt}}}
\lbl[t]{140,240;\textcolor{black}{\small \textbf{Musterweg 23q, 12345 Musterstadt}}}
\lbl[t]{50,230;\textcolor{black}{\small \textbf{Personalausweis, 1234567890}}}
\lbl[t]{40,160;\textcolor{black}{\small \textbf{Oranje}}}
\lbl[t]{44,150;\textcolor{black}{\small \textbf{Hollandrad}}}
\lbl[t]{41,140;\textcolor{black}{\small \textbf{28 Zoll}}}
\lbl[t]{45,131;\textcolor{black}{\small \textbf{schwarzblau}}}
\lbl[t]{40,122;\textcolor{black}{\small \textbf{12345}}}
\lbl[t]{40,100;\textcolor{black}{\small \textbf{Beleuchtung}}}
\lbl[t]{41,95;\textcolor{black}{\small \textbf{Gepäckträger}}}
\lbl[t]{41,90;\textcolor{black}{\small \textbf{Schutzbleche}}}
\lbl[t]{39,85;\textcolor{black}{\small \textbf{Kopfstütze}}}
\lbl[t]{42,80;\textcolor{black}{\small \textbf{mehr Zubehör}}}
\lbl[t]{42,75;\textcolor{black}{\small \textbf{mehr Zubehör}}}
\lbl[t]{42,70;\textcolor{black}{\small \textbf{mehr Zubehör}}}
\lbl[t]{60,59;\textcolor{black}{\small \textbf{Musterstadt, den \today}}}
\lbl[t]{167,71;\textcolor{black}{\Large \textbf{--1234--}}}
\lbl[t]{113,83;\textcolor{black}{\Large X}}
\lbl[t]{113,121;\textcolor{black}{\Large X}}
\lbl[t]{113,116;\textcolor{black}{\Large X}}
\lbl[t]{113,116;\textcolor{black}{\Large X}}
\lbl[t]{113,126;\textcolor{black}{\Large X}}
\lbl[t]{113,150;\textcolor{black}{\Large X}}
\lbl[t]{113,155;\textcolor{black}{\Large X}}
\end{lpic}
\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

Outlook-Automatisierung mit Excel

Zu meinen aktuellen Aufgaben gehört es gelegentlich, Aufträge an den IT-Dienstleister in einem bestimmten Format zu verfassen. Nachdem ich einige Male die notwendigen Texte mühevoll zusammenkopiert hatte, kam der Wunsch nach der Automatisierung des ganzen auf. Mit ein wenig VBA Code und Google (http://www.exceltip.com/show_tip/Applications_-_Word,_Outlook_in_VBA/Control_Outlook_from_Excel_using_VBA_in_Microsoft_Excel/464.html) ist es recht einfach, die E-Mails zusammenzubauen.

Hier ein einfaches Beispiel: Aus der jeweils aktiven Zeile sollen E-Mail Adresse, Betreff und Body ausgelesen und in eine E-Mail gesetzt werden, die aktive Zeile ermittele ich dabei über currentrow = ActiveCell.Row.

Der Code, der unter dem Link verfügbar ist, benötigt eine Referenz zur Microsoft Outlook Object Library, diese lässt sich über Extras => Verweise einfügen. Wenn wir das Beispiel auf unser Szenario anpassen, erhalten wir:

Sub SendAnEmailWithOutlook()

currentrow = ActiveCell.Row

Dim OLF As Outlook.MAPIFolder, olMailItem As Outlook.MailItem
Dim ToContact As Outlook.Recipient
    Set OLF = GetObject("", _
        "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    Set olMailItem = OLF.Items.Add ' erstellt neue Mail
    With olMailItem
        .Subject = Cells(currentrow, 3).Value ' Betreff
        Set ToContact = .Recipients.Add(Cells(currentrow, 2).Value) ' Empfänger
        .Body = Cells(currentrow, 4).Value ' Body
        .Save ' nur Speichern, nicht sofort senden
    End With
    Set ToContact = Nothing
    Set olMailItem = Nothing
    Set OLF = Nothing
End Sub

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 2

Im heutigen Artikel möchte ich Autokey vorstellen, das ich unter Ubuntu 11.10 benutze und das auch zumindest die von mir genutzten Autohotkey-Funktionen abdeckt.

Installation

Über sudo apt-get install autokey kann man zwar Autokey installieren, ich bevorzuge jedoch die ppa-Version, da diese unter Umständen aktueller ist.

Was muss man dafür tun? Nicht viel:

sudo add-apt-repository ppa:cdekter/ppa
sudo apt-get update
sudo apt-get install autokey

Ein Hinweis: Nach der Installation taucht das autokey eventuell nicht in der Unity Oberfläche auf, obwohl der Prozess im Hintergrund läuft. In diesem Fall drücken, dann sollte das Menü angezeigt werden. Unter Ubuntu 11.10 hatte ich zusätzlich das Problem, dass autokey die Einstellung zum automatischen Start nicht speichern wollte, weil der Pfad /home/uwe/.config/autostart/ fehlte, die manuelle Ordneranlage half in diesem Fall.

Im nächsten Teil dann mehr zur Bedienung von Autokey.

Nachtrag vom 28.06.2012: http://maketecheasier.com/make-autokey-works-in-ubuntu-natty/2011/06/26 erklärt, wie man Autokey auch unter Unity zum Laufen bekommt.

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

Powershell: Ersetzungen in Dateinamen durchführen

Hier ein kurzer Schnipsel, wie man Zeichen in Dateinamen ersetzen kann. Für die tatsächliche Umbenennung ist das „-whatif“ zu entfernen.

$files = gci -Recurse | ? {$_.PSisContainer -eq $false} |  ? {$_.name -match "~"}
 
foreach ($i in $files){
            rni -WhatIf $i.fullname $i.Name.Replace("~","_")
}

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

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