Hallo,

ich schreibe an einem Buch.

Ein Kapitel daraus davon möchte ich als Artikel schon mal zum Lesen geben.

Weil das Kapitel allein aber nicht verständlich wäre, möchte ich ein paar Definitionen nur für den Fall der Artikelherausgabe im Gesatmtext hinzufügen können und mit einem Zähler sozusagen freigeben, für die Buchausgabe nach her aber sperren können.

Ich wollte das über Zähler umsetzen:

Open in writeLaTeX
\newcounter{mycounter}
\setcounter{mycounter}{1}

Ich habe mit \if \ifcase probiert, Abschnitte freizugeben oder zu sperren. So geht es aber wohl nicht. Weiss jemand Rat?

Besten Gruß Martin

gefragt 25 Okt '14, 09:59

Fussel's gravatar image

Fussel
31112
Akzeptiert-Rate: 0%

bearbeitet 25 Okt '14, 10:54

cgnieder's gravatar image

cgnieder
22.1k253463

Willkommen auf der TeXwelt! :)

(25 Okt '14, 10:55) cgnieder

Was Du mit einem Zähler möchtest, ist mir völlig unklar. Du könntest Dir mit LaTeX-Bordmitteln ein neues if definieren und einsetzen:

Open in writeLaTeX
\documentclass{article}
\newif\ifvorabdruck
% \vorabdrucktrue
\vorabdruckfalse % per Default eigentlich schon gesetzt

\usepackage{lipsum}% Dummy-Text

\begin{document}

\lipsum[1]

\ifvorabdruck
Das ist ein Vorabdruck
\else
Das ist das fertige Buch
\fi

\lipsum[1]

\end{document}

Die reine \if... \else \fi Syntax kann allerdings immer mal wieder zu Problemen führen, v.a. wenn man verschachtelte Bedingungen hat. Wenn man mit ihr nicht völlig vertraut ist, sind die möglichen Fehlermeldungen auch nicht immer einfach zu interpretieren und zu lösen. (Ursache ist dann oft eine falsch eingeschätzte/verstandene Expansionsreihenfolge...)

Sicherer und außerdem mit einer LaTeX-ähnlicheren ist dann zum Beispiel folgendes:

Open in writeLaTeX
\documentclass{article}
\newif\ifvorabdruck
% \vorabdrucktrue
\vorabdruckfalse % per Default eigentlich schon gesetzt

\makeatletter
\newcommand*\fallsvorabdruck{%
  \ifvorabdruck
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\makeatother

\usepackage{lipsum}% Dummy-Text

\begin{document}

\lipsum[1]

\fallsvorabdruck
  {Das ist ein Vorabdruck}
  {Das ist das fertige Buch}

\lipsum[1]

\end{document}

Die beiden Zeilen \expandafter\@firstoftwo bzw \expandafter\@secondoftwo sorgen dafür, dass die if-Abfrage beendet ist, bevor der jeweilige Code ausgeführt wird (das \expandafter sorgt dafür, dass das \else bzw das \fi expandiert wird, bevor \@firstoftwo bzw \@secondoftwo zum tragen kommen. Diese beiden haben jweils zwei obligatorische Argumente, \@firstoftwo nimmt davon das erste und schmeißt das zweite weg, \@secondoftwo nimmt das zweite und schmeißt das erste weg.

Wenn man sich mit eigener Programmierung unsicher fühlt, könnte man hier auch auf etoolbox zurückgreifen:

Open in writeLaTeX
\documentclass{article}
\usepackage{etoolbox}
\newbool{vorabdruck}
% \booltrue{vorabdruck}
\boolfalse{vorabdruck} % per Default eigentlich schon gesetzt

\usepackage{lipsum}% Dummy-Text

\begin{document}

\lipsum[1]

\ifbool{vorabdruck}
  {Das ist ein Vorabdruck}
  {Das ist das fertige Buch}

\lipsum[1]

\end{document}

Es gibt noch eine ganze Reihe weiterer Möglichkeiten wie etwas das comment Paket, das @Ijon in den Kommentaren bereits erwähnt hat. Dieses Paket hat zum Beispiel den Vorteil, dass man eine Umgebung für den eingefügten Text verwenden kann, was vor allem bei größeren Textstücken eine etwas übersichtlichere Struktur des Quelltextes ermöglicht:

Open in writeLaTeX
\documentclass{article}
\usepackage{comment}

% \includecomment{vorabdruck}
\excludecomment{vorabdruck}

\usepackage{lipsum}% Dummy-Text

\begin{document}

\lipsum[1]

\begin{vorabdruck}
  Das ist ein Vorabdruck.
\end{vorabdruck}

\lipsum[1]

\end{document}
Permanenter link

beantwortet 25 Okt '14, 10:53

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 26 Okt '14, 09:31

Hallo Clemens,

Hammer! Einen Riesendank für die unfassbar schnelle Hilfe, so wird es funktionieren.

Du hast Recht, ich brauche keinen Zähler sondern ein boolean. Ich hatte bloß die Syntax nicht kapiert.

Martin

(25 Okt '14, 11:27) Fussel

@Ijon so geschehen :) Hab ich was wichtiges vergessen?

(26 Okt '14, 13:04) cgnieder

Hallo,

danke auch für diese Hilfe.

Noch eine Rückmeldung dazu.

Ich habe mir die Pakete auf http://www.ctan.org/topic/cond-comp angesehen. tagging.sty bietet den Leistungsumfang, den ich eigentlich brauche. Das Beispiel im Handbuch: Man schreibt ein Buch zu einem Automodell, will aber die Unterschiede zum Diesel, zum Automatik, zum Cabrio ... bei der Textgenerierung beachten.

Besten Gruß Martin

Permanenter link

beantwortet 26 Okt '14, 08:02

Fussel's gravatar image

Fussel
31112
Akzeptiert-Rate: 0%

@Fussel Hi Martin, willkommen auf der TeXwelt! Zur Info, hier sind Antworten stets "echte" Antworten, keine Rückfragen oder Zusatzinfos, sondern Lösungen. Ggf. "kommentiert" man eine Antwort, es ist dezenter. Das verbessert die Übersicht erheblich für die Archivierung der Lösungen. Ungewohnt und anders als in Webforen, doch innovativ und nutzbarer als Archiv. Viel Erfolg mit Deinem Buch! Bei LaTeX-Fragen melde Dich stets gern hier.

(26 Okt '14, 10:09) stefan ♦♦

@Fussel Nachtrag :-) Die Antwort hat ja auch echte Infos zur Lösung, auch wenn es zunächst wie eine Antwort auf die Antwort aussieht. Also auch gern stehenlassen. Es wäre großartig, falls Du evtl. bei Verwendung des Pakets einen Beispielcode nebenbei erhältst, den Du noch hier editierend einfügen könntest. Ich kannte das Paket vorher nicht.

(26 Okt '14, 10:15) stefan ♦♦
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×20
×14

gestellte Frage: 25 Okt '14, 09:59

Frage wurde gesehen: 10,121 Mal

zuletzt geändert: 26 Okt '14, 13:04