我正在用 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
您需要调整基线等,但使用ex
或em
作为基本测量单位,您可以获得:
\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
)。