我想用 tikz 绘制以下内容:
那是,
abc,
然后def
是绿色并且被红色矩形包围,然后是,
。
我现在有三个不同的节点。但它们彼此之间没有对齐,而且它们之间的距离是我任意选择的,这不系统;如果我更改字体和字体大小,则可能需要修改距离。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node at (0,0) (A) {abc,};
\node[draw,color=red,right = 1ex of A] (B) {\textcolor{blue}{def}};
\node[right = 1ex of B] (C) {,};
\end{tikzpicture}
\end{document}
答案1
答案2
此版本使用保存箱。
\documentclass{standalone}% so I don't have to crop it
\usepackage{tikz}
\begin{document}
\bgroup% use local registers
\sbox0{\begin{tikzpicture}[baseline=(B.base)]
\node[draw=red, text=blue] (B) {def};
\end{tikzpicture}}%
\begin{tikzpicture}
\node at (0,0) (A) {abc, \usebox0,};
\end{tikzpicture}
\egroup
\end{document}
答案3
对于一个简单的矩形,就\fbox
足够了。
在这个例子中,我忽略inner ysep
并假设它具有与 相同的值inner xsep
。
代码
\documentclass[tikz, border=1cm]{standalone}
\DeclareDocumentCommand{\node}{O{.}O{.}m}{%
\vphantom{#3}\smash{%
\setlength\fboxrule{\pgflinewidth}%
\pgfmathsetlength\fboxsep{\pgfkeysvalueof{/pgf/inner xsep}-.5\pgflinewidth}%
\textcolor{#1}{\fbox{\textcolor{#2}{#3}}}%
}%
}
\begin{document}
\tikz\node{abc,\node[red][green]{def},};
\end{document}