从包含的tikz节点推断rmarkdown的小页面的大小

时间:2019-06-17 14:08:36

标签: r latex r-markdown knitr tikz

这是Using bullets list in tikz's node label in rmarkdown的后续问题。我有一些TikZ代码可以在纯LaTex中正常工作,但是在我将其传输到rmarkdown并引发错误! LaTeX Error: Something's wrong--perhaps a missing \item.的情况下却无法正常工作。 Using bullets list in tikz's node label in rmarkdown的答案已解决了该问题,但应用我在那里获得的解决方案又出现了另一个问题。

您可以参考原始问题(Using bullets list in tikz's node label in rmarkdown),但基本上我有一些TikZ代码,可将图片用作更大的rmarkdown文件的一部分。正如我在https://www.overleaf.com/上进行测试时,它可以在LaTex中工作,但一旦在rmarkdown中进行测试,就会引发缺少项错误。在Using bullets list in tikz's node label in rmarkdown中提出的解决方案是在\minipage中添加一个rmarkdown环境(请参见下面的代码)。

在使用\minipage环境时,我遇到的问题是,在创建应该作为一部分的节点之前,我将不得不手动设置其宽度(或者至少我不知道如何自动执行此操作) TikZ大图片的图片。换句话说,我需要知道为每个节点分配的空间来重现rmarkdown中的图片。我想知道是否有一种方法可以预先推断节点的大小,以便我可以创建一个与将包含的节点大小匹配的小页面。

\documentclass{article}

\usepackage{tikz}
\usepackage{enumitem}

\begin{document}
\definecolor{BulletsColor}{rgb}{0, 0, 0.9}
\newlist{myBullets}{itemize}{1}

\setlist[myBullets]{
  label=\textcolor{BulletsColor}{\textbullet},
  leftmargin=*,
  topsep=0ex,
  partopsep=0ex,
  parsep=0ex,
  itemsep=0ex,
  before={\color{BulletsColor}\itshape}
}


\begin{tikzpicture}
  \node[draw, rounded corners] (a)  {
    \begin{minipage}{2.5cm}
      p
      \begin{myBullets}
      \item first item
      \item second item
      \end{myBullets}
    \end{minipage}
  }
  ;
  \end{tikzpicture}
\end{document}

我也愿意接受其他解决方案,只要我不必手动指定节点的大小即可。例如,做(注意注释行)

\begin{tikzpicture}
  \node[draw, rounded corners] (a)  {
    % \begin{minipage}{2.5cm}
      p
      \begin{myBullets}
      \item first item
      \item second item
      \end{myBullets}
    % \end{minipage}
  }
  ;
  \end{tikzpicture}
TikZ中的

将根据其文本大小推断出节点的大小,而我正在寻找可以使我在rmarkdown中使用相同代码的东西,而不必手动指定每个小页面的大小跨我的节点。

1 个答案:

答案 0 :(得分:1)

您可以从具有相同名称的软件包中将minipage替换为varwidth环境:

\documentclass{article}

\usepackage{tikz}
\usepackage{enumitem}

\usepackage{varwidth}


\begin{document}
\definecolor{BulletsColor}{rgb}{0, 0, 0.9}
\newlist{myBullets}{itemize}{1}

\setlist[myBullets]{
  label=\textcolor{BulletsColor}{\textbullet},
  leftmargin=*,
  topsep=0ex,
  partopsep=0ex,
  parsep=0ex,
  itemsep=0ex,
%  before={\color{BulletsColor}\itshape}
}


\begin{tikzpicture}
  \node[draw, rounded corners, font=\itshape, text=BulletsColor] (a)  {
    \begin{varwidth}{\textwidth}
      p
      \begin{myBullets}
      \item \textcolor{BulletsColor}{first item}
      \item \textcolor{BulletsColor}{second item}
      \end{myBullets}
    \end{varwidth}
  }
  ;
  \end{tikzpicture}
\end{document}

enter image description here