graphicx,\rotatebox Den Ursprung der Rotation an derselben Stelle innerhalb der umgebenden Box platzieren, an der er landen würde, wenn die Box nicht gedreht wäre

graphicx,\rotatebox Den Ursprung der Rotation an derselben Stelle innerhalb der umgebenden Box platzieren, an der er landen würde, wenn die Box nicht gedreht wäre

Zur Veranschaulichung habe ich ein MWE erstellt, bei dem es innerhalb einer Tabelle Zellen gibt, in denen ein Feld mit einem Text um seinen Referenzpunkt gedreht ist.

Die linke und rechte Spalte enthalten dieselben Werte. Die rechte Spalte enthält zusätzlich einige Rechtecke, sodass Sie die Referenzpunkte der Originalboxen und die Maße der Boxen sehen können, die sich durch die Drehung ergeben.

Beim Betrachten der zweiten Zeile scheint es, als würde der Befehl \rotateboxdes Pakets graphicx das Ergebnis der Rotation in eine Box einbinden.

Wenn ich die Box, die vom -Befehl geliefert wird, in die umgebende Box platziere \rotatebox, möchte ich, dass der gedrehte Ursprung der Rotation an derselben Stelle landet, an der er landen würde, wenn die Box nicht gedreht wäre. Dies ist in der dritten Tabellenzeile des Ergebnisses der Kompilierung des folgenden Beispiels zu sehen. (Mit dem folgenden mwe ist „die umgebende Box“ die Box, die den Inhalt der Tabellenzelle enthält, die von der tabellarischen Umgebung erstellt wurde.)

Da ich den Sonderfall gewählt habe, bei dem die Drehung um den Referenzpunkt der Box in einem Winkel von 45 Grad gegen den Uhrzeigersinn erfolgt, war eine gewisse „manuelle“ Verschiebung/Unterschneidung nach links erforderlich, die sich jedoch leicht berechnen ließ.

Aber ich frage mich immer noch, ob ich eine weniger umständliche Möglichkeit übersehen habe, die in grfguide beschrieben werden könnte, um den gedrehten Ursprung der Rotation an derselben Stelle innerhalb der umgebenden Box zu platzieren, an der er landen würde, wenn die Box nicht gedreht wäre. (Mit dem unten stehenden mwe ist „die umgebende Box“ die Box, die den Inhalt der Tabellenzelle enthält, die von der tabellarischen Umgebung erstellt wurde.)

(Zum Berechnen könnte man Dinge als gedrehte und ungedrehte \phantoms platzieren, verpackt in Boxen mit der Breite/Höhe/Tiefe Null, die Tikzpictures zum Speichern einiger Koordinaten enthalten..., aber ich frage mich, ob es eine einfache Möglichkeit gibt, Dinge zu tun, die ich beim Lesen des Grfguides übersehen habe.)

\documentclass{article}
\usepackage{graphicx, xcolor}

\ExplSyntaxOn\cs_new_eq:NN \fpeval \fp_eval:n\ExplSyntaxOff

\newbox\boxtorotate

\newlength\scratchy
\newcommand\Osepfbox[1]{{%
  \scratchy=\fboxsep
  \colorlet{saved}{.}%
  \fboxsep=-\fboxrule
  \color{lightgray}%
  \fbox{\fboxsep=\scratchy\color{saved}#1}%
}}%

\newcommand*\referencepointbox{%
  \hbox{%
    {%
      \color{lightgray}%
      \kern-\fboxrule \kern-\fboxsep \kern-.2pt
      \vbox{%
        \hbox{%
          \fbox{\vrule height 0.2pt depth 0.2pt width 0.4pt}%
        }%
        \kern-\prevdepth
      }%
      \kern-\fboxrule \kern-\fboxsep \kern-0.2pt
    }%
    \copy\boxtorotate
  }%
}%

\newcommand*\noreferencepointbox{\hbox{\copy\boxtorotate}}

\begin{document}

\setbox\boxtorotate=\hbox{Some text}

\begin{tabular}{|l|l|}
\hline&\\
\rlap{\noreferencepointbox}\rotatebox[x=0pt, y=0pt]{0}{\noreferencepointbox}&
\rlap{\referencepointbox}\Osepfbox{\rotatebox[x=0pt, y=0pt]{0}{\referencepointbox}}%
\\&\\
\hline&\\
\rlap{\noreferencepointbox}\rotatebox[x=0pt, y=0pt]{45}{\noreferencepointbox}&
\rlap{\referencepointbox}\Osepfbox{\rotatebox[x=0pt, y=0pt]{45}{\referencepointbox}}%
\\&\\
\hline&\\
\rlap{\noreferencepointbox}%
\kern-\fpeval{sqrt((\ht\boxtorotate)*(\ht\boxtorotate)*0.5)}pt 
\rotatebox[x=0pt, y=0pt]{45}{\noreferencepointbox}&
\rlap{\referencepointbox}%
\kern-\fpeval{sqrt((\ht\boxtorotate)*(\ht\boxtorotate)*0.5)}pt
\Osepfbox{\rotatebox[x=0pt, y=0pt]{45}{\referencepointbox}}%
\\&\\
\hline
\end{tabular}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen