PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschiedene Varianten eines Dokuments



slowfox
09-08-2007, 15:14
Für eine Konferenz muss ich drei Varianten eines Papers einreichen, ein Abstract (1 Seite), ein 6-seitiges Paper für
das gedruckte Procceeding, und ein 20-seitiges Paper für das elektronische Proceeding (CD/DVD). Insbesondere die
letzten beiden Papers werden eine große Schnittmenge haben, weswegen ich gerne mit einem Dokument arbeiten möchte, das
alles enthält.

Ich habe hierzu verschiedene LaTeX-Packages gefunden, die mir helfen können (versions.sty, version.sty, optional.sty
und ggf. comment.sty). Hat jemand Erfahrungen mit diesen Paketen gemacht und kann mir die Vor- und Nachteile der
einzelnen Pakete darlegen? Die Kommentare in den sty-Files habe ich mir bereits angesehen, aber dort steht natürlich
kaum eine kritische Beurteilung des eigenen Paketes.

Spindoctor
10-08-2007, 21:27
Kenn keines der Pakete.

Aber wäre es nicht einfach mit mehreren "Stammdokumenten" getan, in denen Du mittels "include" oder "input" jeweils die Teile der Arbeit hineinnimmst, die Du haben willst?

edico
12-08-2007, 11:03
Mit optional geht es recht einfach. version/versions kenn ich nicht.
Ich habe mir mal eine Zusammenstellung gemacht (für 2 Outputs: Print und Screen), die auf Deine Verhältnisse umgeschrieben (also mit 3 Dokument-Variationen) so aussehen kann (einige Annahmen vorausgesetzt).

Aus der REDAME zitiert
...
----------
Ueberblick
----------

Es wird angenommen, dass drei unterschiedliche Dokument-Varianten aus nur einem
Rohtext erstellt werden sollen.

Die Loesung ist dahingehend konzipiert, dass fuer die jeweilge
Dokument-Varainte der benoetigte Text modulweise zusammengefuegt wird. Somit
ist der Rohtext auf mehrere Textdateien abschnittsweise (Abschnitt, Kapitel,
Paragraph) (hier Module genannt) vorab zu verteilen.

Zur Steuerung der Module und deren Einbettung in das jeweilige Dokument werden
folgende Konfigurationen eingebracht:
- eine Hauptdatei benutzt die 'case'-Umgebung, um unterschiedliche
Konfigurationen zu ermoeglichen - 2-spaltige Zusammenfassung, DinA4 zum
Drucken, Bildschirm-minded etc.
- eine style-Datei generiert den reihenweisen Aufruf der jeweils benoetigten
Dateien (Module) mit einem einfachen Befehl in der Hauptdatei.

Der Makefile (Linux) stellt Befehlssequenzen so zusammen, dass der
Compiling-Prozess automatisch an der Konsole ablaeuft.


------------
Alle Dateien
------------

0README Diese Datei
main-abstract.pdf Dokument 'abstract'
- Eine Zusammenfassung DIN A5 Format
main-print.pdf Dokument 'print'
- Alle erstellten Abschnitte DIN A4 Format
main-screen.pdf Dokument 'screen'
- Web-orientiert, selektiert SCREEN Format
main.tex Hauptdatei
Makefile Utility (GNUmake; OS Linux)
Applikationen automatischerstellen
(Konsolen-orientiert)
modulX.tex Daten-/Textdateien (Module)
X durchnummeriert von 1 bis n;
hier (als Beispiel):
- modul1.tex-modul8.tex Praeamble-Daten
- modul11.tex-modul15.tex Textdateien
- modul99.tex Anhangsdatei
module.sty Konfigurationsdatei
zum Aufruf der fuer das jeweilige Dokument
benoetigten Module
...

Sollte Dich das interessieren, schick ich Dir gerne einen tarball(, wenn Du mir Deine email in die Privaten Nachrichten legst. Ab und zu schau ich dort rein ;-) ).

edico

MichL
17-07-2008, 13:19
Hey Leute!

Nach einem Jahr darf der Thread wieder raus :)

