我正在使用LaTeX包problems从问题数据库创建解决方案集。数据库的结构类似于参考书目数据库,位于.bib文件中。整个系统对常规LaTeX工作得很漂亮,但现在我的一些解决方案中有R代码(用knitr块)。
RStudio中的编码/ TeXing / BibTeXing的默认序列不起作用 - 代码在文档中逐字结束,以及块分隔符的错位版本。因此,我需要找到正确的步骤工作流程,以确保代码能够完成。
这个软件包似乎已经设置了两个文件,一个用于数据库,一个用于.tex / .rnw,所以我不能做一个有效的例子,但是这样的话:
\documentclass{article}
\usepackage[solution]{problems}
\Database{
@QUESTION{1.1,
problem = {1.1},
solution = {This solution only uses TeX, like $\bar{x}$. It works fine.}}
@QUESTION{1.2,
problem = {1.2},
solution = {This solution includes code
<<>>=
head(iris)
@
It does not work.
}}}
\begin{document}
Problems for this week were 1.1 and 1.2
\problems{1.1}
\problem{1.2}
\end{document}
答案 0 :(得分:3)
您必须首先编织.bib
文件,然后运行LaTeX和BibTeX。
虽然您通常有.Rnw
文件编织到.tex
,然后让LaTeX工具处理.tex
和.bib
文件,您必须从(让我们称之为).Rbib
文件,编织到.bib
然后由LaTeX处理。
为简单起见,我将名为.Rbib
的文件命名为bibliography.Rnw
,但您可以选择任何您喜欢的扩展程序。我选择了.Rnw
,因为内部使用的语法与.Rnw
文件中的语法相同。
作为bib文件的虚拟条目,我使用verbosus.com中的数据并添加了一些knitr
代码。
第一个chunk设置全局块选项,以防止knitr
将块的代码或任何标记添加到输出文件中。下一个块显示了例如title
字段如何填充生成的内容,\Sexpr{}
部分是如何使用它来添加一些动态文本的示例。
<<setup>>=
library(knitr)
opts_knit$set(
echo = FALSE,
results = "asis"
)
@
article{article,
author = {Peter Adams},
title = {
<<echo=FALSE, results = "asis">>=
cat("The title of the work")
@
},
journal = {"The title of the journal"},
year = 1993,
number = 2,
pages = {201-213},
month = 7,
note = {An optional note},
volume = 4
}
@book{book,
author = {Peter Babington},
title = {\Sexpr{"The title of the work"},
publisher = {The name of the publisher},
year = 1993,
volume = 4,
series = 10,
address = {The address},
edition = 3,
month = 7,
note = {An optional note},
isbn = {3257227892}
}
使用chunk选项results = "asis"
并使用cat()
代替print()
非常重要。否则,输出中会出现不需要的字符。
如果保存为bibliography.Rnw
,则以下内容足以获得评估了块的.bib
文件:
knit(input = "bibliography.Rnw", output = "bibliography.bib")
之后只剩下标准的LaTeX编译。