我刚刚完成了一个 tikz 图表。我需要文本
在下图中,您能对$\angle F$、$\angle B$和$\angle E$说些什么?
移到图表的右侧以节省纸张空间。
这就是我所拥有的:
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{pgf,tikz}
\usetikzlibrary{arrows}
\pagestyle{empty}
\begin{document}
\definecolor{uuuuuu}{rgb}{0.27,0.27,0.27}
\definecolor{qqqqff}{rgb}{0,0,1}
\definecolor{xdxdff}{rgb}{0.49,0.49,1}
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]
\clip(-4.3,-5.44) rectangle (18.7,6.3);
\draw(0,0) circle (4.01cm);
\draw (-4.01,0)-- (0,0);
\draw (0,0)-- (4.01,0);
\draw (-0.28,4)-- (-4.01,0);
\draw (-0.28,4)-- (4.01,0);
\draw (-4.01,0)-- (1.62,3.67);
\draw (1.62,3.67)-- (4.01,0);
\draw (-2.27,3.3)-- (-4.01,0);
\draw (-2.27,3.3)-- (4.01,0);
\begin{scriptsize}
\fill [color=black] (0,0) circle (1.5pt);
\draw[color=black] (0.14,0.28) node {$A$};
\fill [color=black] (-0.28,4) circle (1.5pt);
\draw[color=black] (-0.12,4.28) node {$B$};
\fill [color=black] (-4.01,0) circle (1.5pt);
\draw[color=black] (-3.84,0.28) node {$C$};
\fill [color=black] (4.01,0) circle (1.5pt);
\draw[color=black] (4.16,0.28) node {$D$};
\fill [color=black] (1.62,3.67) circle (1.5pt);
\draw[color=black] (1.78,3.94) node {$E$};
\fill [color=black] (-2.27,3.3) circle (1.5pt);
\draw[color=black] (-2.14,3.58) node {$F$};
\end{scriptsize}
\end{tikzpicture}
\begin{center}
In the following diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?
\end{center}
\end{document}
答案1
有两种方法:
1. 将文本作为图表的一部分
您只需在 内添加一个节点即可tikzpicture
。它将有助于限制文本的宽度,并使用锚点将其定位到所需的位置。例如:
\node[text width=6cm, anchor=west, right] at (5,0)
{In this diagram, what can you say about $\angle F$, $\angle B$ and $\angle E$?};
2. 将文本置于tikzpicture
环境之外。
对于这个解决方案,你必须记住,对于 TeX,你的完整图形就像一个巨大的字符,句子的一部分,因此你可以将文本放在该“字符”后面,TeX 会用它创建一个段落
\begin{tikzpicture}
% Your code
\end{tikzpicture}
In this diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?
但是如果你用你的代码尝试这个,你会得到以下奇怪的结果:
这是因为您在图中包含了此行:
\clip(-4.3,-5.44) rectangle (18.7,6.3);
这导致图形的宽度为 18.7 厘米,高度为 6.3 厘米。此行是不必要的,可以安全地删除,从而产生:
您可以看到,该图被用作一个大字符,是“正常”段落的一部分。但是结果却很糟糕,因为文本扭曲并延伸到图下方。
可以避免将文本放在里面,\parbox
这将产生一个包含文本的固定宽度的框。TeX 会将整个框视为另一个“大字符”,并将其放在图形旁边:
\begin{tikzpicture}
% Your code
\end{tikzpicture}
\parbox[b]{4cm}{
In this diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?
}
选项[b]
用于指定此框的“基线”在哪里。撰写段落时,基线在同一水平线上对齐。tikz 图片的基线位于其底部,因此如果我们[b]
为 parbox 提供选项,使其基线也位于底部,则两者将对齐:
如果省略[b]
parbox,则生成的 parbox 的基线将位于其中心。这将使 parbox 的中心与图形的底部对齐,这很难看。为了获得与情况 1(嵌入 tikz 图片的文本)相同的输出,我们需要更改图形的基线,并将其置于其中心。幸运的是,tikz
有一个简单的选项可以实现这一点:
\begin{tikzpicture}[baseline=0, ...remaining options...]
% Your code
\end{tikzpicture}
\hskip{1cm}\parbox{4cm}{
In this diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?
}
生成:
为了完整性,我还会包括顶部对齐的情况,这比其他情况更棘手一些。您可能会认为,要获得顶部对齐,只需将baseline
tikz 图形放在其顶部,然后使用[t]
parbox 选项即可。然而,这并不像预期的那样工作。
首先是 tikz 图片。我应该为baseline
选项写哪个值?它可以接受一个数字,即从底部边框测量,或节点的坐标。在这种情况下,我知道(阅读代码)圆的半径为4
单位,所以我可以使用baseline=4cm
,但这没有考虑到标签所需的空间乙在上面,这不是一个通用的解决方案。通用的解决方案是给出选项baseline=(current bounding box.north)
。
其次,[t]
选项parbox
不会将基线放在“该框的顶部”,而是“该框顶行的基线”。因此,第一行文本的基线将与图形的顶部边框对齐,如下图所示(我为该图添加了边框以使问题更加明显):
解决方案是将“空”线作为 的第一行parbox
。可以使用 来实现\vskip0pt
。这将产生一条没有高度或深度的线,但由于它是 parbox 的第一行,因此它将被用作基线,并且它正好位于该框的顶部。这是代码:
\fbox{\begin{tikzpicture}[baseline=(current bounding box.north), ...]
% Your code
\end{tikzpicture}}
\parbox[t]{4cm}{\vskip0pt
In this diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?
}
答案2
你可以使用两种minipage
环境。如果你需要剪辑图片,你可以使用trim left
并trim right
查看 pgfmanual 的说明。
您不需要加载pgf
,只需加载tikz
即可减少代码。
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows}
\pagestyle{empty}
\begin{document}
\begin{minipage}{0.5\textwidth}
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,scale=.6,font=\scriptsize]
\draw (0,0) circle (4.01cm) node [above]{$A$};
\draw (-4.01,0) node[left] {$C$}
-- (0,0)
-- (4.01,0) node [right]{$D$}
-- (-0.28,4)node[above] {$B$}
-- (-4.01,0)
-- (1.62,3.67)node[above] {$E$}
-- (4.01,0)
-- (-2.27,3.3) node[above] {$F$} -- cycle;
\fill [color=black] (0,0) circle (1.5pt)
(-0.28,4) circle (1.5pt)
(-4.01,0) circle (1.5pt)
(4.01,0) circle (1.5pt)
(1.62,3.67) circle (1.5pt)
(-2.27,3.3) circle (1.5pt);
\end{tikzpicture}
\end{minipage}\hfill
\begin{minipage}{0.5\textwidth}
In the following diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?
\end{minipage}
\end{document}
现在如果你想把文本和图形放在顶部
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[baseline=(current bounding box.north),line cap=round,line join=round,>=triangle 45,scale=.6,font=\scriptsize]
\draw (0,0) circle (4.01cm) node [above]{$A$};
\draw (-4.01,0) node[left] {$C$}
-- (0,0)
-- (4.01,0) node [right]{$D$}
-- (-0.28,4)node[above] {$B$}
-- (-4.01,0)
-- (1.62,3.67)node[above] {$E$}
-- (4.01,0)
-- (-2.27,3.3) node[above] {$F$} -- cycle;
\fill [color=black] (0,0) circle (1.5pt)
(-0.28,4) circle (1.5pt)
(-4.01,0) circle (1.5pt)
(4.01,0) circle (1.5pt)
(1.62,3.67) circle (1.5pt)
(-2.27,3.3) circle (1.5pt);
\end{tikzpicture}
\hfill
\begin{minipage}{0.5\textwidth}
In the following diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?
\end{minipage}
\end{document}
答案3
包裹tcolorbox
还提供了另一种并排分布图形/表格和文本的方法。box\tcbsidebyside
接受两个参数,左侧和右侧的内容并排分布,sidebyside adapt
选项允许声明哪个部分将定义空间分布。sidebyside align
定义两个部分的垂直对齐方式。
使用TikZ
从 Alain 的答案中获取的代码,结果可能是:
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usepackage[most]{tcolorbox}
\pagestyle{empty}
\begin{document}
\tcbsidebyside[sidebyside adapt=left, blanker, sidebyside gap=1cm,
sidebyside align=top seam]{%
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,scale=.6,font=\scriptsize]
\draw (0,0) circle (4.01cm) node [above]{$A$};
\draw (-4.01,0) node[left] {$C$}
-- (0,0)
-- (4.01,0) node [right]{$D$}
-- (-0.28,4)node[above] {$B$}
-- (-4.01,0)
-- (1.62,3.67)node[above] {$E$}
-- (4.01,0)
-- (-2.27,3.3) node[above] {$F$} -- cycle;
\fill [color=black] (0,0) circle (1.5pt)
(-0.28,4) circle (1.5pt)
(-4.01,0) circle (1.5pt)
(4.01,0) circle (1.5pt)
(1.62,3.67) circle (1.5pt)
(-2.27,3.3) circle (1.5pt);
\end{tikzpicture}%
}{In the following diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?}
\end{document}
并且没有blanker
选项,所有tcolorbox
花哨的功能都可以应用:
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usepackage[most]{tcolorbox}
\pagestyle{empty}
\begin{document}
\tcbsidebyside[title=A \texttt{\textbackslash{}tcbsidebyside} example,
sidebyside adapt=left,
sidebyside gap=1cm,
bicolor, colback=green!10, colbacklower=yellow!10, drop lifted shadow, fonttitle=\bfseries]{%
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,scale=.6,font=\scriptsize]
\draw (0,0) circle (4.01cm) node [above]{$A$};
\draw (-4.01,0) node[left] {$C$}
-- (0,0)
-- (4.01,0) node [right]{$D$}
-- (-0.28,4)node[above] {$B$}
-- (-4.01,0)
-- (1.62,3.67)node[above] {$E$}
-- (4.01,0)
-- (-2.27,3.3) node[above] {$F$} -- cycle;
\fill [color=black] (0,0) circle (1.5pt)
(-0.28,4) circle (1.5pt)
(-4.01,0) circle (1.5pt)
(4.01,0) circle (1.5pt)
(1.62,3.67) circle (1.5pt)
(-2.27,3.3) circle (1.5pt);
\end{tikzpicture}%
}{In the following diagram, what can you say about $\angle F$, $\angle B$ and$\angle E$?}
\end{document}