Интервал в rotatebox в табличной среде

Интервал в rotatebox в табличной среде

Может ли кто-нибудь объяснить интервалы в этой таблице?

  • Почему некоторые повернутые поля содержат 0, 1, 2 или 3 символа, разделенных базовой линией?
  • Почему в некоторых полях есть начальные/конечные пробелы?

Я не понимаю, какие механизмы управляют этими вещами.

\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}

rotateboxes-in-tabular

решение1

Как я уже прокомментировал, для меня это имеет смысл. Назначенное начало вращения, например, справа внизу, [исходного] блока, остается в том же вертикальном положении до и после вращения. Единственная странность в том, что если повернутый блок в итоге окажется с зазором между базовой линией и блоком (например, справа вверху 270), блок будет расширен до базовой линии без перемещения текста.

Чтобы показать, что я имею в виду, я немного скорректировал ваш MWE, чтобы наложить друг на друга не повернутые и повернутые блоки, где точка вращения перекрывается как на предварительном, так и на последующем изображении.

\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}

введите описание изображения здесь

Для ясности я вручную (вне LaTeX) добавил красные метки в начале вращения.

введите описание изображения здесь

Связанный контент