PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Statt Auslagerungsdatei virtuellen Speicher nutzen



ctansearch
06-05-2012, 02:03
Kennt jemand eine Möglichkeit, Informationen in virtuellem Speicher zu lagern und abzurufen, anstatt diese in Auslagerungsdateien zu schreiben?

Beispiel:
Die Informationen für den \tableofcontents werden in \jobname.toc geschrieben und später abgerufen.

Ein Lösungsansatz wäre, eine \newsavebox{\mybox} zu erstellen und in diese die Informationen hineinzuschreiben, z.B. mit einem Befehl \addtosavebox{XXX}. Diese Box könnte man dann mit \usebox{\mybox} abrufen.

rais
06-05-2012, 08:36
Moin moin,

Kennt jemand eine Möglichkeit, Informationen in virtuellem Speicher zu lagern und abzurufen, anstatt diese in Auslagerungsdateien zu schreiben?

Beispiel:
Die Informationen für den \tableofcontents werden in \jobname.toc geschrieben und später abgerufen.

ich kenne keine andere Möglichkeit, als über solch eine Auslagerungsdatei, Dinge, die erst später im Text definiert sind (beim TOC die Überschriften), weiter vorne im Text abzurufen (ein TOC steht ja meist vor dem ersten Abschnitt/Kapitel).
Du könntest natürlich eine solcher Auslagerungsdateien für eigene Zwecke mit benutzen.


Ein Lösungsansatz wäre, eine \newsavebox{\mybox} zu erstellen und in diese die Informationen hineinzuschreiben, z.B. mit einem Befehl \addtosavebox{XXX}. Diese Box könnte man dann mit \usebox{\mybox} abrufen.
AFAIR müsste so ein \addtosavebox die fragliche Box erstmal auseinandernehmen und neu gestalten. Damit ist diese Ergänzung aber erst nach diesem \addtosavebox auch abrufbar.
Warum gehst Du nicht über die .aux?


\documentclass{article}
\newcommand*\foo{a}
\newcommand*\addtofoo[2][]{%
\ifx\relax#1\relax
\xdef\foo{\foo#2}%
\else
\xdef\foo{#2\foo}%
\fi
}
\AtBeginDocument{%
\providecommand*\foom{noch nicht definiert}%
}
\makeatletter
\AtEndDocument{%
\immediate\write\@mainaux{\string\xdef\string\foom {\foo}}%
}
\makeatother
\begin{document}
a: \foo\ vs. \foom

\addtofoo{b}%
b:\foo\ vs. \foom

\addtofoo[p]{c}%
c:\foo\ vs. \foom
\end{document}

MfG

u_fischer
06-05-2012, 11:28
Kennt jemand eine Möglichkeit, Informationen in virtuellem Speicher zu lagern und abzurufen, anstatt diese in Auslagerungsdateien zu schreiben?

Nun, du kannst Informationen z.B. in Befehlen, \toks-Registern, insert-Registern (siehe floats, Fußnoten), Boxen und \mark-Registern (siehe Kopfzeilen) speichern. Aber wie Rainer schon angemerkt hat, kannst du die Informationen immer nur während der aktuellen Kompilation und nach der Speicherung nutzen.

ctansearch
06-05-2012, 13:41
Register.OK,danke, das ist, was ich suchte.