我正在尝试创建符号,例如问号(基本上是将 ? 和 ! 合并为一个标点符号),它们是两个重叠符号的结果。类似这样的符号可以用两个负空格产生,但远非完美。
我见过这并尝试使用\mkern{}
和\kern{}
,但它们不适用于宽度的文本。
基本上,我需要一个可以像这样操作的命令:? \negspace{?} !
。这将基本上输入一个?,返回一个?的宽度,然后输入一个!。(有点像打字机上的 ← 键。)这可能吗?
谢谢!
答案1
您要找的是重叠宏。要么使用\rlap
(产生r
ight over lap
):
\rlap{?}!
或\llap
(产生一个l
超过的 eft lap
):
?\llap{!}
标点符号?
和的顺序!
其实并不重要,尽管它们的宽度不同(因此在切换时设置可能会略有不同)。LaTeX2e 等效项是\makebox[0pt][l]{?}!
( ?\makebox[0pt][r]{!}
),它设置?
在一个零宽度框中,该框是l
左对齐的,后跟现在覆盖的!
。adjustbox
在大量用户友好的界面宏中提供了类似的功能。
不要使用“后退间距”技术来调整间距,而是使用 来覆盖符号\ooalign
。但是,textcomp
已经提供\textinterrobang
:
\documentclass{article}
\usepackage{textcomp}
\newcommand{\interrobang}{{\ooalign{?\cr\hss!\kern .025em\hss}}}
\begin{document}
I came! I saw? I conquered\textinterrobang{} And now I'm leaving.
I came! I saw? I conquered\interrobang{} And now I'm leaving.
\end{document}