我想缩放绘制的自定义符号tikz
,使其与tikz-cd
图表中周围的文本大小相同。
例如,在下面的代码中,我希望 左侧的框A_2
与 左侧的框按比例相同A_1
:当前,这两个框的大小相同,尽管A_2
小于A_1
。
\documentclass{standalone}
\usepackage{tikz-cd}
\newcommand{\boxL}{%
\tikz[baseline=0em,xscale=0.02em,yscale=0.02em]
\fill (1,0) -- (0,0) -- (0,1) -- (1,1) -- cycle;\mspace{1mu}}
\begin{document}
\begin{tikzcd}
{\boxL A_1} \rar{\boxL A_2} & A_3
\end{tikzcd}
\end{document}
这里tikz-cd
使用\scriptstyle
标签,这很好,但是标签中的框没有正确缩放。
需要说明的是,如果将方程替换为以下内容,则可以解决这个问题:
{\boxL A_1} \rar{\scriptsize\boxL A_2} & A_3
得到如下图片:
不过,我不想\scriptsize
到处都明确添加。
答案1
代码
\documentclass[convert=false]{standalone}
\usepackage{amstext,tikz-cd}
\newcommand{\BOX}{%
\text{%
\tikz[baseline=0em,xscale=0.02em,yscale=0.02em]
\fill (1,0) -- (0,0) -- (0,1) -- (1,1) -- cycle;}\mkern1mu\relax}
\begin{document}
\begin{tikzcd}
{\BOX A_1} \rar{\BOX A_2} & A_3
\end{tikzcd}
\end{document}
输出
答案2
您可以\mathchoice
根据样式适当地缩放符号:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\newcommand\Mybox{%
\tikz[baseline=0em,xscale=0.02em,yscale=0.02em]
\fill (\unit,0) -- (0,0) -- (0,\unit) -- (\unit,\unit) -- cycle;\mspace{1mu}}
\newcommand\Mbox{%
\mathchoice{\def\unit{1}\Mybox}{\def\unit{1}\Mybox}{\def\unit{0.67}\Mybox}{\def\unit{0.5}\Mybox}
}
\begin{document}
\[ \Mbox_{\Mbox_{\Mbox}} \]
\begin{tikzcd}
{\Mbox A_1} \rar{\Mbox A_2} & A_3
\end{tikzcd}
\end{document}