我无法使以下操作正常工作:
\begin{minipage}
<<percentile, echo=FALSE>>=
your_rank <- percentile ## calculated earlier
rank_message <- ifelse(is.na(score), ' ', paste0("You are in the top ", your_rank, "% of participants."))
@
\begin{center}
\fbox{
\parbox{15cm}{\centering
\textbf{\Sexpr{rank_message}} \\
} % End parbox
} % End fbox
\end{center}
\end{minipage}
我收到错误:
File ended when scanning use of \fbox
然后,如果我把ie放在\
前面%
paste0("You are in the top ", your_rank, "\% of participants.")
然后 R 部分给了我一个错误:
Error in eval(parse_only(code), envir = envir) :
我怎样才能解决这个问题?
更新 - 将 R 块放入组中不起作用。这是一个有效示例 - 删除了百分比符号:
\documentclass[a4paper]{article}
\usepackage{fullpage}
\usepackage{pdflscape} % landscape format
\begin{document}
\begin{landscape}
\begin{minipage}[t][5cm]{0.6\linewidth}
\begingroup\catcode`\%=12
<<percentile, echo=FALSE>>=
score <- 10
your_rank <- 30
rank_message <- ifelse(is.na(score), ' ', paste0("You are in the top ", your_rank, " of participants"))
@
\endgroup
\begin{center}
\fbox{
\parbox{15cm}{\centering
\textbf{\Sexpr{rank_message}} \\
} % End parbox
} % End fbox
\end{center}
\end{minipage}
\end{landscape}
\end{document}
更新:罗斯的评论起了作用。谢谢罗斯。
答案1
引用谢玉海的书《使用 R 和 knitr 的动态文档》(2015 年第 2 版第 1 页):
动态文档背后的基本思想源自文学编程,这是由 Donald Knuth (Knuth, 1984) 构想的一种编程范式。最初的想法主要用于编写软件:将源代码和文档混合在一起;我们可以提取源代码(称为 tangle),也可以执行代码以获取编译结果(称为 weave)。动态文档与计算机程序并没有完全不同:对于动态文档,我们需要运行软件包将我们的想法(通常以源代码的形式实现)编译为数字或图形输出,并将输出插入到我们的文字写作中(如文档)。
这个问题是问,当 R 代码中的一行包含 % 符号时,如何将我的 R 代码的输出编织到我的 LaTeX 文档中?
此代码需要在编辑器 RStudio 中运行,该编辑器提供编译代码的功能。编译的结果是将 R 代码及其输出编织到 LaTeX 文档中。
<<>>=
R 代码在和之间分隔@
。OP 问题的解决方案是 % 必须转义两次,即 \\%。第一个反斜杠保留第二个反斜杠,后者需要写入编译生成的 TeX 文件中。因此,在编译时,R 字符串:
paste0("You are in the top ", your_rank, "\\% of participants"))
将会把以下字符串写入 TeX 文件:
You are in the top 30\% of participants
pdfLaTeX
当 TeX 文件由或编译时XeLaTeX
,它可以正确编译。
这是完整的代码:
\documentclass[a4paper]{article}
%\usepackage{fullpage}
\usepackage{pdflscape} % landscape format
\usepackage[utf8]{inputenc}
\pagestyle{empty}
\begin{document}
\begin{landscape}
\begin{minipage}[t][5cm]{0.6\linewidth}
%\begingroup\catcode`\%=12
<<percentile, echo=FALSE>>=
score <- 10
your_rank <- 30
rank_message <- ifelse(is.na(score), ' ', paste0("You are in the top ", your_rank, "\\% of participants"))
@
% \endgroup
\begin{center}
\fbox{
\parbox{15cm}{\centering
\textbf{\Sexpr{rank_message}} \\
} % End parbox
} % End fbox
\end{center}
\end{minipage}
\end{landscape}
\end{document}
这是输出: