This is a follow-up question to Using bullets list in tikz's node label in rmarkdown. I had some TikZ
code that works fine in pure LaTex
but NOT when I transport it to rmarkdown
where the error ! LaTeX Error: Something's wrong--perhaps a missing \item.
is raised. This was solved in the answer to Using bullets list in tikz's node label in rmarkdown but another issue arises applying the solution I got in there.
You can refer to the original question (Using bullets list in tikz's node label in rmarkdown) but basically I have some TikZ
code for pictures to be used as part of a larger rmarkdown
file. It works in LaTex
as I tested in on https://www.overleaf.com/ but once in rmarkdown
, it raises the missing item error. The proposed solution in Using bullets list in tikz's node label in rmarkdown was to add a \minipage
environment in rmarkdown
(see the code below).
My problem with the use of the \minipage
environment is that I will have to manually set its width (or at least I don't know how to automate this) before creating the node which is supposed to be part of a large TikZ
picture. In other words, I need to know the allocated space for each node to reproduce the picture in rmarkdown
. I was wondering whether there is a way to infer the size of the node in advance, so that I can create a minipage matching the size of the node it will contain.
\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}
I am also open to other solutions as long as I will NOT have to specify the size of my nodes manually. For example doing (note the commented lines)
\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}
in TikZ
will infer the size of the node from its text size and I am looking for something that allows me to use the same code in rmarkdown
without having to manually specify the size of each minipage across my nodes.
You could replace
minipage
with thevarwidth
environment from the package of the same name: