![对象被 \rotatebox 旋转后的新位置](https://linux22.com/image/376582/%E5%AF%B9%E8%B1%A1%E8%A2%AB%20%5Crotatebox%20%E6%97%8B%E8%BD%AC%E5%90%8E%E7%9A%84%E6%96%B0%E4%BD%8D%E7%BD%AE.png)
来自包的origin=lb
宏中的选项“ ”表示对象将以其左下角为单位旋转。因此,以下代码中的“typeset-1 & typeset-2”\rotatebox
graphicx
\documentclass{article}
\usepackage{fancyhdr,graphicx,tcolorbox}
\begin{document}
\pagestyle{fancy}
\noindent
\parindent=0pt
\makebox[0pt][l]{some text}% typeset-1
\rotatebox[origin=lb]{90}{some text}\\[3em]% typeset-2
\rotatebox{0}{% typeset-3
\begin{tcolorbox}[width=0.7\textwidth,height=6em]
the left side of this box alligns well with the left end of the headrule.
\end{tcolorbox}
}\\
%
\rotatebox[origin=lb]{90}{% typeset-4
\begin{tcolorbox}[width=0.7\textwidth,height=6em]
As the option "origin=lb" is used, the right side of this rotated box should align with the left end of the headrule, but it does not.
\end{tcolorbox}
}
\end{document}
应该是这样的:
但得到这个:
当对象来自时
tcolorbox
(见上述代码中的 typeset-3 & typeset-4),它们有同样的问题。这是 的问题\rotatebox
还是其他的问题?如何获得像第一张图那样的排版效果?
答案1
旋转框的宽度被考虑在内。因此它不会覆盖之前的文本或超出左边距。您必须隐藏旋转框的宽度:
\makebox[0pt][r]{\rotatebox[origin=lb]{90}{some text}}
或内容的高度:
\rotatebox[origin=lb]{90}{\smash{some text}}.
请注意,如果存在像“我的文本”中的降部,这些建议的结果将会有所不同。
例子:
\documentclass{article}
\usepackage{graphicx}
\usepackage{parskip}% <- parskip instead parindent, only for the example
%\usepackage{showframe}% <- to show the pagelayout, only for the example
\begin{document}
\makebox[0pt][l]{some text}% typeset-1
\rotatebox[origin=lb]{90}{some text}\\[3em]% typeset-2
\makebox[0pt][l]{some text}% typeset-1
\makebox[0pt][r]{\rotatebox[origin=lb]{90}{some text}}% typeset-2
\makebox[0pt][l]{some text}% typeset-1
\rotatebox[origin=lb]{90}{\smash{some text}}% typeset-2
\bigskip
\noindent
\makebox[0pt][l]{some text}% typeset-1
\makebox[0pt][r]{\rotatebox[origin=lb]{90}{my text}}% typeset-2
\makebox[0pt][l]{some text}% typeset-1
\rotatebox[origin=lb]{90}{\smash{my text}}% typeset-2
\end{document}
结果: