后续行动这个问题关于在包中使用的环境中使用 R 代码probsoln
。如果您取消注释下面的部分并在主 Rnw 文件中定义问题,则 R 代码将被正确编译和呈现。
但是,当您将该问题定义移动到单独的文件并将其加载时,R 代码不再正确传递。
我知道上一个线程的原始答案在 R 代码周围有一个逐字环境,但我无法让它工作,脆弱的选项使它对我有用。
\documentclass{article}
\usepackage{probsoln}
\showanswers
%%% -- Problem Definition --%%
% \begin{defproblem}{comparing_rates2}[fragile]
% If 136,670,000 persons were wage and salary workers and 10,544,000 persons were self-employed, what is the fatal injury rate per 100,000 workers for each group?
%
% \begin{onlysolution}[fragile]%
% \begin{solution}
% \begin{enumerate}
% \item Wage and salary workers have a fatal injury rate of 3.4 per 100,000 workers. \\
% Self-employed workers have a fatal injury rate of 9.9 per 100,000 workers.
% \item Self-employed workers have the worst outcome becuase they show a higher rate of fatal injury.
% \end{enumerate}
% <<>>=
% (4613/136670000)*100000
% (1044/10544000)*100000
% @
% \end{solution}
% \end{onlysolution}
% \end{defproblem}
%% - Load all problems defined in the dataset
\loadallproblems{test_dataset.rnw}
\begin{document}
\ifthenelse{\boolean{showanswers}}{\title{Solution set for Week 1 HW}}{\title{Homework for Week 1 HW}}
\maketitle
\paragraph{Problem set 1.1: Comparing Rates}
\useproblem{comparing_rates2}
\end{document}
答案1
谢谢 Nicola,当我使用你的代码时,我得到了与你完全相同的输出。问题在于这段代码:
<<>>=
(4613/136670000)*100000
(1044/10544000)*100000
@
应编译为 R 代码,而不是简单的逐字文本。因此,此块的逐字包装器使其不会knitr
作为 R 代码传递给编译器进行处理。
[更新] - 这让我想到了 Rstudio 如何处理多个 *.Rnw 文件拼接在一起,我意识到使用的 \loadallproblemsprobsoln
不适用于 knitr,因此我必须使用
<<test_dataset,child="test_dataset.Rnw">>=
@
而是调用 test_dataset 中的代码,并将相应的
% !Rnw root = test.Rnw
<<set-parent, echo=FALSE, cache=FALSE>>=
set_parent('test.Rnw')
@
在儿童档案中。完全是 http://yihui.name/knitr/demo/child/