Включение комментария TeX в документ rmarkdown / knitr (или pandoc - ›вывод TeX)

Я хотел бы включить комментарий в мой .Rmd файл, который будет включен в исходный .tex. Конечная цель - создать "якоря" / "теги" в исходном тексте .tex, которые я могу использовать grep позже, чтобы разделить фрагменты вывода для включения в другие документы.

Предложение здесь использовать HTML-стиль комментарии <!-- Comment --> выглядели многообещающе, но я думаю, что pandoc удаляет это перед преобразованием в TeX, поскольку исходный файл не изменяется, включая такие комментарии. Использование spin упомянутого здесь выглядит многообещающим, но я не слишком знаком с spin, и, похоже, мне придется перевернуть весь документ, чтобы этот подход сработал (?). Или, по крайней мере, начните компилировать с spin вместо knit (не идеально). Как отмечено в другом месте (например, здесь), простое включение текста с % будет удалено.

Образец документа и желаемый результат:

---
output:
  pdf_document:
    keep_tex: yes
---

% [[BEGIN]]

Body of document

% [[END]]

В .tex файл:

\documentclass[]{article}
%Remainder of knitr/pandoc-produced preamble
\begin{document}

% [[BEGIN]]

Body of document

% [[END]]


\end{document}

person MichaelChirico    schedule 03.05.2017    source источник
comment
Может быть, поместить cat ("% [[BEGIN]]") в кусок с results = 'asis'? (Не проверено)   -  person Benjamin    schedule 03.05.2017
comment
@Benjamin Я не верю, что это сработает - по сути, это то, что происходит с xtable фрагментами комментариев, как цитируется здесь: tex.stackexchange.com/ вопросы / 201820 /   -  person MichaelChirico    schedule 03.05.2017
comment
Теперь, когда я сижу за компьютером, я понимаю, почему я так подумал. % вызывает комментарий в среде tabular, где я чаще всего с ним сталкиваюсь.   -  person Benjamin    schedule 03.05.2017


Ответы (2)


Заимствуя ответ от https://tex.stackexchange.com/a/149847/93762, мы можем определить Новая команда, которая устанавливает, ничего не печатает в документах, но позволяет вам помещать что угодно в фигурные скобки команды. Кажется, это работает довольно гладко.

---
output:
  pdf_document:
    keep_tex: yes
header-includes:
  - \usepackage{verbatim}
  - \newcommand{\comm}[1]{}
---

La la la

\comm{START OF BLOCK 1}

Here is the text that goes inside of the first block

\comm{END OF BLOCK 1}

Here is some text that is not between "comment" blocks.
person Benjamin    schedule 03.05.2017
comment
Идеально. Так же просто, как изменить мой grep на \comm{BEGIN} (на самом деле я буду использовать \TAG) вместо % BEGIN. - person MichaelChirico; 03.05.2017

Просто здесь бездельничал. Вам нужно будет выполнить некоторую пост-обработку файла .tex, чтобы избавиться от лишних \ перед % (в версии paste) или удалить теги verbatim (в дословных версиях). Еще думаю...

Вот файл rmarkdown:

---
output:
  pdf_document:
    keep_tex: yes
header-includes:
  - \usepackage{verbatim}
---

\begin{verbatim}
% Comment inside verbatim environment
\end{verbatim}

\verbatim{% Comment inside verbatim}

`r paste("% Commment inside paste")`

Body of document  

% [[END]]

Вот выходной файл tex:

\begin{document}

\begin{verbatim}
% Comment inside verbatim environment
\end{verbatim}

\verbatim{% Comment inside verbatim}

\% Commment inside paste

Body of document

\% {[}{[}END{]}{]}


\end{document}

В ответ на ваш комментарий: Если вам просто нужно иметь возможность искать определенный текст («теги»), как насчет чего-то вроде этого:

---
output:
  pdf_document:
    keep_tex: yes
---

\phantom{BB} This is the first line of the body. Then there's a whole bunch of 
stuff, like the text in an SO question: I'd like to include a comment in my .Rmd
 file that will be included in the source .tex. The ultimate goal is to create 
"anchors"/"tags" in the .tex source that I can pick up with grep later to split 
off chunks of the output for inclusion in other documents.

The suggestion here to use HTML-style comments <!-- Comment --> looked 
promising, but I think pandoc removes this before converting to TeX since the 
source file is unchanged by including such comments. The use of spin mentioned 
here looks promising, but I'm not too familiar with spin, and it looks like I'd 
have to upend my whole document for this approach to work (?). Or at least start 
compiling with spin instead of knit (not ideal). As noted elsewhere (e.g., 
here), simply including text with % will be sanitized. Then, finally, we get to 
the very last line of the body.\phantom{EE}
person eipi10    schedule 03.05.2017
comment
Ох, это вообще-то вдохновение. Ключ в том, чтобы что-то невидимо отображалось в исходном тексте .tex. Я просто попробовал несколько способов использовать \phantom{BEGIN}; проблема в том, что 1) он по-прежнему отображается тем, что оставляет пустое место (поэтому он не может быть в отдельной строке) и 2) мне не удалось его скомпилировать в заголовке раздела: # TEST $\phantom{TEST}$ выдает ошибку. Есть идеи, связанные с этим? - person MichaelChirico; 03.05.2017
comment
См. Дополнение к моему ответу. - person eipi10; 03.05.2017
comment
да, я думаю, это подойдет ... не идеально (может создать проблемы со стилем, если это приоритет для вывода knitr pdf, и было бы неплохо использовать теги с соответствующими именами вместо сокращений) ... ожидая более официального подхода на данный момент - person MichaelChirico; 03.05.2017
comment
AFK, так что больше не могу тестировать ... как насчет включения метки без ссылки в этих местах? - person MichaelChirico; 03.05.2017