![graphicx,\rotatebox Tendo a origem da rotação terminando no mesmo lugar dentro da caixa circundante onde terminaria se a caixa não fosse girada](https://rvso.com/image/462137/graphicx%2C%5Crotatebox%20Tendo%20a%20origem%20da%20rota%C3%A7%C3%A3o%20terminando%20no%20mesmo%20lugar%20dentro%20da%20caixa%20circundante%20onde%20terminaria%20se%20a%20caixa%20n%C3%A3o%20fosse%20girada.png)
Para ilustrar as coisas, criei um mwe onde dentro de uma tabela você tem células onde uma caixa contendo algum texto é girada em torno de seu ponto de referência.
As colunas esquerda e direita contêm o mesmo. A coluna da direita contém adicionalmente alguns retângulos para que você possa ver os pontos de referência das caixas originais e as medidas das caixas resultantes da rotação.
Ao olhar para a segunda linha, parece que o comando \rotatebox
do pacote graphicx envolve o resultado da rotação em uma caixa.
Ao colocar na caixa circundante a caixa que é entregue pelo \rotatebox
comando -, gostaria que a origem da rotação girada terminasse no mesmo lugar onde terminaria se a caixa não fosse girada. Como pode ser visto na terceira linha da tabela do resultado da compilação do exemplo abaixo. (Com o mwe abaixo, "a caixa circundante" é a caixa que contém o conteúdo da célula da tabela criada pelo ambiente tabular.)
Como escolhi o caso especial onde a rotação é feita em torno do ponto de referência da caixa em um ângulo de 45 graus no sentido anti-horário, foi necessário algum deslocamento/kerning "manual" para a esquerda que poderia ser facilmente calculado.
Mas ainda me pergunto se esqueci uma maneira menos complicada que pode ser descrita em grfguide para fazer com que a origem da rotação girada termine no mesmo lugar dentro da caixa circundante onde terminaria se a caixa não fosse girada. (Com o mwe abaixo, "a caixa circundante" é a caixa que contém o conteúdo da célula da tabela criada pelo ambiente tabular.)
(Para calcular coisas, pode-se colocar coisas giradas e não giradas \phantom
embrulhadas em caixas de largura/altura/profundidade zero contendo imagens tikz para armazenar algumas coordenadas..., mas me pergunto se existe alguma maneira fácil de fazer coisas que esqueci ao ler guia 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}