如何使 TikZ 图片自动缩放和自动对齐到周围的文本?

如何使 TikZ 图片自动缩放和自动对齐到周围的文本?

我正在用 TikZ 设计一些图标以用于我的文本。作为这个问题的一个实际示例,让我们以一个简单的箭头为例:

\tikz[->]{\draw[>=stealth] (0,0)--(1,0);}

我怎样才能把这张图片当成我文本中的一个普通“字符”?这样它就会自动缩放到周围的字体大小、颜色、基线跳过等等?例如,如果我把我的 TikZ 放在一个中并\def\myArrow{\tikz{...}}

Lorem Ipsum \myArrow Dolorem \dots

我想让绘制的箭头表现得像普通字符一样。我知道我可以使用命令中的选项scale并进行大量自己的计算,但这似乎太复杂且容易出错。baseline\tikz

什么是最符合 TeX/LaTeX/TikZ 的方式,可以自动将“内联”TikZ 图片对齐并缩放到周围的文本?

答案1

这是您提议的简单箭头的初稿。这会根据字体为 10pt 时的大小缩放箭头大小和线宽。如下所示Rmano 的回答,我曾经使用em来修改宽度。\strut在末尾添加了一个带有 的节点,该节点与 结合使用\raisebox{-.3\baselineskip},允许使用节点的选项定义箭头的垂直位置anchor。颜色已经是自动的。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\makeatletter
\def\myArrow{%
    \raisebox{-.3\baselineskip}{%
        \tikz{%
            \pgfmathsetmacro{\ratio}{\f@size/(10)}%Calculate the current font size ratio (relative to 10pt)
            \pgfmathsetmacro{\scaledarrowlength}{\ratio*3}%Scale the arrow length for the current font (default is 3pt at 10pt font)
            \pgfmathsetmacro{\scaledarrowwidth}{\ratio*2}%Scale the arrow width for the current font (default is 2 pt at 10pt font)     
            \pgfmathsetmacro{\scaledlinewidth}{\ratio*0.5}%Scale the line width for the current font (default is 0.5 pt at 10pt font)
            \draw[-{Stealth[width=\scaledarrowwidth pt,length=\scaledarrowlength pt]},line width=\scaledlinewidth pt] (0,0)--(1em,0) node[anchor=mid,inner sep=0pt]{\strut};%
            }}}
\makeatother
\begin{document}
    {\tiny\color{red}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\scriptsize\color{orange}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\footnotesize\color{yellow}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\small\color{green}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\normalsize\color{blue}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\large\color{violet}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\Large\color{red}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\LARGE\color{orange}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\huge\color{yellow}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
    {\Huge\color{green}{Lorem Ipsum \myArrow Dolorem \ldots}}\par
\end{document}

结果

答案2

您需要调整基线等,但使用exem作为基本测量单位,您可以获得:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,calc}
\def\mypic{\tikz[x=1em,y=1em,baseline=-0.5,->]{\draw[>=stealth] (0,0)--(0.5,0.5) --(1,0);}}
\begin{document}

text text \mypic\ text

{\LARGE text \mypic text

}
\end{document}

在此处输入图片描述

你可能需要使用一些字体尺寸调整基线和跳过,但是好吧---想法就在这里。

顺便说一句,箭头大小似乎没有缩放 --- 特征可能是在绝对坐标中定义的(使用pt)。

相关内容