为字符的截断/修剪部分着色

为字符的截断/修剪部分着色

平均能量损失

\documentclass{article}
\usepackage{trimclip,graphicx}
\def\normala{a}

\def\trima{\rotatebox[origin=center]{25}{%
\clipbox{2.5pt 0pt 0pt 0pt}{\rotatebox[origin=center]{-25}{a}}}}

\begin{document}
a \trima % \trimcolora
\end{document}

我的目的是使字符的裁剪部分变色。我尝试做的

在此处输入图片描述

你能帮我修复它吗?

答案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}

在此处输入图片描述

相关内容