tikz-Rechteck in a5paper zeichnen Thema ist als GELÖST markiert

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


000Fite
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Sa 26. Okt 2013, 18:06

tikz-Rechteck in a5paper zeichnen

Beitrag von 000Fite »

Hallo zusammen,

ich scheitere an einer eigentlich einfachen Aufgabe. Ich möchte exakt auf den Seitenrand eines DINA5-Blattes eine rote Linie mit tikz zeichnen. Warum? Um zu verstehen, wie das Seitenlayout in Latex funktioniert und um später an von mir definierten Stellen irgendwelche Bilder oder Texte zu positionieren. Bisher ist es mir leider nicht gelungen, aber sollte ja eigentlich einfach sein, oder? Die Abmessungen der DINA5-Seite sind ja 148mmx210mm. Daher sieht mein Code folgendermaßen aus.
Leider geht er direkt mal auf Seite 2 und verschiebt alles kreuz und quer.

Hier wäre mein Minimalcode:

\documentclass[10pt,a5paper]{papertex}
\usepackage{tikz}
\special{papersize=148mm,210mm}

\begin{document}

\begin{tikzpicture}
\draw[red, line width=1mm] (0mm,0mm) -- (0mm,210mm) -- (148mm,210mm) -- (148mm,0mm) -- (0mm,0mm);
\end{tikzpicture}

\thispagestyle{empty}

\end{document}

Grummelgast

Re: tikz-Rechteck in a5paper zeichnen

Beitrag von Grummelgast »

Wow, da sind gleich eine ganze Reihe von Fehlern drin. Zunächst einmal kennt papertex keine Option a5paper. Deshalb wird die Option auch als unused global option(s) gemeldet.

Dann zeichnet TikZ natürlich in der Voreinstellung ausgehend vom Textbereich und nicht ausgehend von den Papiergrenzen. Wie man mit TikZ Material (beispielsweise als overlay) in den Hintergrund der Seite legt, entnimmst du bitte dessen Anleitung. Eine andere Möglichkeit, das zu tun, ist die Verwendung eines Pakets, das darauf spezialisiert ist, beispielsweise scrlayer, textpos oder eso-pic.

Dann verwendest du ein \special, das vermutlich gar nicht ausgewertet wird, weil es nämlich spezifisch für DVI-Treiber ist. Das ist aus der absoluten Mottenkiste. Wenn man das erste Problem (siehe ganz oben) dadurch löst, dass das Paket geometry geladen wird, wird das Papierformat ohnehin automatisch an das Backend gemeldet. Dieses von einer bestimmten Verarbeitung abhängige \special-Gemurkse lässt man also besser ganz sein.

Dann berücksichtigst du bei \draw nicht, dass die Linie eine Dicke hat und deshalb ggf. an der einen oder anderen Seite ganz oder teilweise außerhalb liegt.

Den letzten Fehler habe ich bei

\documentclass[10pt,a5paper]{papertex}
\usepackage{geometry}% Ohne wird das kein A5, weil papertex keine Option a5paper kennt.
\usepackage{tikz}
%\special{papersize=148mm,210mm}% Bringt nix, weil es nur von DVI-Treibern, nicht aber vom PDF-Backend von pdfLaTeX ausgewertet wird.
\usepackage{eso-pic}

\begin{document}

\AddToShipoutPicture{%
  \AtPageLowerLeft{%
    \begin{tikzpicture}
    \draw[red, line width=1mm] (0mm,0mm) -- (0mm,210mm) -- (148mm,210mm) -- (148mm,0mm) -- (0mm,0mm);
    \end{tikzpicture}%
  }
}

\mbox{}
\thispagestyle{empty}

\end{document}

Mal noch ignoriert. Da du eine bestimmte Liniendicke vorgegeben hast, kannst du das leicht selbst anpassen.

Übrigens: Es gibt bereits Pakete, die Randeinstellungen etc. illustrieren können. Da wäre beispielsweise showframe, das ebenfalls eso-pic verwendet, oder layouts.

Statt selbst an einzelnen Low-Level-Einstellungen zu fummeln, würde ich schlicht empfehlen, die oben bereits genannten und verlinkten Pakete zu nutzen.


000Fite
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Sa 26. Okt 2013, 18:06

Re: tikz-Rechteck in a5paper zeichnen

Beitrag von 000Fite »

Ok vielen Dank für die Infos :)
Grüße

Zuletzt geändert von 000Fite am Sa 21. Aug 2021, 11:36, insgesamt 1-mal geändert.

000Fite
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Sa 26. Okt 2013, 18:06

Re: tikz-Rechteck in a5paper zeichnen

Beitrag von 000Fite »

Die Lösung mit Linienbreiten wäre dann so, oder?

\documentclass[10pt,a5paper]{papertex}
\usepackage{geometry}% Ohne wird das kein A5, weil papertex keine Option a5paper kennt.
\usepackage{tikz}
%\special{papersize=148mm,210mm}% Bringt nix, weil es nur von DVI-Treibern, nicht aber vom PDF-Backend von pdfLaTeX ausgewertet wird.
\usepackage{eso-pic}

\begin{document}

\AddToShipoutPicture{%
  \AtPageLowerLeft{%
    \begin{tikzpicture}
    \draw[red, line width=1mm] (0mm,0mm) -- (0mm,209mm) -- (147mm,209mm) -- (147mm,0mm) -- (0mm,0mm);
    \end{tikzpicture}%
  }
}

