我想使用包\ce{}
中的元素定义节点,这些节点是带有文本的形状mhchem
。我该如何确保节点之间的基线相同,现在如果我使用下标,它会发生变化。这是一个 MWE:
\documentclass{article}
\usepackage[version=3]{mhchem}
\usepackage{tikz}
\usetikzlibrary{shapes}
\newbox\nodebox
\newcommand\mycommand[2]{%
\begin{tikzpicture}%
\node[text=#1, rectangle, inner ysep=4pt, inner xsep=2pt, rounded corners=7, minimum height=5mm, minimum width=10mm, fill=#1] {\tiny\sffamily \textbf{\ce{#2}}};
\node[yshift=-0.5,text=black!95!white] {\scriptsize\sffamily \textbf{\ce{#2}}};
\node[text=white] {\scriptsize\sffamily \textbf{\ce{#2}}};
\end{tikzpicture}%
}
\begin{document}
\mycommand{red!40!white}{Al2O3} \mycommand{blue!40!white}{Al}
\end{document}
答案1
在这种情况下,您需要手动将text depth
所有节点的 设置为相同的值。如果将其设置为text depth=0pt
,则文本将按没有降部或下标的方式对齐;如果将其设置为text depth=0.25ex
,则所有节点中的文本将按有降部或下标的方式对齐。
\documentclass{article}
\usepackage[version=3]{mhchem}
\usepackage{tikz}
\usetikzlibrary{shapes}
\newbox\nodebox
\newcommand\mycommand[2]{%
\begin{tikzpicture}[every node/.append style={text depth=0.25ex}]%
\node[
text=#1,
rectangle,
inner ysep=4pt,
inner xsep=2pt,
rounded corners=7,
minimum height=5mm,
minimum width=10mm,
fill=#1
] {\tiny\sffamily \textbf{\ce{#2}}};
\node[
yshift=-0.5,
text=black!95!white
] {\scriptsize\sffamily \textbf{\ce{#2}}};
\node[text=white]{\scriptsize\sffamily\textbf{\ce{#2}}};
\end{tikzpicture}%
}
\begin{document}
\mycommand{red!40!white}{Al2O3} \mycommand{blue!40!white}{Al}
\end{document}