答案1
旋转文本然后再旋转回去的问题在于,旋转文本周围的框比原始框大。因此,当您旋转回去时,新文本会移动。由于框的大小也会改变,因此这更加复杂,因此必须使用命令(也来自包)\clipbox
将剪切的部分替换为空格。\marginbox*
trimclip
在这个解决方案中,红色字符被旋转(顺时针)、剪切(从右侧),然后旋转回来。这个过程发生在一个\rlap
命令中,因此后面的黑色字符将与红色字符重叠。然后,黑色字符被旋转、剪切(从左侧)、替换为空格,然后旋转回来。这一切都发生在一个\makebox
命令中,该命令的宽度与原始字符的宽度相同。
我保留了 OP 的 25 度角,但将剪辑大小更改为ex
单位,以便它会调整到文本的大小。您可以.55ex
根据自己的喜好调整(在三个地方)。
以下是代码:
\documentclass{article}
\usepackage{trimclip,graphicx}
\usepackage{color}% needed for \textcolor
\usepackage{calc}% needed for \widthof
\newcommand{\redtrim}[1]{\makebox[\widthof{#1}]{\rlap{%
\rotatebox{25}{\clipbox*{0pt {-\depth} {.55ex} {\height}}%
{\rotatebox{-25}{\textcolor{red}{#1}}}}}%
\rotatebox{25}{\marginbox*{.55ex 0pt 0pt 0pt}{\clipbox{.55ex 0pt 0pt 0pt}%
{\rotatebox{-25}{{#1}}}}%
}}}
\begin{document}
{\scriptsize a\redtrim{a}\redtrim{b}\redtrim{c}\redtrim{d}e}
a\redtrim{a}\redtrim{b}\redtrim{c}\redtrim{d}e
{\Large a\redtrim{a}\redtrim{b}\redtrim{c}\redtrim{d}e}
\end{document}
调整第一个.55ex
( 之后的{-\depth}
)可以让红色和黑色之间出现间隙,或者稍微重叠。以下三个字符分别使用.54ex
、.55ex
和生成.56ex
。
答案2
\documentclass{standalone}
\usepackage{trimclip,graphicx}
\usepackage{xcolor}
\def\normala{a}
\def\trima{%
\raisebox{0.02em}{\textcolor{red}{a}}\hskip-0.435em%
\rotatebox[origin=center]{25}{%
\clipbox{2.5pt 0pt 0pt 0pt}{\rotatebox[origin=center]{-25}{a}}}}
\begin{document}
a \trima % \trimcolora
\end{document}