我定义了一个带圆圈的命令,它只是圈出给定的参数。这是我的定义方式:
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[anchor=text, shape=circle,draw, inner sep=0pt, minimum size=2.2em] (char) {#1\strut};}}
它几乎总是按照我想要的方式工作。例如,此代码
\circled{z=2}\implies1\cdot y-2(2)=2\implies \circled{y=6}\implies x-3(6)+6(2)=-1\implies \circled{x=5}
给我这个:
但是,每当我尝试用下标圈出某个东西时,一切都会变得混乱。例如,以下代码
-35x_3=-35\implies\circled{x_3=1}\implies-10x_2-15=5\implies\circled{x_2=-2}
给我这个:
如您所见,它还会弄乱下一个项目符号。有什么办法可以解决这个问题吗?
答案1
欢迎来到 TeX.SE!
- 请始终提供 MWE(最小工作示例),这是一个完整的小文档(如您在下面的示例中所见),我们可以按原样编译它并重现您的问题。
- 问题的根源在于
\circled
命令的内容不在数学节点中。您可以通过两种方式来确保这一点:- 重新定义
\newcommand
如下:
并按原样使用您的代码片段\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[anchor=text, shape=circle, draw, inner sep=0pt, minimum size=2.2em] (char) {$#1\strut$};}}
- 保留命令的定义
\circled
,并将其插入测试代码片段中$
的命令内容周围。\circled
- 重新定义
第一个例子:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[anchor=text, shape=circle, draw, inner sep=0pt, minimum size=2.2em] (char) {$#1\strut$};}}
\begin{document}
$-35x_3=-35\implies\circled{x_3=1}\implies-10x_2-15=5\implies\circled{x_2=-2}$
\end{document}
第二个例子:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[anchor=text, shape=circle, draw, inner sep=0pt, minimum size=2.2em] (char) {#1\strut};}}
\begin{document}
$-35x_3=-35\implies\circled{$x_3=1$}\implies-10x_2-15=5\implies\circled{$x_2=-2$}$
\end{document}
两种情况下的结果都是一样的: