Posts tagged ‘LaTeX’

Sicherheit von TeX-Dateien

Ausgehend von einem MikTeX Bug hat Chr. Schenk auf einen Vortrag hingewiesen, in dem einige Sicherheitlücken von TeX-Dateien gezeigt werden:

http://www.usenix.org/event/leet10/tech/techAbstracts.html#Checkoway.

We show that malicious TEX, BIBTEX, and METAPOST files can lead to arbitrary code execution, viral infection, denial of service, and data exfiltration, through the file I/O capabilities exposed by TEX’s Turing-complete macro language. This calls into doubt the conventional wisdom view that text-only data formats that do not access the network are likely safe. We build a TEX virus that spreads between documents on the MiKTEX distribution onWindows XP; we demonstrate data exfiltration attacks on web-based LATEX previewer services.

Nachtrag: Hier ist der Link zum entsprechenden Paper: http://cseweb.ucsd.edu/~hovav/dist/texhack.pdf.

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

Klausuren erstellen mit eqexam – Teil 1

Mit dem eqexam Paket von D.P. Story, dem Entwickler von AcroTeX, kann man recht einfach Klausuren und Tests in LaTeX entwerfen. Hier mal ein Beispiel, entstanden aus einem Artikel in der DTK, Ausgabe 1/2010, und freundlicher Hilfe aus d.c.t.t:

\documentclass{article}
\usepackage{eqexam}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
 
\begin{exam}[Part I.]{Part1}
\begin{problem}
Hallo Welt!
\begin{solution}
Hello World!
\end{solution}
\end{problem}
\end{exam}
\end{document}

Ausgehend von diesem Beispiel werd ich mich mal daran machen, a) einen meiner alten Klausurtexte aus Humboldt-Zeiten umzusetzen b) die Möglichkeiten abschätzen, ob sich auch benutzer-spezifische Klausuren generieren lassen.

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

Pocketmod mit LaTeX erstellen

Momentan bin ich dabei, mit LaTeX ein Pocketmod zu erstellen, einen Papier-Organizer der durch geschicktes Schneiden und Falten einer DIN A4 Seite entsteht: http://repocketmod.com/.

Da die Ausrichtung und Anordung der acht Seiten auf dem Blatt sehr individuell ist, verspricht dies recht interessant zu werden. Hier mein bisheriges Ergebnis:

Das Dokument zur Ausgabe eines 8-Seiten PDFs auf einer Seite:

\documentclass{scrartcl}
\usepackage[screen,paperheight=21cm,paperwidth=29.7cm,
 left=0mm,right=0mm,top=0mm,bottom=0mm]{geometry}
\usepackage[]{pdfpages}
\begin{document}
 
\includepdf[pages=-,nup=4x2,scale=1,frame=true]%
{8seitentext2.pdf}
 
\end{document}

Ein erstes Beispiel (ohne rotierte Seiten) für den umzuarrangierenden Text:

\documentclass{scrartcl}
\usepackage{forloop}
\usepackage{graphicx}
\pagestyle{empty}
\newcounter{ct} 
\begin{document}
 
\forloop{ct}{1}{\value{ct} < 9}{%
\begin{center}
\scalebox{80}{\thepage}
\end{center}
\clearpage
}
\end{document}

Der Text mit richtiger Ausrichtung und Anordnung der Seiten:

\documentclass{scrartcl}
\usepackage[]{graphicx}
\pagestyle{empty}
\newcounter{ct} 
\begin{document}
\begin{center}
\scalebox{40}{6}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{7}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{8}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{1}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{\rotatebox{180}{5}}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{\rotatebox{180}{4}}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{\rotatebox{180}{3}}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{\rotatebox{180}{2}}
\end{center}
\clearpage
\end{document}

Da mich meine LaTeX-Kenntnisse verlassen, hab ich mal in de.comp.text.tex gepostet.

Nachtrag: Der Hinweis aus d.c.t.t auf pdfjamund pdfjam-pocketmod,ein in pdfjam verfügbares Skript hat mich an pdftk erinnert, das auch unter Windows läuft. Hier die Lösung:

% Zerlegen der PDF Datei
pdftk 8seitentext.pdf burst

% Rotieren der vier Seiten um 180 Grad
pdftk pg_0005.pdf cat 1-endS output out5.pdf

pdftk pg_0004.pdf cat 1-endS output out4.pdf

pdftk pg_0003.pdf cat 1-endS output out3.pdf

pdftk pg_0002.pdf cat 1-endS output out2.pdf

% Mergen in der richtigen Reihenfolge
pdftk pg_0006.pdf pg_0007.pdf pg_0008.pdf pg_0001.pdf out5.pdf ou
t4.pdf out3.pdf out2.pdf cat output fertig.pdf

