Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Wie bedingte Kompilierung in einem Latex-Dokument simulieren?

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.07.2008
    Beiträge
    6

    Wie bedingte Kompilierung in einem Latex-Dokument simulieren?

    Hallo!

    Ich möchte mit einer Latex-Quelldatei eine kurze und eine lange Ausgabe erzeugen. In der kurzen Ausgaben sollen einfach ein paar Textabschnitt fehlen. Da es für Latex keine bedingte Kompilierung gibt, habe ich versucht, mir mit folgenden, eigenen Kommando zu helfen:

    Code:
    %\newcommand{\versionlong}[1]{#1}
    \newcommand{\versionlong}[1]{}
    Wenn ich die lange Version erzeugen möchte, aktiviere ich obere Zeile, ansonsten unter Zeile. Textabschnitte, die nur in der langen Version erscheinen sollen, habe ich mit diesem Befehl eingerahmt:

    Code:
    \begin{versionlong}
    \begin{lstlisting}[]
    Hier ein Listing, das nur in der langen Version erscheinen soll.
    \end{lstlisting}
    \end{versionlong}
    Allerdings erscheint der zusätzliche Text dennoch in der Kurzversion, obwohl das untere Kommando definiert ist (ohne #1).
    Verwende ich hingegen

    Code:
    \versionlong{
    \begin{lstlisting}[]
    Hier ein Listing, das nur in der langen Version erscheinen soll.
    \end{lstlisting}
    }
    erscheint der zusätzliche Text nicht. Dann gibt es jedoch Probleme, wenn ich das Kommando für die lange Version aktiviere. In diesem Fall kann der Quelltext nicht kompiliert werden. Grund:

    Code:
    Runaway argument?
    ! Paragraph endet before \lst@next was complete.
    Hat jemand einen Lösungsvorschlag? Ich würde auch gern andere Möglichkeiten benutzen, um gewisse Textpassage auf Wunsch weglassen zu können.

    Danke!
    johlke

  2. #2
    Registrierter Benutzer Avatar von Donalduck
    Registriert seit
    08.05.2007
    Ort
    Augsburg
    Beiträge
    754
    Vielleicht hilft dir DocStrip?

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.07.2008
    Beiträge
    6
    Hallo Donald, das sieht hilfreich aus, allerdings finde ich keine leicht verständliche Anleitung im WWW. Es scheint sich um ein Programm zu handeln, das kompliziert eingebunden werden muss. Ich würde gern wenige Latex-Kommandos benutzen, um mein Anliegen umzusetzen.

  4. #4
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von johlke Beitrag anzeigen
    Ich möchte mit einer Latex-Quelldatei eine kurze und eine lange Ausgabe erzeugen. In der kurzen Ausgaben sollen einfach ein paar Textabschnitt fehlen. Da es für Latex keine bedingte Kompilierung gibt, habe ich versucht, mir mit folgenden, eigenen Kommando zu helfen:
    Paket comment erlaubt das auf einfache Weise

    Herbert

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.11.2007
    Beiträge
    105
    Man könnte vielleicht auch die Teile, die nicht überall erscheinen sollen in separate Tex-Dateien auslagern und dann mit \includeonly{} arbeiten.
    OS: Windows 7 64bit / Ubuntu 10.10
    LaTeX-Version: MikTeX 2.9 / TeXlive 2010
    LaTeX-Front-End: TexWorks 0.3 / vim+latexsuite

  6. #6
    Registrierter Benutzer
    Registriert seit
    07.04.2005
    Beiträge
    112
    Schau dir mal das comment-Paket an. Darin kannst du Umgebungen commenta, commentb, etc definieren und in der Präambel des Dokumentes einstellen, welche der comment-Umgebungen ins Zieldokument übernommen werden soll.

    Code:
    \includecomment{commenta, commentb}
    
    \begin{commenta}
    ...\end{commenta}
    
    usw. ...

  7. #7
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Syralist Beitrag anzeigen
    Man könnte vielleicht auch die Teile, die nicht überall erscheinen sollen in separate Tex-Dateien auslagern und dann mit \includeonly{} arbeiten.
    sie erscheinen zwar nicht, beeinflussen aber die Seitenzählung ...

    Herbert

  8. #8
    Registrierter Benutzer
    Registriert seit
    05.07.2008
    Beiträge
    6
    Hallo!

    Das Package "comment" hilft mir weiter, allerdings nicht wie ihr beschrieben habt.

    Benutze ich bspw.

    Code:
    \excludecomment{versiona}
    \begin{versiona}
    Ausgeschlossener Text
    \end{versiona}
    Erhalte ich den Compiler-Fehler "Environment versiona undefined".

    Nutze ich aber statt dem Namen "versiona" den Namen "comment" kann ich obigen Text aus- und ein-kompilieren. Möchte man allerdings mehr als zwei Versionen erstellen, reicht der eine Name "comment" nicht mehr aus. Habt ihr vielleicht eine Idee, was an obigem Beispiel falsch ist? Ich habe auch google bemüht und dort finde ich ähnliche Anleitungen zu den eurigen.

    Gruß
    johlke

  9. #9
    Registrierter Benutzer
    Registriert seit
    11.06.2008
    Beiträge
    151
    Hallo,

    es geht, wenn du den includecomment{}/excludecomment{}-Befehl für jede Umgebung einzeln aufrufst.

    Code:
    \documentclass{scrartcl}
    \usepackage{comment}
    \includecomment{commenta}
    \excludecomment{commentb}
    
    \begin{document}
    \begin{commenta}
    Test1
    \end{commenta}
    \begin{commentb}
    Test2
    \end{commentb}
    \end{document}

  10. #10
    Registrierter Benutzer
    Registriert seit
    05.07.2008
    Beiträge
    6
    Vielen Dank, so funktioniert's!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •