![Genaue Tikz-Koordinate beim Geometrie-Layout](https://rvso.com/image/328448/Genaue%20Tikz-Koordinate%20beim%20Geometrie-Layout.png)
Ich platziere mehrere Bilder auf einer Seite mit Tikz
. Ich verwende geometry layout
. Ich möchte die genauen Koordinaten der linken oberen Ecke der layout
Seite (nicht der eigentlichen Seite) herausfinden. Ich habe ein Koordinatenskript gefunden, bin mir aber nicht sicher, ob es notwendig ist. Vorschläge sind willkommen. Hinweis: Ziel ist es, das endgültige Tikz
Bild (bestehend aus mehreren Bildern und Beschriftungen) auf der layout
Seite zu zentrieren.
\documentclass[12pt]{extbook}
% ############################## geometry
\usepackage%[showframe]
{geometry}
\geometry
{ hmarginratio = 1:1
, vmarginratio = 1:1
, bindingoffset = 0cm
, onecolumn
, a4paper
, layoutwidth = 50 mm
, layoutheight = 180 mm
, layouthoffset=\dimexpr(\paperwidth-\csname Gm@layoutwidth\endcsname)/2\relax
, layoutvoffset=\dimexpr(\paperheight-\csname Gm@layoutheight\endcsname)/2\relax
, showcrop
}
\usepackage{fancyhdr}
\usepackage{mwe}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\makeatletter
\def\parsecomma#1,#2\endparsecomma{\def\page@x{#1}\def\page@y{#2}}
\tikzdeclarecoordinatesystem{page}{
\parsecomma#1\endparsecomma
\pgfpointanchor{current page}{north east}
% Save the upper right corner
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
% save the lower left corner
\pgfpointanchor{current page}{south west}
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
% Transform to the correct placement
\pgfmathparse{(\pgf@xc-\pgf@xb)/2.*\page@x+(\pgf@xc+\pgf@xb)/2.}
\expandafter\pgf@x\expandafter=\pgfmathresult pt
\pgfmathparse{(\pgf@yc-\pgf@yb)/2.*\page@y+(\pgf@yc+\pgf@yb)/2.}
\expandafter\pgf@y\expandafter=\pgfmathresult pt
}
\makeatother
% ############################### Document
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}[remember picture, overlay]
\node[inner sep=0pt] (A) at (page cs:0,0.5)
{\includegraphics[width=5cm]{example-image}};
\draw[black, thick] ($(A.north west)$) rectangle ($(A.south east)$);
\node[inner sep=0pt] (B) at ([yshift=-71pt]A.south)
{\includegraphics[width=5cm]{example-image}};
\draw[black,thick] ($(B.north west)$) rectangle ($(B.south east)$);
\end{tikzpicture}
\end{document}
Antwort1
Hier ist eine weitere Möglichkeit, die Mitte des Layoutbereichs zu lokalisieren. (Ob es einfacher ist oder nicht...)
\documentclass[12pt]{extbook}
% ############################## geometry
\usepackage%[showframe]
{geometry}
\makeatletter% rename layout variables
\def\layoutwidth{\Gm@layoutwidth}
\def\layoutheight{\Gm@layoutheight}
\def\layouthoffset{\Gm@layouthoffset}
\def\layoutvoffset{\Gm@layoutvoffset}
\makeatother
\geometry
{ hmarginratio = 1:1
, vmarginratio = 1:1
, bindingoffset = 0cm
, onecolumn
, a4paper
, layoutwidth = 50 mm
, layoutheight = 180 mm
, layouthoffset=\dimexpr(\paperwidth-\layoutwidth)/2\relax
, layoutvoffset=\dimexpr(\paperheight-\layoutheight)/2\relax
, showcrop
}
\usepackage{fancyhdr}
\usepackage{mwe}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\newsavebox{\tempbox}
% ############################### Document
\begin{document}
\thispagestyle{empty}
\savebox{\tempbox}{%
\begin{tikzpicture}
\node[inner sep=0pt] (A) at (0,0.5)
{\includegraphics[width=5cm]{example-image}};
\draw[black, thick] ($(A.north west)$) rectangle ($(A.south east)$);
\node[inner sep=0pt] (B) at ([yshift=-71pt]A.south)
{\includegraphics[width=5cm]{example-image}};
\draw[black,thick] ($(B.north west)$) rectangle ($(B.south east)$);
\end{tikzpicture}}
\begin{tikzpicture}[remember picture, overlay]
\path (current page.north west) ++(\layouthoffset,-\layoutvoffset)
++(0.5\layoutwidth,-0.5\layoutheight) coordinate(Center);
\node[inner sep=0pt] at (Center) {\usebox{\tempbox}};
\end{tikzpicture}
\end{document}