Dieses Dokument wird dann über das pdfpages Paket zu 8 auf 1 Seite eingebunden

\documentclass{scrartcl}
\usepackage[screen,paperheight=21cm,paperwidth=29.7cm, left=0mm,right=0mm,top=0mm,bottom=0mm]{geometry}
\usepackage[]{pdfpages}
\begin{document}
 
\includepdf[pages=-,nup=4x2,scale=1,frame=true]{fertig.pdf}
 
\end{document}

Eine aufwändigere, aber elegantere Lösung, die innerhalb eines LaTeX-Laufs erledigt werden kann, ist die folgende. Sie nutzt das pgfpagesPaket von Till Tantau, das in den Ausgabeprozess der einzelnen Seiten eingreift:

\documentclass[21pt]{scrartcl}
\usepackage[]{forloop}
\usepackage[]{blindtext}
\setlength{\parindent}{0pt}
\usepackage[]{lmodern}
\newcounter{ct} 
\usepackage{pgfpages}
 
  \edef\pgfpageoptionheight{\the\paperwidth} % landscaped by default
  \edef\pgfpageoptionwidth{\the\paperheight}
  \def\pgfpageoptionborder{0pt}
  \def\pgfpageoptionfirstshipout{1}
 
  \pgfpagesphysicalpageoptions
  {%
    logical pages=8,%
    physical height=\pgfpageoptionheight,%
    physical width=\pgfpageoptionwidth,%
    current logical shipout=\pgfpageoptionfirstshipout%
  }
 
    \pgfpageslogicalpageoptions{1}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.875\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{2}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.875\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{3}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.625\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{4}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.375\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{5}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.125\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{6}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.125\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{7}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.375\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{8}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.625\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
 
 
\begin{document}
 
\forloop{ct}{1}{\value{ct} < 9}{%
\blindtext
\clearpage
 
}
\end{document}

Nachtrag 2: Meine pgfpages-Version weist einen Fehler beim Rotieren von Seiten auf, der durch folgenden Patch der pgfpages.sty behoben werden kann.

        % alt, geht nicht
        %\expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname\relax%
         % \pgfscope%
        %\else%
         % \pgflowlevel{\pgftransformrotate{\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname}}%
        %\fi%
        
        \pgfscope% geht
				\expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname\relax%
        	\else%
          \pgflowlevel{\pgftransformrotate{\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname}}%
        \fi% 

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

Online-LaTeX Dienst

Bei http://www.verbosus.com kann man online LaTeX Dokumente erstellen. TODO an mich: ausprobieren 😉

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

LaTeX & Friends von Marc von Dongen

Marc van Dongen hat heute eine frühe Version seiner LaTeX-Anleitung “LaTeX & Friends” veröffentlicht. Zu finden unter http://csweb.ucc.ie/~dongen/LaTeX-and-Friends.pdf.

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

Subsubsubsection oder wenn die Gliederungsebenen in LaTeX nicht ausreichen

Wenn die vorgegebenen Gliederungsebenen nicht ausreichen in der verwendeten Dokumentenklasse, findet man bei http://www.asselmeyer.com/latex-gliederung-4ter-ordnung eine Lösung, die über das Umdefinieren von \paragraph funktioniert. Weil es mich schon immer mal interessiert hat, wie man eine komplett neue Ebene erstellt, hier ein Beispiel, entstanden mit viel Probieren und Fragen:

\documentclass{article}
 
\usepackage[]{blindtext}
\usepackage[]{forloop}
\usepackage{titlesec}
\usepackage[]{titletoc}
 
\titlecontents{subsubsubsection}[9em]{}{\contentslabel{3.9em}}%
{\hspace*{-1.2em}}{\titlerule*[0.675pc]{.}\contentspage}
 
\makeatletter
\newcounter{subsubsubsection}[subsubsection]
\setcounter{subsubsubsection}{1}
\setcounter{secnumdepth}{4} 
\setcounter{tocdepth}{5} 
\renewcommand{\thesubsubsubsection}{\thesubsubsection.\@arabic\c@subsubsubsection}
 
\titleclass{\subsubsubsection}{straight}[\subsubsection]
\titleformat{\subsubsubsection}{\bf}{\thetitle}{1em}{}[]						
\titlespacing{\subsubsubsection}{0pt}{3.25ex plus 1ex minus 0.2ex}{1.5ex plus 0.2ex} 
 
\makeatother
\newcounter{ct} 
 
\begin{document}
 
\tableofcontents
 
