为什么反向的 R 会被西里尔字母 Ya 取代?

为什么反向的 R 会被西里尔字母 Ya 取代?

我正在考虑使用向后的 R 来表示反射(镜像)操作。虽然我期望 \reflectbox 能够反映字符的几何形状,但不知何故,该字符被西里尔字母 Ya 取代。 \ensuremath{} 解决了这个问题,尽管原因有点神秘。更神秘的是,当我认为 relsize 恢复到数学模式时,什么机制会替换该字符。

\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{relsize}

\begin{document}
\Huge

$R$ 
$\reflectbox{\ensuremath{R}}$ 
\\\\\\
$\reflectbox{R}$
$\reflectbox{\protect{R}}$
$\protect{\reflectbox{R}}$

\end{document}

R 与 Ya

有人能解释一下是什么机制导致倒写的 R 转换为 Ya 吗?

如果您能具体说明为什么使用向后 R_p 来表示平面反射是一个糟糕的想法,则可以获得加分。

谢谢!

答案1

\reflectbox将其内容放在\hbox用于操作的文件中,因此其内容位于文本模式;你得到的不是西里尔字母 Ya,而是一个普通的反向 R

\documentclass{article}
\usepackage{graphicx}
\begin{document}
R$\reflectbox{R}$
\end{document}

在此处输入图片描述

如果您想要数学模式下的参数,那么您应该使用类似的方法\reflectbox{$...$},即使在数学模式下也是如此(这就是为什么您的版本\ensuremath有效)。

这是数学版本,\reflectbox其根据数学样式进行缩放并保留间距

\documentclass{article}

\usepackage{graphicx}
\usepackage{amsmath}

\makeatletter
\newcommand*{\mathreflect}[1]{\binrel@{#1}\binrel@@{\mathpalette\math@reflect{#1}}}
\newcommand*{\math@reflect}[2]{\reflectbox{\m@th$#1#2$}}
\makeatother

\begin{document}

$R\mathreflect{R}$
$\scriptstyle P\mathreflect{P}$
$\scriptscriptstyle f\mathreflect{f}$

\end{document}

在此处输入图片描述

正如 David 在评论中指出的那样,\protect这里没有任何用处。在像这里这样的排版环境中,您很幸运,因为它会扩展为\relax并且不执行任何操作;在其他环境中,它可能会出错\string\noexpand可能会出错。

相关内容