PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einmal kompilieren -> zwei Dokumente



jotwe
07-04-2011, 17:53
Hallo,

ich würde gerne aus einem einzelnen Dokument jeweils eine Übung und einen passenden Lösungsvorschlag mit einem einzigen Kompiliervorgang generieren.

Bei dem Lösungsvorschlag wird an die jeweilige Aufgabe einfach die Lösung angehängt. Das geschieht mit dem Makro "\solution" und der booleschen Variable "suggestedSolution":



\newcommand{\solution}[1]{
\ifthenelse{\boolean{suggestedSolution}}
{\medskip
{\emph {Lösung}:}
#1
\bigskip}
{}
}


Gibt es jetzt eine Möglichkeit mit einem Aufruf von "latex Uebung.tex" eine "Uebung.pdf" und eine "Loesungsvorschlag.pdf" zu erstellen?

strolch
08-04-2011, 15:50
hallo,

es ist nicht was du möchtest, dafuer weiß ich auch keine lösung.

behelfsweise wuerde es mit einem skript gehen, das grundsaetzlich zwei mal pdflatex aufruft (fuer jede ausgabe eben ein mal) wobei aber an die tex-datei "parameter" übergeben werden, die dann die jeweilige ausgabeform festlegen.

Skript:


pdflatex "\def\MyHeaders{\setboolean{suggestedSolution}{true }} \input test.tex"
mv test.pdf testTrue.pdf
pdflatex "\def\MyHeaders{\setboolean{suggestedSolution}{fals e}} \input test.tex"
mv test.pdf testFalse.pdf


tex-file:


\documentclass{article}
\providecommand*\MyHeaders{}
\usepackage[latin1]{inputenc}
\usepackage{ifthen}

\newboolean{suggestedSolution}
%\setboolean{suggestedSolution}{true}
\MyHeaders

\begin{document}
1+1=\ifthenelse{\boolean{suggestedSolution}}{2}{?}
\end{document}


erklaerung:
was ich eigentlich mache ist, dass ich beim aufruf von pdflatex eine zeile code in mein tex-file einfuege und das ist eben die boolsche variable. der eingefuegte code wird ganz oben eingefueg, was es noetig macht, ihn in eine def-umgebung zu packen. im beispile heißt sie MyHeaders. die so definierte "variable" MyHeader kann nun im tex-file frei verwendet werden. in unserem fall uebergeben wir die zuweisung einer variablen und somit sollte unsere header-zeile hinter der definition der variablen stehen.

was du jetzt noch brauchst, ist ein umbenennen der ausgaben, da du dir sonst das jeweils zuerst erstellte dokument ueberschrieben wuerdest. habe ich hier nur eben schnell mittels mv gemacht. pdflatex kennt aber auch den parameter --jobname=<outputfile> <inputfile>. musst du mal ausprobieren.

wenn du noch eine bessere loesung findest waere ich auch dran interessiert.

strolch

jotwe
09-04-2011, 20:51
Hallo strolch,

danke für Deine Antwort. Ein Skript wollte ich eigentlich umgehen. Ich habe da in der Tat etwas gefunden:

http://www.tug.org/pipermail/xetex/2010-January/015449.html

Bin zwar nicht ganz am Ziel, aber auf einem guten Weg :)

jotwe
09-04-2011, 21:12
Ich habe mit dem Packet "optional" da mal was gebastelt, allerdings funktioniert es noch nicht. Meine Uebung.tex sieht folgendermaßen aus:



\documentclass{article}

\usepackage[\jobname]{optional}

\opt{Uebung}{
\immediate\write18{pdflatex --jobname="Loesung" \jobname}
}

\begin{document}
Normaler Text...
\opt{Uebung}{
Uebung...
}
\opt{Loesung}{
Loesung...
}
\end{document}


Die Idee dahinter ist folgende:

Beim Setzen von Uebung.tex sollte wegen \usepackage[\jobname]{optional} die Option "Uebung" aktiv sein.
Dann sollte write18 mit jobname="Loesung" aufgerufen werden.
Dadurch müsste Uebung.tex mit der Option "Loesung" gesetzt werden. Wenn die Lösung gesetzt ist, müsste eigentlich die Übung (nach Beendung von write18) fertig erstellt werden.


Leider scheinen aber die \opt{Uebung}- und \opt{Loesung}-Tags nicht aktiviert zu werden. Ich erhalte immer nur eine einzelne PDF-Datei mit "Normaler Text..."