\forloop{ct}{1}{\value{ct} < 100}{%
\section{Das ist eine Section}%
\subsection{Das ist eine Sub-Section}%
\subsubsection{Das ist eine SubSub-Section}%
\blindtext%
\subsubsection{Das ist eine SubSub-Section}%
\subsubsubsection{Hier die neue SubSubSub-Section}%
\blindtext%
\subsubsubsection{Hier die neue SubSubSub-Section}%
\blindtext%
\paragraph{Das ist ein Paragraph}
\blindtext%
\subparagraph{Das ist ein Sub-Paragraph}
\blindtext%
}
\end{document}

Was mir noch nicht gefällt ist das Einrücken der \paragraphs im Inhaltsverzeichnis. Setze ich die tocdepth um eins herunter, verschwinden auch meine subsubsubsections aus dem Inhaltsverzeichnis. Dupliziere ich die \titlecontents Zeile und setze 12em statt 9em ein, verschwindet der Paragraph komplett. Merkwürdig…

Siehe das Update zu diesem Artikel unter http://uweziegenhagen.de/?p=1074

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

Folien vom LaTeX-Vortrag in Troisdorf

Letzte Woche war ich bei der Troisdorfer Linux User Group und hab einen kleinen Vortrag zu LaTeX & Co gehalten, hier die Folien: Intro

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

Kommentare durch todonotes Anmerkungen ersetzen

todonote ist ein ziemlich geniales Paket, um in Texten Notizen zu Teilen anzubringen, an denen man noch arbeiten muss. Heute kam in der deutschen TeX-Newsgroup de.comp.text.tex die Frage auf, ob man nicht LaTeX-Standardkommentare durch entsprechende \todo{} Einträge ersetzen kann.

Mit Ultraedit, einem genialen Editor Windows (und seit kurzem auch Linux) und dessen REGEXP-Fähigkeiten ist sowas schnell gemacht:

^(^%^)^(*^)^($^)

Erläuterung:

Es sind drei Subpattern, die jeweils mit ^( ^) separiert werden.

  • Das erste Pattern sucht nach dem % Zeichen (wird als \% dargestellt, da es auch ein aktives Zeichen in REGEXPs ist)
  • Das zweite Pattern sucht nach beliebigem Text, schließt aber das Zeilenende $ nicht mit ein.
  • Das dritte Pattern sucht einfach nach dem Zeilenende $, das uns nicht weiter interessiert.

Ersetzt wird dann durch das zweite Pattern, das in einen \todo Befehl eingebettet wird.

\todo{^2}

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

Lebenslauf in LaTeX

Für LaTeX gibt es ja mehrere gute Pakete, um einen Lebenslauf zu setzen. Über die Suche nach einer Möglichkeit, den Hintergrund einer \section einzufärben, bin ich eben auf eine interessante Reihe von Artikeln gestoßen.

http://stefano.italians.nl/archives/5

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website

Das Spreadtab-Paket Teil 4

Von Christian Tellechea, dem Autor von Spreadtab, habe ich als Kommentar zum dritten Teil noch einige Tipps bekommen, die ich mir sonst hätte mühsam zusammensuchen müssen. Da sein Beispiel im Kommentar aufgrund fehlender geschweifter Klammern nicht fehlerfrei durchlief, kommt hier eine bereinigte Version.

\documentclass{scrartcl}
\usepackage{spreadtab}
\usepackage{eurosym}
\usepackage{numprint}
\begin{document}
\STsetdecimalsep{,}% set the decimal separator to ,
\nprounddigits{2}% set the number of digit of the decimal part
\begin{spreadtab}[\STsavecell{\myresult}{d6}]{{tabular}{rrN{2}{2}N{2}{2}}}
@ Artikel & @ Anzahl & {@ Preis}& {@ Summe} \\ \hline
@Brot & 1.00 & :={2.00}\,\euro & :={[-1,0]*[-2,0]}\,\euro \\
@Butter & 2.00 & :={3.67}\,\euro & :={[-1,0]*[-2,0]}\,\euro  \\
@Milch & 3.00 & :={4.00}\,\euro & :={[-1,0]*[-2,0]}\,\euro \\
@Wein & 4.00 & :={5.00}\,\euro & :={[-1,0]*[-2,0]}\,\euro \\ \hline
 &     & {@Summe}     & :={sum(d1:[0,-1])}\,\euro  \\ \hline \hline
\end{spreadtab}
 
Die Gesamtsumme ist \numprint{\myresult}\,\euro.
 
\end{document}

Hinweis: Das Beispiel war fehlerhaft und hat ab D1 summiert, anstatt von D1. Im Quellcode hab ich es ausgetauscht, das richtige Ergebnis ist natürlich 41,34 Euro.

Uwe

Uwe Ziegenhagen has been working with LaTeX for more than a decade. Besides TeX/LaTeX he likes to work with Python, Rasberry/Arduino and his digital camera.

More Posts - Website