Alguém poderia explicar o espaçamento nesta tabela?
- Por que algumas das caixas giradas têm 0, 1, 2 ou 3 caracteres separados pela linha de base?
- Por que existem espaços iniciais/finais em algumas das caixas?
Não entendo quais mecanismos controlam essas coisas.
\documentclass{article}
\usepackage{array}
\usepackage{rotating}
\renewcommand{\arraystretch}{0}%
\setlength{\fboxsep}{0pt}%
\newcommand{\testBox}[2]{%
\setlength{\fboxsep}{0pt}%
\fboxrule=.1pt%
\fbox{%
\rotatebox[origin=#1]{#2}%
{#1 #2}%
}%
}
\begin{document}
\noindent
\tt
\begin{tabular}%
{@{}|llll|llll|llll|@{}}%
\hline%
\rlap{\rule{211pt}{.1pt}}%
\testBox{rt}{090}&%
\testBox{rb}{090}&%
\testBox{rt}{270}&%
\testBox{rb}{270}&%
%
\testBox{ct}{090}&%
\testBox{cb}{090}&%
\testBox{ct}{270}&%
\testBox{cb}{270}&%
%
\testBox{lt}{090}&%
\testBox{lb}{090}&%
\testBox{lt}{270}&%
\testBox{lb}{270}\\%
\hline%
\end{tabular}
\end{document}
Responder1
Como comentei, faz sentido para mim. A origem de rotação designada, por exemplo, inferior direito, da caixa [original], permanece na mesma posição vertical antes e depois da rotação. A única peculiaridade é que se uma caixa girada acabar com um espaço entre a linha de base e a caixa (como, por exemplo, no canto superior direito 270), a caixa será estendida até a linha de base, sem realocação do texto.
Para mostrar o que quero dizer, ajustei um pouco seu MWE para sobrepor as caixas não giradas e giradas, onde o ponto de rotação é sobreposto na pré e pós-imagem.
\documentclass{article}
\usepackage{array}
\usepackage{rotating}
\renewcommand{\arraystretch}{0}%
\setlength{\fboxsep}{0pt}%
\newcommand{\testBox}[3][0]{%
\setlength{\fboxsep}{0pt}%
\fboxrule=.1pt%
\setbox0=\hbox{\fbox{#2 #3}}%
\fbox{%
{#2 #3}%
}\kern-\wd0%
\rlap{\makebox[\dimexpr\wd0+#1\ht0][r]{\fbox{%
\rotatebox[origin=#2]{#3}%
{#2 #3}%
}}}%
\kern\wd0%
}
\begin{document}
\noindent
\tt
\leavevmode\rlap{\rule{211pt}{.1pt}}
\testBox[1]{rt}{090}\quad
\testBox{rb}{090}\quad
\testBox{rt}{270}\quad
\testBox[1]{rb}{270}
\renewcommand{\testBox}[3][0]{%
\setlength{\fboxsep}{0pt}%
\fboxrule=.1pt%
\setbox0=\hbox{\fbox{#2 #3}}%
\fbox{%
{#2 #3}%
}\kern-\wd0%
\rlap{\makebox[\dimexpr\wd0+#1\ht0][c]{\fbox{%
\rotatebox[origin=#2]{#3}%
{#2 #3}%
}}}%
\kern\wd0%
}
\leavevmode\rlap{\rule{211pt}{.1pt}}
\testBox[1]{ct}{090}\quad
\testBox[-1]{cb}{090}\quad
\testBox[-1]{ct}{270}\quad
\testBox[1]{cb}{270}
\renewcommand{\testBox}[3][0]{%
\setlength{\fboxsep}{0pt}%
\fboxrule=.1pt%
\setbox0=\hbox{\fbox{#2 #3}}%
\fbox{%
{#2 #3}%
}\kern-\dimexpr\wd0+#1\ht0\relax%
\rlap{\makebox[\wd0][l]{\fbox{%
\rotatebox[origin=#2]{#3}%
{#2 #3}%
}}}%
\kern+\dimexpr\wd0+#1\ht0\relax%%
}
\leavevmode\rlap{\rule{211pt}{.1pt}}
\testBox{lt}{090}\quad
\testBox[1]{lb}{090}\quad
\testBox[1]{lt}{270}\quad
\testBox{lb}{270}
\end{document}
Para esclarecimento, adicionei manualmente (fora do LaTeX) marcas vermelhas na origem da rotação.