Вяжите rmarkdown файлы, содержащие фрагменты tikz при использовании пакета fontspec - PullRequest
0 голосов
/ 22 июня 2019

Это дополнительный вопрос к this затем this one.Я пытаюсь включить код TikZ в файл rmarkdown. первый вопрос решил проблему использования маркеров в метке узла, тогда как второй вопрос добавил использование varwidth вместо minipage среды.

Добавление пакета fontspec подняло еще одну проблему, которую я не могу решить.При добавлении пакета в мой список возникает следующая ошибка:

! Fatal Package fontspec Error: The fontspec package requires either XeTeX or (fontspec) LuaTeX. (fontspec)<br> (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}

Из сообщения об ошибке выше я понимаю, что я нахожусь в *Режим 1035 *, в то время как fontspec требует, чтобы я был в режиме xelatex или lualatex.Учитывая, что у меня в заголовке latex_engine: xelatex, меня мучают следующие вопросы:

  • , почему настройка latex_engine: xelatex в заголовке здесь недостаточна?
  • Есть ли knitr кусок не заботится о latex_engine: xelatex в шапке?Если так, как я могу решить это?
  • Чего мне не хватает?

Я искал вокруг, и одно предложение (которое не слишком сложно для меня), чтобы убедиться,глобальные настройки / настройки проекта установлены на weave rnw files using: knitr, Typeset LateX into pdf using: XeLaTex.Но это не помогло решить мою проблему.

1 Ответ

2 голосов
/ 24 июня 2019

Как объяснено в https://stackoverflow.com/a/51143900/8416610, вы должны указать tinytex::latexmk использовать xelatex вместо pdflatex, используя options(tinytex.engine = 'xelatex') в блоке настройки.

Кроме того, вам следует обновить tikz2pdf.tex для совместимости с XeTeX:

  • Удалить опцию pdftex из пакета preview
  • Удалить пакет inputenc.

С этими изменениями у меня работает ваш документ.

...