我正在尝试排版一个字母x
(包括大写和小写),其中有一个小圆圈恰好覆盖在字符的(感知的)中间。我目前最好的努力是x\llap{$\circ$}
,但不仅生成的圆圈比我想要的要大一些,而且明显没有完全居中x
。
我正在使用 XeLaTeX,如果它有帮助的话。我曾尝试寻找可以满足我要求的 unicode 组合字符,但我看到的仅有的两个候选字符(U+208D
“COMBINING RING OVERLAY”和U+20DD
“COMBINING ENCLOSING CIRCLE”)都非常大,并且同样无法居中。
理想情况下,我能够有一个简单的命令来产生这个“自定义字符”,因为我需要多次使用它。
编辑:我决定使用stackengine
基于的解决方案,但所有选项看起来都不错。谢谢!
编辑 2:我已经切换到tikz
基于的解决方案,因为它的概括性更好。
答案1
和tikz
\documentclass{article}
\usepackage{tikz}
\newcommand{\circledx}{%
\begin{tikzpicture}
\node[inner sep=0pt,outer sep=0pt] (a) {x};
\draw (a.center) circle (0.15ex);
\end{tikzpicture}
}
\newcommand{\circledX}{%
\begin{tikzpicture}
\node[inner sep=0pt,outer sep=0pt] (a) {X};
\draw (a.center) circle (0.2ex);
\end{tikzpicture}
}
\begin{document}
\circledx and \circledX
\end{document}
答案2
有一个特殊的命令stackengine
包裹:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[svgnames]{xcolor}
\usepackage{amsmath}
\usepackage{stackengine}
\begin{document}
\stackinset{c}{}{c}{}{\color{red}$\scriptstyle\circ$}{\color{ForestGreen}$x$} \quad \stackinset{c}{}{c}{}{\color{red}$\scriptstyle\circ$}{\color{ForestGreen}x}
\stackinset{c}{}{c}{}{\color{red}$\scriptscriptstyle\circ$}{\color{ForestGreen}$x$}\quad \stackinset{c}{}{c}{}{\color{red}$\scriptscriptstyle\circ$}{\color{ForestGreen}X}
\end{document}
答案3
不与tikz
\documentclass{scrartcl}
\usepackage{graphicx}
\makeatletter
\def\cx
{{\ooalign{x\cr
\hidewidth\raisebox{.2ex}{$\m@th\scriptscriptstyle\circ$}\kern.01em \hidewidth\cr}}}
\def\cX
{{\ooalign{X\cr
\hidewidth\raisebox{.4ex}{$\m@th\scriptstyle\circ$}\kern.01em \hidewidth\cr}}}
\makeatother
\begin{document}
\cx\ and \cX
\end{document}
此代码放置了原始的环形重音(在 Computer Modern 中较小,您可能更喜欢)。
\makeatletter
\def\cx
{{\ooalign{x\cr
\hidewidth\raisebox{-.95ex}{\r{}}\hidewidth\cr}}}
\def\cX
{{\ooalign{X\cr
\hidewidth\raisebox{-.62ex}{\r{}}\kern.01em \hidewidth\cr}}}
\makeatother