![自定义符号中使用 kern 的垂直间距](https://linux22.com/image/351080/%E8%87%AA%E5%AE%9A%E4%B9%89%E7%AC%A6%E5%8F%B7%E4%B8%AD%E4%BD%BF%E7%94%A8%20kern%20%E7%9A%84%E5%9E%82%E7%9B%B4%E9%97%B4%E8%B7%9D.png)
我使用宏创建了一个新符号:
\documentclass{article}
\usepackage{amssymb}
\newcommand{\qc}{$\square$\kern-0.58em{s}}
\begin{document}
\qc
\end{document}
但是我想让字母“s”垂直居中,我该怎么做呢?
答案1
如果空心正方形的基线应该位于印刷基线上,则以下代码可能会引起人们的兴趣。(通过使用\ooalign
,不必在“s”字形后插入字距。)d
和b
字符仅用于指示复合符号的整体大小。
\documentclass{article}
\usepackage{amssymb} % for "\square" macro
\newcommand{\qc}{%
\ooalign{$\square$\cr\kern0.21em\raise0.28ex\hbox{s}}}
\begin{document}
\obeylines % just for this example
\footnotesize d\qc b
\small d\qc b
\normalsize d\qc b
\large d\qc b
\Large d\qc b
\end{document}
答案2
我猜你想要一个数学符号。如果不是,调整宏会很容易。
\documentclass{article}
\usepackage{amssymb}
\makeatletter
\DeclareRobustCommand\qc{%
\mathrel{% <-- or \mathbin, or ...
\vphantom{\square}%
\mathpalette\aw@qc\relax
}%
}
\newcommand{\aw@qc}[2]{%
\sbox\z@{$#1\square$}%
\sbox\tw@{$#1\mathrm{s}$}%
\dimen@=.5\dimexpr\ht\z@-\ht\tw@\relax
\ooalign{%
$\m@th#1\square$\cr
\hidewidth\raise\dimen@\box\tw@\hidewidth\cr
}%
}
\makeatother
\begin{document}
\footnotesize $d\qc b$
\small $d\qc b$
\normalsize $d\qc b_{\qc}$
\large $d\qc b$
\Large $d\qc b$
\end{document}
对于每一种数学样式,提升的量都计算为正方形高度的一半减去“s”的高度。这样\ooalign
我们就得到了叠加。
如果您想要替换 中的 QED 标记amsthm
,这里有代码。该twocolumn
选项只是为了制作较小的图片。
\documentclass[twocolumn]{article}
\usepackage{amssymb,amsthm}
\makeatletter
\newcommand{\qc}{%
\begingroup
\vphantom{\openbox}%
\sbox\z@{\openbox}%
\sbox\tw@{$\mathrm{s}$}%
\dimen@=.5\dimexpr\ht\z@-\ht\tw@\relax
\ooalign{%
\box\z@\cr
\hidewidth\raise\dimen@\box\tw@\hidewidth\cr
}%
\endgroup
}
\makeatother
\begin{document}
\begin{proof}\renewcommand{\qedsymbol}{\qc}
Some proof with the modified symbol at the end of the line.
\end{proof}
\begin{proof}
Some proof with the standard symbol at the end of the line.
\end{proof}
\end{document}