Mein Problem ist ein ähnliches, mit dem Unterschied, dass ich keinen Text als (pdf-)Dokument ausgebe, sondern das Ganze schon aus PDFs eingelesen wird. Das Ganze stellt dann eine Produktmappe dar.

Hierzu sollen 2 verschiedene Versionen, am besten mit möglichst wenig Handgriffen/Veränderungen am Code, ausgegeben werden können.

Ein Ausschnitt des Codes:



\documentclass[11pt,a4paper]{article}
\usepackage{ngerman}
\usepackage{a4wide}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{array}
\usepackage{pdfpages}
\usepackage{hyperref}

\begin{document}
\title{ AAA } \author{ BBB }\date{Juli 2008}\maketitle
%++++++++++++++++++++++++++++++++++++
\tableofcontents
%001+++++++++++++++++++++++++++++++++++++

%%Blatt1:
\includepdf[pages=-,frame=false,scale =0.8,pagecommand={\lhead {A}\rhead{Seite \thepage}},addtotoc={1,section,1,{ AB },Label_001}]{ABC.pdf}

%%Blatt2:
\includepdf[pages=-,frame=false,scale =0.8,pagecommand={\lhead {A}\rhead{Seite \thepage}},addtotoc={1,subsection,2,{B},Label_002}] {BAC.pdf}

%%Blatt3:
\includepdf[pages=-,angle=180, frame=false,scale =0.75,pagecommand={\lhead {A}\rhead{Seite \thepage}},addtotoc={1,subsection,2,{C},Label_003}]{CAB.pdf}

\end{document}


Insgesamt sind es mittlerweile 110 Seiten ;)

Hierzu stell ich mir nun vor, dass ich eine Komplettversion (Blatt 1,2,3) und mit wenig Veränderung auch eine "abgespeckte" Version (Blatt 1,3) ausgeben kann.

Meine Versuche mit optional.sty und versions.sty schlugen leider fehl, weswegen ich hier um eure Hilfe bitte :D

Danke schonmal vorab und beste Grüße
Michi

edico
17-07-2008, 19:29
Verschiedene Ansätze sind denkbar - imo auch optional ...
Die aufgezeigte Problemlösung läuft auf der Konsole. Mit Batching (Makefile, Script) liesse sich eine weiterführende Vereinfachung erreichen.
Der Container-file wird mit 'pdflatex' kompiliert. Die Syntax hat Heiko Oberdiek mal auf dctt (?) dargestellt. Sie ist hierfür adaptiert und leicht einsehbar.
Nach Compiling-Start wird ein Schalter geöffnet: ob die 'total' oder 'partial' Version durchlaufen werden soll. Wie auch sonst, sind mehrere Compiling-Durchläufe notwendig (nur im 1. Lauf wird der Schalter aufgerufen).
Bevor die andere Version generiert werden kann, muss das Hilfsfile (hier: modus.tex) gelöscht werden - Vorgehensweise wie oben ...

Das Beispielfile habe ich ein wenig angepasst und zumindest obsolete packages entfernt ;-)

\documentclass[paper=a4,pagesize,ngerman]{scrartcl}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage{graphicx,array}
\usepackage{pdfpages}

\def\blatti{%
%%Blatt1:
\includepdf[pages=-,frame=false,scale=0.8,
pagecommand={\lhead {A}\rhead{Seite \thepage}},
addtotoc={1,section,1,{AB},Label_001}]{ABC.pdf}
}

\def\blattii{%
%%Blatt2:
\includepdf[pages=-,frame=false,scale=0.8,
pagecommand={\lhead {A}\rhead{Seite \thepage}},
addtotoc={1,subsection,2,{B},Label_002}]{BAC.pdf}
}

\def\blattiii{%
%%Blatt3:
\includepdf[pages=-,angle=180,frame=false,scale=0.75,
pagecommand={\lhead {A}\rhead{Seite \thepage}},
addtotoc={1,subsection,2,{C},Label_003}]{CAB.pdf}
}

\usepackage{hyperref}



\begin{document}

