盒子里的 Tikz 图片

盒子里的 Tikz 图片

我需要使用 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}

框中的文本

相关内容