\mbox{}
\thispagestyle{empty}

\end{document}

Viele Grüße


Grummelgast

Re: tikz-Rechteck in a5paper zeichnen

Beitrag von Grummelgast »

Du kannst dir die Frage mit dem LaTeX-Ausgabe-Knopf selbst beantworten. Und da du die Änderung Dank Online-Editor bereits in meinem Beispiel hättest testen können, wäre das sogar schneller gegangen, als es explizit zu fragen.

Es sei daher explizit darauf hingewiesen, dass das nur eine von vielen Lösungen ist.


esdd
Forum-Meister
Forum-Meister
Beiträge: 2546
Registriert: So 7. Feb 2010, 16:36

Re: tikz-Rechteck in a5paper zeichnen

Beitrag von esdd »

Deine Zeichnung hat eine Bounding Box. Deren linke untere Ecke wird an der aktuellen Position, also der linken unteren Seitenecke eingefügt.
Bedingt durch die Linienbreite ist die Bounding Box deiner Zeichnung größer als die Seite. Der Punkt (0,0) der Zeichnung ist gegenüber der linken unteren Papierecke um jeweils .5\pgflinewidth nach rechts und nach oben verschoben.

Wenn Du diese Verschiebung vermeiden möchtest, kannst Du zunächst die Bounding Box festlegen:

\useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);

Damit wird die Linie dann wirklich auf den Seitenkanten gezeichnet. Soll der sichtbare Teil der Linie 1mm breit sein, muss als Linienbreite 2mm gewählt werden.

\documentclass[10pt,a5paper]{papertex}
\usepackage{geometry}
\usepackage{tikz}
\usepackage{eso-pic}

\begin{document}
\AddToShipoutPicture{%
  \AtPageLowerLeft{%
    \begin{tikzpicture}
      \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
      \draw[red, line width=2mm] (0,0) rectangle (\paperwidth,\paperheight);
    \end{tikzpicture}%
  }
}

\mbox{}
\thispagestyle{empty}
\end{document}
Zuletzt geändert von esdd am So 22. Aug 2021, 16:21, insgesamt 1-mal geändert.

000Fite
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Sa 26. Okt 2013, 18:06

Re: tikz-Rechteck in a5paper zeichnen

Beitrag von 000Fite »

Hallo,

ok meine Lösung sieht dann aktuell so aus:

\documentclass[10pt,a5paper]{papertex}
\usepackage{geometry}
\usepackage{tikz}
\usepackage{eso-pic}

%zu klaerende Optionen
\minraggedcols=3

%Farbendefinitionen
\definecolor{blau}{HTML}{0174DF}

\begin{document}
\pagecolor{white}


\AddToShipoutPicture*{%
  \AtPageLowerLeft{%
    \begin{tikzpicture}
            
% HEADER \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight); \draw[blau, line width=10mm] (0mm,0mm) -- (0mm,210mm) -- (148mm,210mm) -- (148mm,0mm) -- (0mm,0mm); \end{tikzpicture}% } } \mbox{} \thispagestyle{empty} \end{document}

Allerdings habe ich noch eine weitere Frage. Sobald ich ein Bild einfüge und das Bild zu groß wird, verschiebt es mir den blauen Rahmen. Aber eigentlich soll das Bild einfach nur in den Hintergrund, ohne irgendwas zu verschieben:

\documentclass[10pt,a5paper]{papertex}
\usepackage{geometry}
\usepackage{tikz}
\usepackage{eso-pic}

%zu klaerende Optionen
\minraggedcols=3

%Farbendefinitionen
\definecolor{blau}{HTML}{0174DF}

\begin{document}
\pagecolor{white}


\AddToShipoutPicture*{%
  \AtPageLowerLeft{%
    \begin{tikzpicture}
        
% BACKGROUD \node[opacity=0.9] at (74mm,98mm) {\includegraphics[scale=0.94]{img/wave2.jpg}}; % HEADER \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight); \draw[blau, line width=10mm] (0mm,0mm) -- (0mm,210mm) -- (148mm,210mm) -- (148mm,0mm) -- (0mm,0mm); \end{tikzpicture}% } } \mbox{} \thispagestyle{empty} \end{document}

Vorschau für das Bild. Das Bild ist im Anhang.

Grüße

Dateianhänge
wave2.jpg

esdd
Forum-Meister
Forum-Meister
Beiträge: 2546
Registriert: So 7. Feb 2010, 16:36

Re: tikz-Rechteck in a5paper zeichnen

Beitrag von esdd »

Das ist das gleiche Problem wie bei der Linie: Wenn das Bild größer als die Seite wird, dann hast Du mit Deinem Code eine entsprechend große Bounding Box. Deren linke untere Ecke wird an der linken unteren Seitenecke eingefügt. Der Punkt (0,0) der Zeichnung fällt nicht mehr mit der linken unteren Seitenecke zusammen, sondern ist nach rechts und oben verschoben.

Du musst also als erstes in Deiner Zeichnung die Bounding Box manuell vorgeben. Schiebe deshalb die Zeile

\useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);

an den Anfang der Zeichnung, direkt nach \begin{tikzpicture}.


000Fite
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Sa 26. Okt 2013, 18:06

Re: tikz-Rechteck in a5paper zeichnen

Beitrag von 000Fite »

Hallo,

super, vielen vielen Dank!


Antworten