為了說明問題,我創建了一個 mwe,其中在表格中包含單元格,其中包含一些文本的框圍繞其參考點旋轉。
左欄和右欄包含相同的內容。右欄還包含一些矩形,以便您可以看到原始框的參考點以及旋轉後框的測量值。
當查看第二行時,似乎\rotatebox
graphx 套件的命令將旋轉結果包裝到一個盒子中。
當將 - 命令傳遞的盒子放入周圍的盒子時\rotatebox
,我希望旋轉的旋轉原點最終位於盒子未旋轉時最終所處的位置。從下面範例的編譯結果的第三表行可以看出。 (在下面的 mwe 中,「周圍的方塊」是儲存由表格環境建立的表格儲存格的內容的方塊。)
由於我選擇了圍繞框的參考點以逆時針 45 度角進行旋轉的特殊情況,因此需要向左進行一些“手動”移動/字距調整,這可以很容易計算。
但我仍然想知道我是否忽略了一種不太麻煩的方法,這種方法可能在grfguide 中描述,用於使旋轉的旋轉原點最終位於周圍盒子內的同一位置,如果盒子不旋轉,它最終會到達該位置。 (在下面的 mwe 中,「周圍的方塊」是儲存由表格環境建立的表格儲存格的內容的方塊。)
(為了計算事物,可以將旋轉和未旋轉的事物\phantom
包裹到零寬度/高度/深度的盒子中,保存tikzpictures 以存儲一些坐標......,但我想知道是否有一些簡單的方法可以做我在閱讀時忽略的事情grf指南。
\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}