PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Inhalt einer eigenen Umgebung ausgeben



markusbischof
04-07-2008, 09:20
Hallo zusammen, mein erster Post! :)

Ich habe in meinem LaTeX-Dokument eine neue Umgebung definiert. Ich verwende sie an diversen Stellen. Ich hätte gerne alle Inhalte, die jeweils an den einzelnen Stellen eingegeben habe als Übersicht. Also quasi eine Wiederholung der Umgebungen hintereinander.

Was ich bisher rausgefunden habe ist, dass ich das wohl ähnlich wie bei den Verzeichnissen machen muss, also zuerst den Inhalt in eine Datei rausschreiben, und dann diesen im nächsten Lauf einlesen. Leider funktioniert das bei mir nicht, da ich mich noch zu wenig mit der ganzen Materie auskenne.

Die Umgebung zeigt "Ergebnisse" an mit einem grauen Hintergrund. Die Umgebungsdefinition sieht dann folgendermaßen aus (auch aus dem Netz zusammengesammelt) :


\makeatletter
\definecolor{MyGray}{rgb}{0.9,0.9,0.9}
\newcounter{conclusioncounter}
\newenvironment{conclusion}{\stepcounter{conclusio ncounter}%
\begin{lrbox}{\@tempboxa}%
\begin{minipage}{\columnwidth-6pt}\ding{43}\;\textbf{Ergebnis \theconclusioncounter:\\}}{
\end{minipage}%
\end{lrbox}%
\colorbox{MyGray}{%
\usebox{\@tempboxa}}}
\makeatother

Wie würde es jetzt funktionieren, dass ich am Ende des Dokumentes über einen Befehl oder ein "\input" den Inhalt dieser Umgebungen die vorher verwendet wurden angezeigt bekomme?

Gruß

markusbischof
05-07-2008, 12:06
*push*

Wäre über jede Hilfe dankbar!

rais
08-07-2008, 00:35
Moin moin,


Ich habe in meinem LaTeX-Dokument eine neue Umgebung definiert. Ich verwende sie an diversen Stellen. Ich hätte gerne alle Inhalte, die jeweils an den einzelnen Stellen eingegeben habe als Übersicht. Also quasi eine Wiederholung der Umgebungen hintereinander.

Was ich bisher rausgefunden habe ist, dass ich das wohl ähnlich wie bei den Verzeichnissen machen muss, also zuerst den Inhalt in eine Datei rausschreiben, und dann diesen im nächsten Lauf einlesen. Leider funktioniert das bei mir nicht, da ich mich noch zu wenig mit der ganzen Materie auskenne.

wie hast Du es denn bisher versucht?
Obwohl, einen Haken seh ich schon: Boxen sind in (La)TeX lokal, hier also außerhalb Deiner eigenen `conclusion'-Umgebung nicht anwendbar. Nun könntest Du natürlich dabeigehen und z. B. \newsavebox\myglobal vorher definieren und innerhalb Deiner `conclusion'-Umgebung (südlich von \end{lrbox}) so etwas wie


\global\setbox\myglobal\copy\@tempboxa
(die Grundidee stammt von Heiko Oberdiek, vor ein paar Monden auf dctt gepostet) definieren, damit wird Box \myglobal auch außerhalb Deiner Umgebung zugreifbar -- aber das funzt auch nur für genau eine Box (sprich: bei mehreren solcher `conclusion'-Umgebungen stehst Du erstmal auf dem Schlauch), es sei denn natürlich, Du baust Dir für jede Box eine eigene globale Variante (nicht wirklich ratsam)...

Nun könntest Du natürlich darauf warten, daß Dir jemand aufzeigt, wie man so einen Boxinhalt expandiert, bevor man ihn in, hmm, \jobname.loc schreibt, aber warum nimmst Du eine Umgebung und kein Makro? Auf `Lattenzaun-Nummer' lässt sich imho doch etwas bequemer zugreifen...;-)

MfG

markusbischof
09-07-2008, 13:44
Hallo!

Erstmal vielen Dank für die Antwort. Die Idee, kein Environment zu nehmen hat mich weiter gebracht. Ich hab stattdessen jetzt ein Kommando, und da gehts besser. Die Definition sieht jetzt so aus:


\newcommand{\conclusion}[1]{%
\stepcounter{conclusioncounter}%
\write7{ \string #1}%
\colorbox{MyGray}{%
\begin{minipage}{\textwidth}{\ding{43}\;\textbf{Er gebnis \theconclusioncounter:\\} #1 }\end{minipage}}}

Was dann noch im Dokument zu tun ist:


\openout7=myoutput
\conclusion{Das ist ein Test mit \emph{Kommando} drin.}
\conclusion{Das ist noch ein Test.}
\IfFileExists{myoutput}{\input{myoutput}}{}

Zumindest ist der Inhalt jeweils in der Datei zu finden. Zwar noch nicht schön formatiert, aber das schau ich mir nochmal an!

Vielen Dank für den Hinweis.

Gruß