这是this,然后是this一个的后续问题。我正在尝试在TikZ
文件中包含一些rmarkdown
代码。 first question解决了在节点标签中使用项目符号的问题,而second question添加了varwidth
而不是minipage
环境的使用。
添加fontspec
软件包提出了另一个我似乎无法解决的问题。每当我将软件包添加到列表中时,都会引发以下错误:
! Fatal Package fontspec Error: The fontspec package requires either XeTeX or
(fontspec) LuaTeX.
(fontspec)
(fontspec) You must change your typesetting engine to,
(fontspec) e.g., "xelatex" or "lualatex"instead of
(fontspec) "latex" or "pdflatex".
按照前面的答案,代码由以下2个文件组成:
Title.Rmd
:---
title: "Title"
author: "Me"
output:
bookdown::pdf_document2:
keep_tex: yes
latex_engine: xelatex
---
```{tikz tikz-ex, echo=FALSE, fig.cap = "Funky tikz", fig.ext = 'pdf', cache=FALSE, eval=TRUE, engine.opts = list(template = "tikz2pdf.tex")}
\usetikzlibrary{
shapes,
arrows
}
\begin{tikzpicture}
\node[stile] (a){
\begin{minipage}{2.5cm}
p
\begin{myBullets}
\item first item
\item second item
\end{myBullets}
\end{minipage}
};
\end{tikzpicture}
```
tikz2pdf.tex
:\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
\usepackage[utf8]{inputenc}
\usepackage[skins]{tcolorbox}
\usepackage{
tikz,
enumitem,
xcolor
}
\usepackage{fontspec} % new adding to previous answers
\setromanfont{Times New Roman}
\begin{document}
\definecolor{BulletsColor}{rgb}{0, 0, 0.9}
\definecolor{myColor}{rgb}{0.98, 0.94, 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}
}
\tikzstyle {stile} = [
ellipse,
draw=BulletsColor,
fill=myColor,
thick,
inner sep=0pt,
text centered,
align=center
]
\begin{preview}
%% TIKZ_CODE %%
\end{preview}
\end{document}
从上面的错误消息中,我了解到我处于pdflatex
模式,而fontspec
要求我处于xelatex
或lualatex
模式。鉴于我的标题中有latex_engine: xelatex
,这使我遭受以下问题的困扰:
latex_engine: xelatex
不够?knitr
块是否不关心标题中的latex_engine: xelatex
?如果是这样,我该怎么解决?我一直在搜索,有一个建议(对我来说不太复杂)是确保将全局/项目设置设置为weave rnw files using: knitr
,Typeset LateX into pdf using: XeLaTex
。但是,这并没有真正帮助解决我的问题。
答案 0 :(得分:2)
如https://stackoverflow.com/a/51143900/8416610中所述,您必须通过在设置块中使用tinytex::latexmk
来告诉xelatex
使用pdflatex
而不是options(tinytex.engine = 'xelatex')
。
此外,您应该更新tikz2pdf.tex
以与XeTeX兼容:
pdftex
中删除选项preview
inputenc
。有了这些更改,您的文档对我有用。