mechanicus
09-04-2011, 23:01
Hi,

wenn ich dich richtig verstehe, sollte doch das einfache Konstrukt genügen:

\documentclass{article}

\usepackage[Loesung]{optional}

\opt{Loesung}{
\immediate\write18{pdflatex --jobname="Loesung" \jobname}
}

\begin{document}
Normaler Text...

Uebung...

\opt{Loesung}{
Loesung...
}
\end{document}

Gruß
Marco

jotwe
09-04-2011, 23:05
Hallo Marco,

danke für die Antwort, aber in diesem Fall, wird der Lösungstext sowohl in der Lösung also auch in der Übung gesetzt.

rais
10-04-2011, 09:05
Moin moin,



Beim Setzen von Uebung.tex sollte wegen \usepackage[\jobname]{optional} die Option "Uebung" aktiv sein.

da fragst Du besser beim Paketautor nach.



Dann sollte write18 mit jobname="Loesung" aufgerufen werden.
Dadurch müsste Uebung.tex mit der Option "Loesung" gesetzt werden. Wenn die Lösung gesetzt ist, müsste eigentlich die Übung (nach Beendung von write18) fertig erstellt werden.


Mit einem kleinen Umweg funktioniert es bei mir:


\documentclass{article}
\edef\mya{\jobname}
\edef\myb{Loesung}
\ifx\mya\myb
\def\UseOption{Loesung}
\else
\def\UseOption{Uebung}
\fi
\usepackage{optional}
\opt{Uebung}{
\immediate\write18{pdflatex --jobname="Loesung" \jobname}
}
\begin{document}
Normaler Text...
\opt{Uebung}{
Uebung...
}
\opt{Loesung}{
Loesung...
}
\end{document}

MfG

jotwe
10-04-2011, 09:29
Moin Rainer,

danke für Deine Antwort. Bei mir erzeugt er auch zwei PDFs, aber leider steht in beiden "Normaler Text... Uebung..." :( Wenn ich ein \jobname in den Text mit einfüge, dann zeigt er allerdings die erwarteten Werte "Uebung" und "Loesung".

Vielleicht ist ja auch mit meiner TeX-Installation was faul. Arbeite hier auf Mac OS X 10.6.7 mit LiveTeX 2010. Unter was läuft es bei Dir?

rais
10-04-2011, 10:12
Moin moin,


danke für Deine Antwort. Bei mir erzeugt er auch zwei PDFs, aber leider steht in beiden "Normaler Text... Uebung..." :(

sorry, mein Fehler. :o
\mya wird hier nie gleich \myb sein, grml

MfG

jotwe
10-04-2011, 10:32
Hm, meiner Meinung nach müsste Deine Version gehen. Im ersten Durchlauf ist \mya Uebung und \myb Loesung, im zweiten Durchlauf ist dann \mya Loesung und ebenfalls \myb Loesung, oder?

Gibt es vielleicht nach andere packages, die eine ähnliche Funktionalität haben?

rais
10-04-2011, 10:38
Moin moin,
der \ifx sieht das offensichtlich anders, wie am Ergebnis ja auch deutlich wird.
Bevor ich mich zu sehr verwirre;-)


\documentclass{article}
\ifx\loesung\UnDefined
\def\UseOption{Uebung}
\else
\def\UseOption{Loesung}
\fi
\usepackage{optional}
\opt{Uebung}{
\immediate\write18{pdflatex --jobname=Loesung "\string\def\string\loesung{x} \string\input{\jobname.tex}"}
}
\begin{document}

Normaler Text...
\opt{Uebung}{
Uebung...
}
\opt{Loesung}{
Loesung...
}
\end{document}

MfG

jotwe
10-04-2011, 10:57
Ja, das wäre natürlich auch ein Weg :)

Ich bekomme allerdings einen "Runaway argument"-Fehler



