печать сгенерированного кода текста на полях уценки - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь добавить примечание в моем латексном документе Tufte, которое частично сгенерировано кодом r, но безуспешно.Блоки кода, установленные для печати на полях, видимо, помещают только графики, а не текст или таблицы.Заметки на полях, вызываемые tufte::marginfigure(), выдают ошибку, если в них есть встроенный код.И блоки фигурных полей игнорируют встроенный код.Мне удалось заставить сгенерированный кодом текст печатать на полях со сноской, но затем я получил нумерацию сносок, которая мне не нужна.Я думал об отключении нумерации в этой сноске, но не смог.

Вот пример:

---
title: "Tufte Test"
author: "Neal"
date: "`r Sys.Date()`"
output:
  tufte::tufte_handout: default
---

```{r setup, include=FALSE}
library(tufte)
library(tidyverse)
```

Here is some normal text with inline code: 2+3=`r 2+3`  

\vspace{10pt}
```{r block, fig.margin=TRUE, echo=FALSE, results='asis'}
cat('Here is a margin code block with code-generated text and a plot.')
mtcars %>% ggplot(aes(mpg, disp)) + geom_point()
cat('The text stays in the main body.')
```


\vspace{10pt}
I can combine text and code in a footnote^[2+3=`r 2+3` \newline\vspace{10pt}], but I get footnote numbering, which I don't want.

```{marginfigure, echo=TRUE}
Here is a margin figure with inline code that doesn't work: 2+3=`r 2+3` \newline\vspace{10pt}
```


`r tufte::margin_note('This is a margin note. If I try to include inline code in it, I get an error because it "failed to tidy R code in chunk"')`

И вывод: tufte-test.pdf

Есть идеи?Спасибо.

1 Ответ

0 голосов
/ 27 февраля 2019

Блок кода с меткой marginfigure просто оборачивает содержимое в среде LaTeX под названием marginfigure.Вы можете сделать это самостоятельно, и тогда встроенный код будет обработан правильно.

То есть вы замените это:

```{marginfigure, echo=TRUE}
Here is a margin figure with inline code that doesn't work: 2+3=`r 2+3` \newline\vspace{10pt}
```

на это:

\begin{marginfigure}
Here is a margin figure with inline code that *does* work: 2+3=`r 2+3` \newline\vspace{10pt}
\end{marginfigure}

Ваш первый пример немного сложнее.Его нужно разбить на три части:

\begin{marginfigure}
`r 'Here is a margin code block with code-generated text.'`
\end{marginfigure}

```{r block, fig.margin=TRUE, echo=FALSE}
mtcars %>% ggplot(aes(mpg, disp)) + geom_point()
```

\begin{marginfigure}
`r 'The text doesn\'t stay in the main body.'`
\end{marginfigure}

Вы просили вывод PDF, но просто для полноты, если вместо этого вы используете tufte::tufte_html для вывода HTML, будет получен эквивалентный результатиспользуя

<span class="marginnote">
Here is a margin figure with inline code that *does* work: 2+3=`r 2+3`
</span>
...