Genaue Tikz-Koordinate beim Geometrie-Layout

Genaue Tikz-Koordinate beim Geometrie-Layout

Ich platziere mehrere Bilder auf einer Seite mit Tikz. Ich verwende geometry layout. Ich möchte die genauen Koordinaten der linken oberen Ecke der layoutSeite (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 TikzBild (bestehend aus mehreren Bildern und Beschriftungen) auf der layoutSeite 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}

verwandte Informationen