我需要使用 tikz 图片和一些带有方程式的文本(在框架内或类似内容内)在我的页面中添加突出显示的示例。我尝试使用 tcolorbox,但它不允许在里面使用 tikzpicture。以下是我想要突出显示的代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning}
This is the an example text:
\begin{equation}
1=2
\end{equation}
\begin{figure}
\centering
\begin{tikzpicture}
\node at (0,0) (a) {a};
\node at (1,0) (b) {b};
\draw (a)--(b);
\end{tikzpicture}
\end{figure}
\end{document}
我需要文本下方的图片,迷你页面不是解决方案。任何答案都有帮助,谢谢!
答案1
您可以tikzpicture
在 中包含tcolorbox
,至少如果您使用listings
。我知道您说不要使用,但不知道为什么不使用它。对我来说,这是此类问题的自然开始,所以我也为此提供了一个解决方案。我使用一些文本和节点周围的框minipage
扩展了 MWE 。lipsum
\documentclass{article}
\usepackage{lipsum}
\usepackage{calc}
\usepackage{tikz}
\usepackage[listings]{tcolorbox}
\newtcblisting{EvalBox}[2][]{%
colback=white,
arc=0pt,
boxrule=0.5pt,
text only,
title=#2,#1}
%%
\begin{document}
\lipsum[1]
%% First
\begin{EvalBox}{}
\lipsum[2]
\begin{equation}
1=2
\end{equation}
\centering
\begin{tikzpicture}
\node[draw] at (0,0) (a) {a};
\node[circle,draw] at (1,0) (b) {b};
\draw[->] (a)--(b);
\end{tikzpicture}
\end{EvalBox}
%% Second version, using minipage
\noindent
\fbox{\begin{minipage}[t]{1.0\linewidth-2\fboxsep-2\fboxrule}
\lipsum[2]
\begin{equation}
1=2
\end{equation}
\centering
\begin{tikzpicture}
\node[draw] at (0,0) (a) {a};
\node[circle,draw] at (1,0) (b) {b};
\draw[->] (a)--(b);
\end{tikzpicture}
\end{minipage}}
\end{document}
编辑
也可以使用tcolorbox
不使用的版本:listing
\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{tcolorbox}
\begin{document}
\lipsum[1]
\begin{tcolorbox}[colback=white]
\lipsum[2]
\begin{equation}
1=2
\end{equation}
\centering
\begin{tikzpicture}
\node[draw] at (0,0) (a) {a};
\node[circle,draw] at (1,0) (b) {b};
\draw[->] (a)--(b);
\end{tikzpicture}
\end{tcolorbox}
\end{document}
答案2
我可能误解了这个问题,但可以尝试一下:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{figure}
\centering%
\begin{tikzpicture}
\node at (0,0) (a) {a};
\node at (1,0) (b) {b};
\draw (a)--(b);
\node[above = \baselineskip of current bounding box] {%
\begin{minipage}{0.9\linewidth}
Text or whatever you want to put here.
\begin{equation*}
1 = 2
\end{equation*}
\end{minipage}%
};
\draw (current bounding box.north west) rectangle (current bounding box.south east);
\end{tikzpicture}
\end{figure}
\end{document}
简单解释一下:一旦画完图片的主要元素,我就会创建一个节点,该节点位于所有元素的正上方(在“当前边界框”上方,相对距离较远,因为\baselineskip
它稍微不那么脏)。最后,我在最终边界框周围画一个矩形。……现在想想,这有点矫枉过正。
顺便说一句,我很确定 tikzpictures能放入 tcolorboxes,因为我使用 tcolorboxes 在我编写的伪包的文档中展示示例,这些示例充满了 tikz 的东西:http://www.alicem.net/files/oths/pointbox.zip
答案3
这是不使用小型页面的东西(针对这个特定问题)。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning, fit}
\begin{document}
\begin{figure}
\centering%
\begin{tikzpicture}
\node [text width = 0.9\linewidth] (first) {
Text or whatever you want to put here.
};
\node [below=\baselineskip] at (first) (eq) {$1=2$};
\node [below left=\baselineskip] at (eq) (a) {a};
\node at ([xshift=1cm] a) (b) {b};
\draw (a)--(b);
\node [draw, rectangle, fit=(first)(eq)(a)(b)]{};
\end{tikzpicture}
\end{figure}
\end{document}