Pando c не может отобразить допустимые определения макросов LaTeX из уценки (и уценки R) - PullRequest
1 голос
/ 11 марта 2020

В R у меня есть символьные объекты, которые содержат определения макросов LaTeX. Задача состоит в том, чтобы использовать эти объекты в документах R Markdown, чтобы определения макросов правильно отображались при преобразовании файлов .Rmd в LaTeX (а затем в PDF). Это сложная задача, потому что Pando c (v2.9.1 и 2.9.2) не в состоянии правильно отобразить некоторый макрос-генерирующий код, даже если этот код является допустимым LaTeX.

Вот минимальный пример. Сначала рассмотрим этот Rmd-файл:

---
title: "Rendering LaTeX Macros from R Objects"
output: 
  pdf_document:
    keep_md: true
    keep_tex: true
---

```{r}
withoutBraces <- "\\newcommand\\withoutBraces{This is a sentence.}"
withBraces    <- "\\newcommand{withBraces}{This is a sentence.}"
```

```{r, results = "asis"}
writeLines(withoutBraces)
writeLines(withBraces)
```

При связывании этого .Rmd-файла из RStudio создается файл .tex, который содержит следующий вывод:

\newcommand\withoutBraces{This is a sentence.}

, но

\textbackslash newcommand\{withBraces\}\{This is a sentence.\}

Другими словами, команда \withoutBraces правильно отображается в документе .tex, а команда \withBraces - нет. Инспекция показывает, что rmarkdown::render() часть процесса вязания в порядке, в том смысле, что он создает файл c .md без проблем. Проблема заключается в pando c: когда он преобразует файл .md в файл .tex, команда \withBraces отображает неправильно.

Если бы я писал файлы .md вместо .Rmd файлы, я мог бы использовать «generi c raw attribute» в своих фрагментах кода, чтобы правильно определить определение макроса \withoutBraces, как в этом примере от @ mb21 . Но я не вижу способа сделать это при работе с файлами R Markdown. Могу ли я что-нибудь сделать, чтобы определение \withoutBraces правильно отображалось, когда я вяжу файл .Rmd в LaTeX и PDF?

1 Ответ

0 голосов
/ 14 марта 2020

Проблема заключалась в ошибке форматирования LaTeX с моей стороны, а не в pando c. Я написал

withBraces    <- "\\newcommand{withBraces}{This is a sentence.}"

, когда должен был написать

withBraces    <- "\\newcommand{\\withBraces}{This is a sentence.}"

Когда я использую вторую строку вместо первой, проблем с преобразованием в LaTeX не возникает.

...