Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Abbildungen "speichern" in bildlastigen Dokumenten

  1. #1
    Registrierter Benutzer
    Registriert seit
    31.03.2011
    Beiträge
    12

    Abbildungen "speichern" in bildlastigen Dokumenten

    Guten Tag.

    Ich habe folgende Aufgabenstellung: In einem Dokument mit sehr vielen Abbildungen möchte ich alle Abbildungsumgebungen an einer Stelle sammeln, um sie im Hauptdokument an geeigneter Stelle dann jeweils mit einem einzigen (einzeiligen) Befehl aufrufen zu können.

    Es ist einfach, die Abbildungen in Befehle der Form \xfigureA, \xfigureB etc. zu packen.

    Ich möchte sie jedoch alle hintereinander mit demselben Befehl definieren können, wobei die Reihenfolge die Nummer vorgeben soll. Und zwar so, dass ich sie dann im Text mit \xfigure{1}, \xfigure{2} etc. aufrufen kann.

    Meinen Versuch seht Ihr unten. Die Verwendung von \csname etc. zeigt Euch, dass ich das Konzept (trotz www.mrunix.de/forums/showthread.php?t=64815) noch nicht verstanden habe.

    Daher würde ich mich sehr über Eure Hilfe freuen!

    Vielen Dank und einen schönen Tag,
    simon

    Code:
    \documentclass{article}
    
    \newcounter{figurecounter}
    \setcounter{figurecounter}{0}
    
    %% Definition des Befehls \figureN (N=1,2,....),
    %% der Abbildung N beschreibt und setzt
    \stepcounter{figurecounter}
    \expandafter\xdef\csname figure\thefigurecounter \endcsname[1][t!]{
      \begin{figure}[#1]
        Hier binde ich meine Abbildung ein.
      \end{figure}
    }
    
    %% Definition des Befehls \xfigure,
    %% der durch \xfigure{N} den Befehl \figureN aufruft (N=1,2,...)
    %% oder auch als \xfigure[b]{N} mit Positionierungsparameter.
    \newcommand\xfigure[2][t!]{\csname figure#2\endcsname{#1}}
    
    \begin{document}
    Text Text Text\xfigure{1} Text Text\xfigure[b]{1}
    \end{document}

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    \xdef expandiert die Definition bereits vollständig. Damit das geht, darf man in der Definition natürlich nur vollexpandierbaren Code verwenden. Darüber hinaus ist \xdef TeX und nicht LaTeX. Deshalb wird die Anzahl und Art der Argumente ganz anders definiert als bei \newcommand etc. Du könntest jetzt natürlich \xdef einfach durch \newcommand ersetzen. Aber ich bin ehrlich gesagt im Zweifel, ob Dein Ansatz überhaupt eine gute Idee ist. Gerade wenn es wirklich sehr viele Bilder sind, könnte das am Ende ein Speicherproblem werden. Warum packst Du nicht einfach alle Gleitumgebungen einzeln in filecontents-Umgebungen (Paket filecontents verwenden, damit Änderungen in den filecontents-Umgebungen auch in die Dateien geschrieben werden). Dann kannst Du sie später per \input laden.

  3. #3
    Registrierter Benutzer
    Registriert seit
    31.03.2011
    Beiträge
    12
    Guten Tag und vielen Dank für diesen sehr wertvollen Hinweis!

    Ich habe das Problem also wie folgt (und wie von Schweinebacke vorgeschlagen) gelöst:

    Code:
    \documentclass{article}
    \usepackage{filecontents}
    
    \newcounter{figurecounter}
    \setcounter{figurecounter}{0}
    
    \stepcounter{figurecounter}
    \begin{filecontents*}{figure\thefigurecounter.tex}
      \begin{figure}[h!] ABBILDUNG 1 \end{figure}
    \end{filecontents*}
    
    \begin{document}
    Text\input{figure1}
    \end{document}
    Allerdings will es mir nicht gelingen, die Umgebung filecontents* in eine andere Umgebung zu stecken. Ich würde nämlich gerne definieren:

    Code:
    \newenvironment{newfigure}
      {\stepcounter{figurecounter}
       \begin{filecontents*}{figure\thefigurecounter.tex}}
      {\end{filecontents*}}
    Fällt Euch hierzu eine Lösung ein?

    Ein sonniges Wochenende wünscht
    simon

  4. #4
    Registrierter Benutzer
    Registriert seit
    31.03.2011
    Beiträge
    12

    Wie passt die Umgebung "filecontents" in eine andere Umgebung

    Guten Abend.

    Ich wollte noch einmal nachfragen, ob jemand von Euch eine Idee hat, wie ich das geschilderte Problem mit der filecontents*-Umgebung lösen könnte.

    Vielen Dank und Gruß,
    Simon

  5. #5
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von simon Beitrag anzeigen
    Ich wollte noch einmal nachfragen, ob jemand von Euch eine Idee hat, wie ich das geschilderte Problem mit der filecontents*-Umgebung lösen könnte.
    Das Beispiel schreibt die alle figure-Ungebungsinhalte in externe
    Dateien (dateiname.figNo), die Dann über \ReadFig{numemr} eingelsen werden können.

    Code:
    \documentclass{article}
    \usepackage{fancyvrb}
    \newcounter{figurecounter}
    \setcounter{figurecounter}{0}
    
    \let\Figure\figure
    \let\endFigure\endfigure
     
    \newcommand\ReadFig[2][htb]{\begin{Figure}[#1]
    \input{\jobname.fig#2}
    \end{Figure}}
    
    \renewcommand\figure{%
    \VerbatimEnvironment
    \stepcounter{figurecounter}
    \begin{VerbatimOut}{\jobname.fig\thefigurecounter}}
    \def\endfigure{\end{VerbatimOut}}
    
    
    \begin{document}
    Text Text Text
    \begin{figure}
    \centering
     foo bar bz
    \caption{blah}\label{foo} 
    \end{figure}
    
    Text Text
    
    \begin{figure}
    \centering
     foo bar baz
    \caption{blah blub}\label{bar} 
    \end{figure}
    
    Text Text
    \clearpage
    \ReadFig{1}
    \ReadFig[b]{2}
    
    \end{document}
    Herbert

  6. #6
    Registrierter Benutzer
    Registriert seit
    31.03.2011
    Beiträge
    12
    Lieber Herbert.

    Vielen, vielen Dank. Deine Lösung wird mir bei Manuskripten mit zahlreichen Abbildungen sicherlich weiterhelfen.

    Grüße aus Berlin,
    Simon

Stichworte

Lesezeichen

Berechtigungen

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