下面是我的实验性RMarkdown文档(名为 tikz-cyrillic.Rmd ):
---
title: "TikZ cyrillic test"
output:
pdf_document:
keep_tex: yes
latex_engine: xelatex
dev: tikz
html_document: default
word_document: default
---
```{r,engine='tikz', fig.ext = if (knitr:::is_latex_output()) 'pdf' else 'svg'}
\begin{tikzpicture}
\path (0,0) node
(x) {Hello World!}
(3,1) node[circle,draw](y) {$\int_1^2 x \mathrm d x$};
\draw[->,blue]
(x) -- (y);
\draw[->,red]
(x) -| node[near start,below] {мир!} (y);
\draw[->,orange] (x) .. controls +(up:1cm) and +(left:1cm) .. node[above,sloped] {Привет} (y);
\end{tikzpicture}
```
它基于示例from 17.11 of pgfmanual.pdf。
Gummi将 TeXLive与XeTeX 一起使用,并带有简单的序言
\usepackage[main=russian,english]{babel}
\usepackage{fontspec}
\setmainfont[Ligatures={TeX,Historic}]{Times New Roman}
提供以下输出:
您可以in OverLeaf对其进行测试。
但是在RStudio中,我无法理解应该在哪里输入TikZ设备的序言,因此输出错误(例如HTML):
我应该在RMarkdown文档中进行哪些更改才能在TikZ图中获得正确的输出?
对于HTML,PDF和Word文档(docx),我需要具有相同的图像外观。
注意:如果需要的话,我将在带有TeXLive 2015的Ubuntu 16.04 LTS上使用Gummi和RStudio 1.1.456。
答案 0 :(得分:3)
可以配置Knitr引擎,请参见例如https://stackoverflow.com/a/51143900/8416610供参考。您的情况有所不同,因为同时需要PDF和SVG输出。由于SVG输出使用DVI,因此我们无法使用xelatex
来处理tikz
图形。相反,我们必须设置标准latex
才能输出西里尔字母:
---
title: "TikZ cyrillic test"
output:
pdf_document:
keep_tex: yes
latex_engine: xelatex
html_document: default
mainfont: Liberation Serif
monofont: Liberation Mono
---
```{r,engine='tikz', fig.ext = if (knitr:::is_latex_output()) 'pdf' else 'svg', engine.opts = list(template = "tikz2pdf-cyr.tex")}
\begin{tikzpicture}
\path (0,0) node
(x) {Hello World!}
(3,1) node[circle,draw](y) {$\int_1^2 x \mathrm d x$};
\draw[->,blue]
(x) -- (y);
\draw[->,red]
(x) -| node[near start,below] {мир!} (y);
\draw[->,orange] (x) .. controls +(up:1cm) and +(left:1cm) .. node[above,sloped] {Привет} (y);
\end{tikzpicture}
```
使用tikz2pdf-cyr.tex
:
\documentclass{article}
\usepackage{libertine}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[active,tightpage]{preview}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{preview}
%% TIKZ_CODE %%
\end{preview}
\end{document}
请注意,此处图像和主要文本使用不同的字体。目前,我无法上传任何屏幕截图...