2016-09-08 1 views
2

Я использую knitr в RStudio, и я ищу объяснение нечетной ошибки при создании документа из файла rmarkdown. Как и в примере, у меня есть файл, PDF-test.Rmd:Что вызывает ошибку преобразования документа pandoc, когда blockquote следует за заголовком

--- 
title: "PDF knit error" 
output: pdf_document 
--- 

##Headers 

> ###Quote 1 
This results in an error; if the blockquote symbol ('>') in 
preceeding line is removed, no error 

> ###Quote 2 
This line is fine 

Когда я пытаюсь создать PDF с помощью кнопки Knit PDF, это выход:

 
    |.................................................................| 100% 
    ordinary text without R code 

processing file: pdf-test.Rmd 
output file: pdf-test.knit.md 

/usr/bin/pandoc +RTS -K512m -RTS pdf-test.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output pdf-test.pdf --template /home/jcoliver/R/x86_64-pc-linux-gnu-library/3.3/rmarkdown/rmd/latex/default-1.17.0.2.tex --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable 'geometry:margin=1in' 
! LaTeX Error: Something's wrong--perhaps a missing \item. 

See the LaTeX manual or LaTeX Companion for explanation. 
Type H for immediate help. 
...            

l.94 \end{quote} 

pandoc: Error producing PDF 
Error: pandoc document conversion failed with error 43 
Execution halted 

Как уже упоминалось выше, , удаление символа кавычки блока (>) из первого экземпляра заставляет ошибку уходить (хотя это также делает нужное форматирование).

--- 
title: "PDF knit error" 
output: pdf_document 
--- 

##Headers 

###Quote 1 
No error here 

> ###Quote 2 
This line remains fine 

И нет никаких жалоб от pandoc/LaTeX:

 
    |.................................................................| 100% 
    ordinary text without R code 

/usr/bin/pandoc +RTS -K512m -RTS pdf-test.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output pdf-test.pdf --template /home/jcoliver/R/x86_64-pc-linux-gnu-library/3.3/rmarkdown/rmd/latex/default-1.17.0.2.tex --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable 'geometry:margin=1in' 

processing file: pdf-test.Rmd 
output file: pdf-test.knit.md 

Output created: pdf-test.pdf 

Я также могу избежать ошибок путем изменения уровня заголовка блока цитатой Н4 или выше (Н5, Н6 и т.д.), в то время как изменение уровня заголовка первой кавычки блока для H1 или H2 по-прежнему приводит к ошибке.

Так почему же эта ошибка возникает? Почему я не могу получить цитату с H3 сразу после заголовка? Обратите внимание, что я пробовал разные уровни заголовка в строке заголовка (#Headers, ##Headers, ###Headers), изменяя расстояние после строки ##Headers и другой формат вывода (т. Е. HTML), но ошибка всегда возникала.

Несколько системных деталей:

  • Ubuntu 16.04
  • pandoc 1.17.2 (ошибка также произошла с 1.16.0.2)
  • R 3.3.1
  • RStudio 0.99.489

ответ

0

Вы хотите процитировать заголовок раздела непосредственно после заголовка раздела? Это звучит действительно особенное, и похоже, что pandoc не может справиться с этим.

Как предлагается в eipi10's answer, решение состоит в том, чтобы добавить что-то между заголовком и цитатой. Тем не менее, я думаю, вы должны не добавить текст белого заполнителя в документ.Например, при копировании текста из PDF наполнитель становится видимым.

Вместо этого просто добавьте (пустое) поле: \mbox{}. Затем, чтобы избежать чрезмерного вертикального пробела из-за добавленной дополнительной строки, добавьте некоторое отрицательное вертикальное пространство: \vspace*{-1cm}.

--- 
output: pdf_document 
--- 

##Headers 

\mbox{}\vspace*{-1cm} 

> ### Quoted Section 

Foobar. 

Output

0

Я не уверен, почему произошла ошибка, но вот хак, который позволяет вам заголовок H3 в блочных кавычках сразу после заголовка H2, без взаимного доступа vening text.

Основная идея заключается в том, что вы сделать добавить текст между заголовками, но установить свой цвет на белый (вы также должны объявить \usepackage{color} в заголовке для этой работы). Затем, поскольку это также добавляет слишком много места между заголовками, вы делаете текст очень маленьким, используя \tiny и уменьшайте пространство между строками с помощью \vspace*{-\baselineskip}. (Изначально я пытался добавить фантомный текст с помощью \phantom{aaa}, но все-таки в результате тех же ошибок, поэтому я перешел на «реальный» текст, но оказываюсь в том же цвете, что и фон (т.е., белый).)

--- 
title: "PDF knit error" 
output: 
    pdf_document: 
    number_sections: no 
header-includes: 
    - \usepackage{color} 
--- 

##Headers 

\vspace*{-\baselineskip} 
\tiny 
\begin{itemize} 
\color{white} 
\item Some text 
\end{itemize} 
\normalsize 
\vspace*{-\baselineskip} 

> ###Quote 1 
This results in an error; if the blockquote symbol ('>') in 
preceeding line is removed, no error 

> ###Quote 2 
This line is fine 

enter image description here

Смежные вопросы