%%----------------------------------------------------------
%% CAUTION: Vor dem ersten LaTeX-Lauf "modus.tex" loeschen.
%% Beim ersten Lauf wird dann \modus vom Benutzer abgefragt
%% und in die Datei "modus.tex" geschrieben. Bei den folgenden
%% Laeufen wird dann die Information aus "modus.tex" gelesen.
%% Compile : 'pdflatex demo'
%% ---------------------------------------------------------
\makeatletter
\InputIfFileExists{modus.tex}{}{%
\typein[\modus]{Geben Sie die Versionsnummer (0=total, 1=partial) ein:}
\begingroup
% verwende \@unused hier, um ein Write-Register zu sparen
\immediate\openout\@unused=modus.tex
\immediate\write\@unused{\string\def\string\modus{ \modus}}%
\immediate\closeout\@unused
\endgroup
}
\makeatother
% Heiko Oberdiek

%%----------------------------------------------------------
\ifcase\modus
% totel document
\title{AAA\\Total Document} \author{BBB}\date{Juli 2008}\maketitle
\newpage
\tableofcontents
\blatti \blattii \blattiii

\or
% partial document
\title{AAA\\Partial Document} \author{BBB}\date{Juli 2008}\maketitle
\newpage
\tableofcontents
\blatti \blattiii

\fi
%%----------------------------------------------------------

\end{document}

edico

MichL
18-07-2008, 09:49
danke erstmal...gleich mal versuchen. und das bisschen arbeit mit dem "\def\blattiii{%
%%Blatt3:" ist da auch verkraftbar und zweckdienlich :)

danke danke - ich melde mich bei problemen
michi

edit sagt nach reichlicher überlegung:

es ist wohl doch nicht das gelbe vom ei, da ich ja 110 seiten habe, und in der if bedingung auch nochmal alle blätter eingefügt gehören. das ist vor allem bei weiteren eingaben eine akute fehlerquelle,leider.
--------------------------------------------
ich hab mich gestern abend noch etwas damit befasst, und bin auf die "docstrip" funktion gestoßen. hier ist mein kleines skript:



\input docstrip.dtx

\generate{\file{test1.tex}{\from{16072008.tex}{Ana me,Bname>}}}

\endbatchfile


der dazugehörige code der "16072008.tex" file:


%<*Aname>
\documentclass[11pt,a4paper]{article}
\usepackage{ngerman}
\usepackage{a4wide}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{array}
\usepackage{pdfpages}
\usepackage{hyperref}


\begin{document}


\title{ AAAA } \author{BBBB}\date{Mai 2008}\maketitle


%++++++++++++++++++++++++++++++++++++++++
\tableofcontents
%001+++++++++++++++++++++++++++++++++++++



%<*Bname>
1111111111111111
% <%/Bname>%


33333333333333333

%<%/Aname>%


\end{document}

(die packages gehören noch ausgemistet ;) ).

das würde jetzt mal - ich sag mal halb funktionieren. I-wie macht er etwas für mich völlig unlogisches. laut meinem latex buch,sollte es möglich sein, übers skript diverse tags auszublenden. jedoch funktioniert das nur bedingt, da in der Zeile "\generate{\file{test1.tex}{\from{16072008.tex}{Ana me,Bname>}}}" das Aname als Ausgabe des Ganzen zwar akzeptiert wird, es jedoch völlig irrelevant ist, was danach steht. Einzig ein Beistrich UND irgendeine Bezeichnung (in diesem Fall Bname) muss angegeben werden, um zu erreichen, dass Alles mit Ausnahme vom Bname-Tag ausgegeben wird. Wie gesagt es ist völlig irrelevant, ob als 2ter Bezug "Bname" oder "gbnrkejbgerkbg" steht - es werden immer sämtliche Tags (eben mit Ausnahme des Ganzen "Aname") entfernt.

Ist zwar für meine Anwendung zufälligerweise ganz genau das,was ich brauche - jedoch verstehen würde ich es auch gerne, bzw muss ja irgendwo ein Fehler eingebaut sein.

MichL
18-07-2008, 13:23
gut hat sich erledigt - hab die tags falsch gesetzt. ein denkfehler meinerseits :o

danke dir auf alle fälle für die hilfe! kann ich bestimmt an anderer stelle sehr gut brauchen! :)

grüße
michi