我记得 TikZ 中有不同的命令允许修改节点中字符的放置方式,但我无法在 TikZ 手册中找到所有命令。我可能在寻找我所搜索内容的错误定义。
请参阅此描绘字符框的示例图片:
一个问题是两个文本节点的垂直对齐。如果一个文本有降序字符,如“p”、“g”等,而另一个没有,则这两个文本将不会垂直对齐。一种解决方案是为每个节点(或仅那些有问题的节点)设置固定的文本深度,例如text depth=0ex
或text depth=0.25ex
1。这是我的第一点无知:像 't'、'b' 或大写字母这样的升序字符怎么办?这些情况下的字符框是怎样的?我没有找到任何例子。我猜只有高度会改变,但我不确定。
第二个问题是水平对齐。当然,等宽字体不存在水平对齐问题,但在其他情况下存在水平对齐问题。如何将文本/字符框设置为固定宽度?用例:我有一个带文本的节点$S_0$
和一个带文本的节点S_t
;如果我将它们左对齐,则没有问题;否则,如果我将它们右对齐,则会S
出现错位。
总的来说,您能否提供处理 TikZ 以及纯 LaTeX 中字符/文本的框大小的命令?
笔记我写错内容和标题本身错误的概率非常高。请随意编辑我的问题或提供有关如何处理字符/文本框的良好参考。
例子
我添加了更多内容0
,t
因为下标确实证明了差异。当然,这是预期的和正确的行为,即最后两个节点的文本正确右对齐。在我的例子中,我有幻灯片,其中的下标发生了S
变化,但图形的大部分保持不变。因此,在这个用例中,我希望将 S 放在与以前相同的位置,但使用不同的下标。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node [align=left] (first) {long text\\ $S_{000}$};
\node [below=1em of first, align=left] (second) {long text\\ $S_{ttt}$};
\node [below=1em of second, align=right] (third) {long text\\ $S_{000}$};
\node [below=1em of third, align=right] (fourth) {long text\\ $S_{ttt}$};
\end{tikzpicture}
\end{document}
进一步说明此示例只是一个用例。我对改变与框相关的变量的方法感兴趣。在本例中,改变将使t
框的宽度相同0
。或者,使框的$S_t$
宽度相同$S_0$
。
答案1
您在找这个吗?
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\newsavebox{\longtext}\sbox{\longtext}{$S_{000}$}
\node [align=left] (first) {long text\\ $S_{000}$};
\node [below=1em of first, align=left] (second) {long text\\ $S_{ttt}$};
\node [below=1em of second, align=right] (third) {long text\\ $S_{000}$};
\node [below=1em of third, align=right] (fourth)
{long text\\ \makebox[\wd\longtext][l]{$S_{ttt}$}};
\end{tikzpicture}
\end{document}
我在这里所做的是将较长的文本放入一个名为的“框” \longtext
,然后我用排版较短的文本\makebox\[
宽度\]\[
位置\]{shorter text}
:这将创建一个具有所需宽度的框,左对齐(对于升),包含较短的文本。我使用 来作为宽度\wd\longtext
,这是我之前创建的框的长度。