我正在尝试画一个顺时针圆圈箭头里面有一个符号。我当前的解决方案需要手动对齐内容,因此看起来不太好。
\makebox[0pt][l]{\huge$\circlearrowright$}\ $i_3$ }
有没有不需要手动校正的解决方案?如果没有,有没有方法可以对水平对齐进行更精细的控制,并对垂直对齐进行任何控制?
答案1
这是使用 的稍微自动化的解决方案tikz
。我测量文本的高度和宽度,并放置一个弧,其大小基于其中的最大值。我相信这可以改进,但这应该可以让你入门:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{calc}
\makeatletter
\newlength\@SizeOfCirc%
\newcommand{\CricArrowRight}[1]{%
\setlength{\@SizeOfCirc}{\maxof{\widthof{#1}}{\heightof{#1}}}%
\tikz [x=1.0ex,y=1.0ex,line width=.15ex, draw=blue]%
\draw [->,anchor=center]%
node (0,0) {#1}%
(0,1.2\@SizeOfCirc) arc (85:-240:1.2\@SizeOfCirc);%
}%
\makeatother
\begin{document}
\CricArrowRight{$i$}
\CricArrowRight{$i_3$}
\CricArrowRight{$\frac{a}{b}$}
\CricArrowRight{$\dfrac{a}{b}$}
\end{document}
我创建了一个临时长度\@SizeOfCirc
,以尽量减少潜在的名称冲突,并且需要使用\maktatother
。请参阅\makeatletter 和 \makeatother 起什么作用?如果您不熟悉的话,请获取更多信息。
答案2
如果放入的符号不是太大,这可能是令人满意的
\usepackage{relsize}
\newcommand\cca[1]{{%
\ooalign{\raisebox{-.4ex}{\larger[4]$\circlearrowright$}\cr
\hidewidth$\,#1$\hidewidth}}}
然后就\cca{i_{3}}
应该做你需要做的事。
看着Subseteq+circ 作为单个符号“开子集”详细了解\ooalign
。
答案3
以下是手动操作的方法,可以在垂直运动的微调方面提供一些自由:
\documentclass{article}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\begin{document}
\setbox1=\hbox{\huge$\circlearrowright$}%
\setbox2=\hbox{$i_3$}%
\makebox[0pt][c]{\usebox1}% Place \circlearrowright
\makebox[0pt][c]{\raisebox{2.5pt}{$i_3$}}% Overlay label
\hspace{0.5\wd1} Here is some more text.
\end{document}
零宽度\makebox
元素的内容居中[c]
。两个元素分别放置在一个框中(box1
和box2
),以便您可以根据需要使用它们的宽度(\wd1
和\wd2
)或高度(\ht1
和)。\ht2