我正在寻找一种方法来使用 (AMS)TeX 制作左箭头版本的命令\mapsto
。这是我尝试做的:
\mathchardef\mapstochar="322F
\def\leftmapsto{\leftarrow\mapstochar}
\def\longleftmapsto{\longleftarrow\mapstochar}
它“几乎”可以工作,如果不是我得到的是 3/4 无穷符号而不是需要放置在左箭头底部的预期小竖线(这个竖线的 1/3:|)。所以我需要那个小竖线的代码,因为“322F 给了我一个错误的符号。
答案1
答案2
答案3
从逻辑上讲,由于\mapsto
和\longmapsto
可用,因此它们的反射也可用。
从排版角度来说,这可以通过低级 PDF 代码完成。方便的是,该graphics
包已经完成了所有繁重的工作,将大量代码打包成一个省时易用的命令:\reflectbox{...}
。
因此,不需要特殊字体,因此:
简单的任务可以或多或少直接地完成,但包装函数和随之而来的复杂性很快就会从代码中演变出来。
“巨人的肩膀”,诸如此类。
平均能量损失
\documentclass{article}
\usepackage{graphicx}
\begin{document}
uiop $\mapsto$ \reflectbox{uiop}
uiop \reflectbox{$\mapsto$} \reflectbox{uiop}
\bigskip
qwerty $\longmapsto$ \reflectbox{qwerty}
qwerty \reflectbox{$\longmapsto$} \reflectbox{qwerty}
\end{document}
附录
基于独立于发动机的解决方案在 Plain TeX/XeTeX 中缩放文本(\scalebox)使其变窄,一个简单的版本(pdftex,xetex,luatex)是:
平均能量损失
\input graphicx.tex
uiop $\mapsto$ \reflectbox{uiop}
\par uiop \reflectbox{$\mapsto$} \reflectbox{uiop}
\par\bigskip
qwerty $\longmapsto$ \reflectbox{qwerty}
\par qwerty \reflectbox{$\longmapsto$} \reflectbox{qwerty}
\bye
链接的问题还提供了一个特定于驱动程序的版本(graphics.sty
plus dvipdfmx.def
),手动编码\Gscale@start
和\Gscale@end
(插入 PDF 文字),因此input
不需要。
作为参考,这里是 的 pdftex 普通版本reflect
,使用其\pdf...
原语:
平均能量损失
pdftex
\protected\def\rbox#1{%
\setbox0\hbox{{#1}}%
\setbox2\hbox{%
\pdfsave%
\pdfsetmatrix{-1 0 0 1}\rlap{\copy0}\pdfrestore}%
\hbox to --1\wd0{\kern--1\wd0\box2\hss}%
}
\rbox{abc $\mapsto $ xyz}
Text text text, $abc\mathbin{\rbox{$\mapsto$}} xyz$, text text text.
\bye
Xetex/Luatex:
平均能量损失
xetex
\protected\def\rbox#1{%
\setbox0\hbox{{#1}}%
\setbox2\hbox{%
\special{pdf:literal q}%
\special{pdf:literal -1 0 0 1 0 0 cm}\rlap{\copy0}
\special{pdf:literal Q}}%
\hbox to --1\wd0{\kern--1\wd0\box2\hss}%
}
\rbox{abc $\mapsto $ xyz}
Text text text, $abc\mathbin{\rbox{ $\mapsto$}}xyz$, text text text.
% note the space: >>\rbox{ $<<
\bye