PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bedingte Kompilierung in \LaTeX (ähnl. zu #ifdef)



patrickvogt
18-01-2013, 15:01
Hi,

ich habe mich mal hingesetzt und habe ein paar Befehle aus-X-bar gemacht, sodass das Kompilieren nicht immer alles kompiliert werden muss.

Ich habe in meiner Master-Thesis viele Kapitel und TikZ-Grafiken, die ich nachträglich, wenn sich diese nicht mehr ändern, ausschalten kann, damit diese nicht mehr mitkompiliert/mitgesetzt werden und somit das TeXen beschleunigen kann

Minimalbeispiel:


\documentclass[12pt]{article}

\usepackage{graphicx}
\usepackage{etoolbox}

\def\nox{} %schaltet alle bedingten Elemente aus
%\def\noincludegraphicsx{} %schaltet nur die bedingten Abbildungen aus
%\def\noinputx{} %schaltet nur die bedingten inputs aus
%\def\noincludex{} %schaltet nur die bedingten includes aus

\global\newbool{booltmp}

\newcommand{\includegraphicsx}[2][]
{
\booltrue{booltmp}
\ifdef{\nox}{\boolfalse{booltmp}}{}
\ifdef{\noincludegraphicsx}{\boolfalse{booltmp}}{}
\ifbool{booltmp}{\includegraphics[#1]{#2}}{}
}

\newcommand{\includex}[1]
{
\booltrue{booltmp}
\ifdef{\nox}{\boolfalse{booltmp}}{}
\ifdef{\noincludex}{\boolfalse{booltmp}}{}
\ifbool{booltmp}{\include{#1}}{}
}

\newcommand{\inputx}[1]
{
\booltrue{booltmp}
\ifdef{\nox}{\boolfalse{booltmp}}{}
\ifdef{\noinputx}{\boolfalse{booltmp}}{}
\ifbool{booltmp}{\input{#1}}{}
}

\begin{document}
Hello world!
$Hello world!$ %math mode

\begin{figure}[ht]
\includegraphicsx[width=\textwidth]{pic}
\caption{Test}
\end{figure}

\inputx{input}
\includex{include}


\end{document}


Sieht jemand vielleicht noch Probleme/Verbesserungsvorschläge für dieses Vorgehen?!

klops
22-01-2013, 10:19
Für \include gibt es bereits \includeonly oder mit dem Paket excludeonly (http://www.ctan.org/pkg/excludeonly) \excludeonly. Für \includegraphics kann man einfach graphicx mit Option draft laden. \def vor \newcommand ist ziemlicher sinnfrei ggf. wäre es sinnvoller die Reihenfolge umzudrehen und dann sauberer \renewcommand statt \def zu verwenden. Dann muss man zum einen nur an einer Stelle ändern und hat außerdem auch wieder optionale Argumente. Und dann sei noch auf comment (http://www.ctan.org/pkg/comment) hingewiesen.

Ansonsten stellt sich die Frage, ob es für den Anwender nicht einfacher wäre, wenn man das ganze in ein Paket verfrachten und dieses Paket je nach Option einfach die entsprechenden Befehle umdefinieren würde …

bobmalaria
22-01-2013, 11:39
fuer tikz grafiken wuedrde ich die tikz externalize funktion nutzen. damit werden graphen einmalig gesetzt und dann als pdf exportiert. beim naechsten kompilieren wird dann das bild eingebunden und nicht mehr der code ausgefuehrt. dazu sind nur wenige aenderungen im code noetig.

gruss

patrickvogt
22-01-2013, 21:23
Danke euch beiden. Ich werde eure Anregungen mir mal direkt anschauen.

Das mit dem TikZ externalize klingt sehr sehr interessant. Meine TikZ-Grafiken stocken beim Setzen schon extrem