Using optional text marked with Loesung.
(./Loesung.aux))
Runaway argument?
{document
! File ended while scanning use of \end.
<inserted text>
\par
<*> \def\loesung{x} \input{Uebung.tex}
?


Ich verstehe nicht, warum er da die Klammer nicht sieht?!

rais
10-04-2011, 11:26
Ich bekomme allerdings einen "Runaway argument"-Fehler



Using optional text marked with Loesung.
(./Loesung.aux))
Runaway argument?
{document
! File ended while scanning use of \end.
<inserted text>
\par
<*> \def\loesung{x} \input{Uebung.tex}
?


ich nicht. Vergleiche mal in Deiner Uebung.log


runsystem(pdflatex --jobname=Loesung "\def\loesung{x} \input{Uebung.tex}")...ex
ecuted.

Jedenfalls sieht die Loesung.log bei mir so aus:


This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010) (format=pdflatex 2011.2.13) 10 APR 2011 12:18
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**\def\loesung{x} \input{Uebung.tex}
(./Uebung.tex (/usr/local/texlive/2010/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2010/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
\c@section=\count80
\c@subsection=\count81
\c@subsubsection=\count82
\c@paragraph=\count83
\c@subparagraph=\count84
\c@figure=\count85
\c@table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/local/texlive/2010/texmf-dist/tex/latex/optional/optional.sty
Package: optional 2005/01/26 ver 2.2b; Optional inclusion/omission
)
Using optional text marked with Loesung.
No file Loesung.aux.
\openout1 = `Loesung.aux'.

LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 11.
LaTeX Font Info: ... okay on input line 11.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 11.
LaTeX Font Info: ... okay on input line 11.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 11.
LaTeX Font Info: ... okay on input line 11.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 11.
LaTeX Font Info: ... okay on input line 11.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 11.
LaTeX Font Info: ... okay on input line 11.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 11.
LaTeX Font Info: ... okay on input line 11.
[1

{/usr/local/texlive/2010/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./Loesung.aux) )
Here is how much of TeX's memory you used:
220 strings out of 494655
2503 string characters out of 3171145
48021 words of memory out of 3000000
3512 multiletter control sequences out of 15000+200000
3640 words of font info for 14 fonts, out of 3000000 for 9000
253 hyphenation exceptions out of 8191
24i,4n,17p,183b,107s stack positions out of 5000i,500n,10000p,200000b,50000s
</usr/local/texlive/2010/texmf-dist/fonts/type1/public/amsfont
s/cm/cmr10.pfb>
Output written on Loesung.pdf (1 page, 13676 bytes).
PDF statistics:
12 PDF objects out of 1000 (max. 8388607)
7 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)

MfG

jotwe
10-04-2011, 11:44
Erstmal Danke für Deine Bemühungen, Rainer :)

Leider wird in Uebung.log und Loesung.log bis zu dem Fehler noch nichts geschrieben. Die Dateien sind bei mir also leer. Die Konsole (Aufruf aus TexShop oder Terminal mit "pdflatex --shell-escape Uebung.tex") gibt allerdings folgendes aus:



This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010)
\write18 enabled.
entering extended mode
(./Uebung.tex
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2009-06-19, ngerman-x-2009-06-19, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian,
icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or
iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji,
lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol
ish, portuguese, romanian, russian, sanskrit, serbian, slovak, slovenian, spani
sh, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded.
(/usr/local/texlive/2010/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2010/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2010/texmf-dist/tex/latex/optional/optional.sty)
Using optional text marked with Uebung.
This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010)
restricted \write18 enabled.
entering extended mode
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2009-06-19, ngerman-x-2009-06-19, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian,
icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or
iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji,
lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol
ish, portuguese, romanian, russian, sanskrit, serbian, slovak, slovenian, spani
sh, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded.
(./Uebung.tex (/usr/local/texlive/2010/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2010/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2010/texmf-dist/tex/latex/optional/optional.sty)
Using optional text marked with Loesung.
(./Loesung.aux))
Runaway argument?
{document
! File ended while scanning use of \end.
<inserted text>
\par
<*> \def\loesung{x} \input{Uebung.tex}

?

rais
10-04-2011, 15:21
Erstmal Danke für Deine Bemühungen, Rainer :)

da ja nich für;-)


Leider wird in Uebung.log und Loesung.log bis zu dem Fehler noch nichts geschrieben. Die Dateien sind bei mir also leer. Die Konsole (Aufruf aus TexShop oder Terminal mit "pdflatex --shell-escape Uebung.tex") gibt allerdings folgendes aus:

dann brech an dieser Stelle



Runaway argument?
{document
! File ended while scanning use of \end.
<inserted text>
\par
<*> \def\loesung{x} \input{Uebung.tex}

?

mit `X' ab, dann sollten beide .log-Dateien geschrieben werden (es sei denn, es kommt zu noch einem Fehler).

MfG

jotwe
10-04-2011, 15:33
Ich sehe schon, ich muss noch eine ganze Menge über LaTeX lernen...

Also insgesamt kommt der "Runaway parameter"-Fehler zweimal. Aber der Aufruf sieht eigentlich gut aus:

runsystem(pdflatex --jobname=Loesung "\def\loesung{x} \input{Uebung.tex}")

Uebung.log:



This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010) (format=pdflatex 2011.4.9) 10 APR 2011 16:23
entering extended mode
\write18 enabled.
file:line:error style messages enabled.
%&-line parsing enabled.
**Uebung.tex
(./Uebung.tex
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2009-06-19, ngerman-x-2009-06-19, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian,
icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or
iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji,
lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol
ish, portuguese, romanian, russian, sanskrit, serbian, slovak, slovenian, spani
sh, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded.
(/usr/local/texlive/2010/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2010/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
\c@section=\count80
\c@subsection=\count81
\c@subsubsection=\count82
\c@paragraph=\count83
\c@subparagraph=\count84
\c@figure=\count85
\c@table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/local/texlive/2010/texmf-dist/tex/latex/optional/optional.sty
Package: optional 2005/01/26 ver 2.2b; Optional inclusion/omission
)
Using optional text marked with Uebung.
runsystem(pdflatex --jobname=Loesung "\def\loesung{x} \input{Uebung.tex}")...ex
ecuted.

(./Uebung.aux)
\openout1 = `Uebung.aux'.

LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
)
Runaway argument?
{document
! File ended while scanning use of \end.
<inserted text>
\par
<*> Uebung.tex

? x

Here is how much of TeX's memory you used:
217 strings out of 493763
2471 string characters out of 3144955
49091 words of memory out of 3000000
3601 multiletter control sequences out of 15000+200000
3640 words of font info for 14 fonts, out of 3000000 for 9000
715 hyphenation exceptions out of 8191
23i,0n,17p,137b,36s stack positions out of 5000i,500n,10000p,200000b,50000s
No pages of output.
PDF statistics:
0 PDF objects out of 1000 (max. 8388607)
0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)


Loesung.log:


This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010) (format=pdflatex 2011.4.9) 10 APR 2011 16:23
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**\def\loesung{x} \input{Uebung.tex}
(./Uebung.tex (/usr/local/texlive/2010/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2010/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
\c@section=\count80
\c@subsection=\count81
\c@subsubsection=\count82
\c@paragraph=\count83
\c@subparagraph=\count84
\c@figure=\count85
\c@table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/local/texlive/2010/texmf-dist/tex/latex/optional/optional.sty
Package: optional 2005/01/26 ver 2.2b; Optional inclusion/omission
)
Using optional text marked with Loesung.
(./Loesung.aux)
\openout1 = `Loesung.aux'.

LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 15.
LaTeX Font Info: ... okay on input line 15.
)
Runaway argument?
{document
! File ended while scanning use of \end.
<inserted text>
\par
<*> \def\loesung{x} \input{Uebung.tex}

? x

Here is how much of TeX's memory you used:
218 strings out of 493763
2482 string characters out of 3144955
49091 words of memory out of 3000000
3601 multiletter control sequences out of 15000+200000
3640 words of font info for 14 fonts, out of 3000000 for 9000
715 hyphenation exceptions out of 8191
24i,0n,17p,161b,36s stack positions out of 5000i,500n,10000p,200000b,50000s
No pages of output.
PDF statistics:
0 PDF objects out of 1000 (max. 8388607)
0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)

rais
10-04-2011, 15:41
Ich sehe schon, ich muss noch eine ganze Menge über LaTeX lernen...

Also insgesamt kommt der "Runaway parameter"-Fehler zweimal. Aber der Aufruf sieht eigentlich gut aus:

runsystem(pdflatex --jobname=Loesung "\def\loesung{x} \input{Uebung.tex}")

öhmm, Du hast nicht zufällig die schließende Klammer beim \end{document} unterschlagen?

MfG

jotwe
10-04-2011, 15:58
Öhm... das ist mir jetzt verdammt peinlich. Die ist wohl beim copy-paste irgendwie untergegangen und ich habe die ganze Zeit den Fehler bei \begin{document} gesucht.

Jedenfalls scheint's jetzt zu funktionieren. Vielen Dank Rainer für Deine geduldige Hilfe! Der Sonntag ist gerettet, hehe.