如何在 Latex 公式中圈出一个字符?

如何在 Latex 公式中圈出一个字符?

我想在 LaTeX 公式中圈出一个字符。例如

$f_1 = ...$ 或 $f_k = ...$,

我想在其中圈出角色1k。我发现了一些问题(问题 1问题2) 关于如何圈出一个字符或整个(小)公式。但是我应该如何只圈出 LaTeX 公式中的一个字符?有没有简单的解决方案,例如

$f_\encircled{1} = ...$

(我的偏好),我应该使用来自\ding库的符号,还是使用 TikZ?

答案1

稍微改进了 ThV 的答案,以保留正确的数学风格。

\documentclass{article}

\usepackage{tikz}

\makeatletter
\newcommand*{\encircled}[1]{\relax\ifmmode\mathpalette\@encircled@math{#1}\else\@encircled{#1}\fi}
\newcommand*{\@encircled@math}[2]{\@encircled{$\m@th#1#2$}}
\newcommand*{\@encircled}[1]{%
  \tikz[baseline,anchor=base]{\node[draw,circle,outer sep=0pt,inner sep=.2ex] {#1};}}
\makeatother

\begin{document}

\encircled{Text} outside math. $\encircled{n=1}$ formula.
\[
f_{\encircled{n}} = \encircled{f_n}
\]

\end{document}

在此处输入图片描述

答案2

我会使用 TikZ 来实现这一点。以下是一些粗略的示例代码,类似于问题 1问题2你提到的:

\documentclass{article}
\usepackage{tikz}

\newif\ifstartedinmathmode
\newcommand\encircled[1]{%
  \relax\ifmmode\startedinmathmodetrue\else\startedinmathmodefalse\fi%
  \tikz[baseline,anchor=base]{%
  \node[draw,circle,outer sep=0pt,inner sep=.2ex]
    {\ifstartedinmathmode$#1$\else#1\fi};}%
}

\begin{document}

\encircled{Text} outside math. \encircled{$n=1$} formula.
Or $\encircled{n}$ like this.
\[ f_{\encircled{n}} = \encircled{f_n} \]

\end{document}

为了方便起见,我添加了代码以在需要时自动切换到数学模式。这是基于问题 3

在此处输入图片描述

相关内容