提问于:
浏览数:
4695
```tex
\documentclass{book}
\usepackage{amsmath}
\usepackage{txfonts}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (4,0) -- (5,2) --(1,2)-- cycle;
\node (j) at (0.5,0.3) {$\alpha$};
\draw[color=red] (1,1) --(2.5,1)node[above]{$b$}-- (4,1);
\draw[color=blue] (1,2.5) --(2.5,2.5)node[above]{$a$}-- (4,2.5);
\end{tikzpicture}
$\left.\begin{array}{l}
a//b\\
b\subset \alpha \\
a\nsubset \alpha \end{array}\right\}\Rightarrow a//\alpha $
\end{document}
```
2 回答
0
对 `tikz` 的 `baseline` 选项的一个补充:
1. 该选项除了接受距离,如 `baseline=25pt`,还能接受坐标,包括形如 `(1, 1)` 的具体坐标,和形如 `(a.center)` 的 node anchor。
1. 在 node 中,有一个默认定义的、特殊的 node `current bounding box`,它是一个长方形,默认大小为当前 tikz 图形的大小。
所以,可以尝试使用 `baseline=(current bounding box.center)`,来避免使用具体距离,如 `25pt`。
在你的例子中,那个 tikz 图形的视觉重心比几何重心低一些,这样直接使用 `baseline=(current bounding box.center)` 会显得图形偏高。可以在 tikz 图形中增加一个用于指示基线高度的 node,或者直接指定坐标,让 tikz 图形在视觉重心对齐。
```tex
\documentclass{book}
\usepackage{amsmath}
\usepackage{newtxmath}
\usepackage{tikz}
\newcommand\test[1]{
\noindent
\texttt{#1}\par
X\begin{tikzpicture}[#1]
\draw(0,0) -- (4,0) -- (5,2) --(1,2)-- cycle;
\node (j) at (0.5,0.3) {$\alpha$};
\draw[color=red] (1,1) --(2.5,1)node[above]{$b$}-- (4,1) node (base) {};
\draw[color=blue] (1,2.5) --(2.5,2.5)node[above]{$a$}-- (4,2.5);
\end{tikzpicture}
X
\(
\left.
\begin{array}{l}
a//b\\
b\subset \alpha \\
a\nsubset \alpha
\end{array}
\right\} \Rightarrow a // \alpha
\)
X\par\bigskip
}
\begin{document}
\test{baseline=(current bounding box.center)}
\test{baseline=(base)}
\test{baseline={(0, 1)}}
\end{document}
```
![](https://pics.latexstudio.net/data/images/202001/954df2c39138e30.png)
更一般的方案还包括,使用 `\raisebox`、使用一行两列的表格等。
-
非常感谢!方法2和3我都很满意,多谢! – 沈阳-为啥不长草 2020-01-15 22:45 回复
0
主要是依赖于 `baseline` 来进行调整,参考 [https://tex.stackexchange.com/questions/57019/inline-tikz-vertical-centering](https://tex.stackexchange.com/questions/57019/inline-tikz-vertical-centering)
```tex
\documentclass{book}
\usepackage{amsmath}
\usepackage{txfonts}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[baseline=25pt]
\draw(0,0) -- (4,0) -- (5,2) --(1,2)-- cycle;
\node (j) at (0.5,0.3) {$\alpha$};
\draw[color=red] (1,1) --(2.5,1)node[above]{$b$}-- (4,1);
\draw[color=blue] (1,2.5) --(2.5,2.5)node[above]{$a$}-- (4,2.5);
\end{tikzpicture}
\(
\left.
\begin{array}{l}
a//b\\
b\subset \alpha \\
a\nsubset \alpha
\end{array}
\right\} \Rightarrow a // \alpha
\)
\end{document}
```
作者追问:2020-01-15 22:46
感谢热心回答!
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。