Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译为pdf的R标记文档中的html标记_R_Markdown_Knitr - Fatal编程技术网

编译为pdf的R标记文档中的html标记

编译为pdf的R标记文档中的html标记,r,markdown,knitr,R,Markdown,Knitr,我试图使用R标记创建pdf文档,但在使用某些html标记时遇到问题。例如,R标记文档 --- output: pdf_document --- <pre> code1 </pre> <code> code2 </code> <pre><code> code3 </code></pre> 编撰 #!/bin/bash /Library/Frameworks/R.framework/Versio

我试图使用R标记创建pdf文档,但在使用某些html标记时遇到问题。例如,R标记文档

---
output: pdf_document
---

<pre>
code1
</pre>

<code>
code2
</code>

<pre><code>
code3
</code></pre>
编撰

#!/bin/bash
/Library/Frameworks/R.framework/Versions/Current/Resources/bin/Rscript -e "rmarkdown::render(\"$1\", encoding='UTF-8')"
当所需输出为

code3
进行了一些很好的格式化。但是如果我编译成html(
output:html\u document
而不是元数据中的
output:pdf\u document
),问题就解决了

我使用下面的引擎在Mac上使用TexShop进行编译


我怀疑我在编译成pdf时不允许使用某些html标记,但我还没有找到任何相关指南。

重要的是要记住,pdf格式不是html,对html标记一无所知。当文档转换为PDF时,文档的每一部分都需要转换为相应的PDF实体。因此,在文档中引入非标准原始HTML时,转换器很容易混淆

当然,转换器在发动机罩下的工作方式也会对输出产生一些影响。例如,如果您使用的工具将标记转换为HTML,然后将该HTML转换为PDF,则原始HTML可能有更好的机会正确映射。但是,如果该工具直接从解析树(标记列表)转换为输出格式,那么它可能对原始HTML一无所知(除非它也是HTML解析器)。关键是,使用原始HTML会在转换为PDF时增加另一层潜在的失败。我的建议是在缩进转换为PDF时尽可能避免这种情况(记住,降价最初只用于输出HTML)

事实证明,Markdown已经提供了一种(或两种;取决于您使用的实现)标记代码块的方法:(可能还有受保护的代码块)。有趣的是,它们输出的HTML与您发现有效的原始HTML相同。也许这应该提供一个线索,说明您尝试的其他两种可能性是无效的

事实上,HTML规范非常清楚,代码块必须包装在
标记中。
标记是块级标记,因此它不需要包装在任何父标记中。但是,
标记没有将其内容标识为“代码”。因此,永远不要假设它本身包含“代码”。另一方面,
标记不是块级标记。它必须由块级标记(如
..)包装。而
标记是唯一将内容标记为“代码”的标记。因此,在HTML中标记代码块的唯一有效方法是将其包装在
标记中。事实证明,当你这么做的时候,它是有效的。因此,我的结论是转换器被无效的HTML和失败(应该是这样)弄糊涂了


因此,总而言之,要么使用本机标记方法来标记代码,要么如果必须使用原始HTML,就坚持使用有效的HTML。

当标记有自己的方式标记代码时,使用原始HTML有什么原因吗?我可以用两组3个回标来绑定代码,但我不喜欢这种美观,我无法控制样式。那降价标准呢:缩进代码块?缩进代码块为我编译相同的代码块。你已经彻底回答了我最初的问题。不过,我对pdf输出的外观并不满意。不幸的是,我不能总是摆脱HTML,我偶尔想用R以外的语言显示代码。
code1
code2
code3
#!/bin/bash
/Library/Frameworks/R.framework/Versions/Current/Resources/bin/Rscript -e "rmarkdown::render(\"$1\", encoding='UTF-8')"