文本模式下的自定义“字母”

文本模式下的自定义“字母”

我正在尝试排版一个字母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

相关内容