Anchlussfrage zu https://texwelt.de/wissen/fragen/15733/wie-realisiere-ich-am-besten-dass-unterdokumente-kompilierbar-und-einfugbar-in-ein-hauptdokument-sind


alt text

Wenn ich ein Unterdokument

Öffne in Overleaf
% sub.tex
\documentclass[tikz]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture} 
\draw[->] (0,1cm)--++(4,-5);
\end{tikzpicture}
\end{document}

habe, das in ein Hauptdokument eingebunden werden soll.

Wie kann ich dann im Hauptdokument darauf einwirken. Z.B. mit der Ergänzung \tikzset{red, line width=15pt}

Öffne in Overleaf
% main.tex
\documentclass{article}
\usepackage{standalone}
%\usepackage{tikz}
\begin{document}

\begin{figure}[h]
%\tikzset{line width=5pt}
\includestandalone[mode=buildnew,
]{sub}\caption{Normal}
\end{figure}

\begin{figure}[h]
%\tikzset{line width=5pt}
\includestandalone[mode=buildnew,
%
%    ErgänzeHier={\tikzset{red, line width=15pt}}
%
]{sub}\caption{Erg{\"a}nzt}
%\includestandalone[mode=image]{sub}
\end{figure}

\end{document}

Das geht doch bestimmt auch irgendwie.

gefragt 23 Sep '18, 20:09

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 24 Sep '18, 03:07


Die m.E. einfachste Weise ist, einen Style zu definieren und je nach Bedarf anzupassen. Beachte auch, dass buildnew das File nicht neu kompiliert, dazu musst Du tex wählen. Dazu musst Du allerdings im Hauptfile tikz laden.

Öffne in Overleaf
% main.tex
\documentclass{article}
\usepackage{standalone}
\usepackage{tikz}
\begin{document}

\begin{figure}[h]
\tikzset{my style/.style={line width=15pt}}
\includestandalone[mode=tex,
]{sub}\caption{Normal}
\end{figure}

\begin{figure}[h]
%\tikzset{line width=5pt}
\tikzset{my style/.style={red, line width=15pt}}

\includestandalone[mode=tex,
%
%    ErgänzeHier={\tikzset{red, line width=15pt}}
%
]{sub}\caption{Erg{\"a}nzt}
%\includestandalone[mode=image]{sub}
\end{figure}

\end{document}

Im subfile verwenden wir dann einfach den Style

Öffne in Overleaf
%sub.tex
\documentclass[tikz]{standalone}
\begin{document}
\ifstandalone
\tikzset{my style/.style={line width=3pt}}
\fi
\begin{tikzpicture} 
\draw[->,my style] (0,1cm)--++(4,-5);
\end{tikzpicture}
\end{document}

alt text

Beachte, dass hier \ifstandalone dafür sorgt, das, wenn sub.tex für sich alleine kompiliert wird, my style gesetzt wird.

Eine andere Möglichkeit besteht evtl. darin, mit \tikzset{every picture/.append style={...}} im Hauptfile zu arbeiten. Allerdings erfordert das ebenfalls, dass tikz im Hauptfile geladen ist, bringt also keine echten Vorteile.

Permanenter link

beantwortet 24 Sep '18, 01:33

Community's gravatar image

Community
21
Akzeptiert-Rate: 56%

bearbeitet 24 Sep '18, 02:05

Gel%C3%B6scht's gravatar image

Gelöscht
(ausgesetzt)

Aha, sehr gut. "Im Prinzip brauchst Du nicht unbedingt TikZ laden, sondern Du könntest auch eine Variable entsprechend setzen." Ja das würde mich interessieren: im Grunde braucht man tikz.sty ja nur im Nebendokument. Kann ich das im Hauptdokument vermeiden?

(24 Sep '18, 01:44) cis

@cis Ich muss meinen Kommentar zurücknehmen, zumindest bekomme ich es nicht hin. Anscheinend unterscheiden sich die Weisen, wie man standalone Dokumente einbinden kann, immens, oder ich mache was falsch. Allerdings: Wenn Du irgendwelche Parameter ändern willst, musst Du auf jeden Fall tikz laden, warum dann nicht gleich im Hauptdokument? Beachte auch, dass ich hier standalone missbrauche: sub.tex ist nicht für sich alleine kompilierbar (was aber behebbar ist), weil ich ja den Style ausserhalb setze.

(24 Sep '18, 01:55) Community

Ok, dann denke ich: die sinnvollste Lösung ist ein 3. Dokument header.tex anzulegen, in dem der benötigte Dokumentkopf für Hauptdokument und alle Unterdokumente lagern. Irgendwie so müsste man es hinkriegen.

(24 Sep '18, 02:00) cis

@cis Ich habe es jetzt mit \ifstandalone hingekriegt, glaub ich zumindest.

(24 Sep '18, 02:05) Community

Ja, klappt doch einwandfrei. Ich habe das eben selbst über einen header.tex gelöst (da kann man ja auch [Default-]Styles sammeln). Weiß ich nicht, was da jetzt besser oder schlechter ist.

(24 Sep '18, 02:25) cis

PS: Ah ne, klappt bei Dir m.E. nicht ganz. Weil tikz.sty in beiden Dokumenten geladen werden muss (wobei eben einmal '\documentclass[tikz]') diesen Aufruf übernimmt. Naja, egal. Mit einem Header gehts.

(24 Sep '18, 02:31) cis
Ergebnis 5 von 6 show 1 more comments

Ergänzung zur Antwort von @Murmeltier

· Wenn die selbe TikZ-Graphik aus einem Unterdokument sub.tex mit abweichenden Settings, mehrmals in das selbe Hauptdokument main.tex eingefügt werden soll, muss -wie mich @Murmeltier aufklärte- mit Styles gearbeitet werden.

Es ist dabei m.E. sinnvoll mit einem sogenannten Header header.tex zu arbeiten.

· Zudem muss includestandalone[mode=tex]{sub} gewählt werden.

Ein einfaches Beispiel könnte also so aussehen:

alt text

Öffne in Overleaf
% header.tex

% Pakete
\usepackage{standalone}
\usepackage{tikz}

% (Default-)Styles:
\tikzset{mystyle/.style={->, line width=15pt}} % Default

Öffne in Overleaf
% sub.tex
\documentclass[tikz]{standalone}
\input{header.tex}

\begin{document}
\begin{tikzpicture} 
\draw[mystyle] (0,1cm)--++(4,-5); % erhält nur Default-Style
\end{tikzpicture}
\end{document}

Öffne in Overleaf
% main.tex
\documentclass{article}
\input{header.tex}

\begin{document}
\begin{figure}[h]
\includestandalone[mode=tex]{sub}\caption{Normal}% erhält Default-Style
\end{figure}

\begin{figure}[h]
\tikzset{mystyle/.style={line width=11mm, red, <->}}
\includestandalone[mode=tex]{sub}\caption{Erg{\"a}nzt}% erhält neuen Style
\end{figure}

\end{document}
Permanenter link

beantwortet 24 Sep '18, 03:04

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

1

Ich verstehe, ehrlich gesagt nicht ganz, was hier der substantielle Unterschied zur von Murmeltier überarbeiteten Antwort ist. Dass mode=tex zu wählen ist und (deshalb) auch im Hauptdokument TiKz geladen werden muss, steht dort ebenfalls bereits am Anfang der Antwort. Vielleicht habe ich aber auch nur ein Problem mit der Formatierung der Antwort. Das Paket standalone braucht man übrigens in der sub-Datei nicht. Das wird bereits von Klasse standalone abgedeckt.

(13 Feb '19, 12:11) gast3
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×4

gestellte Frage: 23 Sep '18, 20:09

Frage wurde gesehen: 8,368 Mal

zuletzt geändert: 13 Feb '19, 12:12