SASnRdisplay 与 Tufte 书籍类之间的交互

SASnRdisplay 与 Tufte 书籍类之间的交互

SASnRdisplay 是一个显示 SAS 和 R 代码及结果的包。它似乎与 Tufte 图书类有一些不良交互。下面的代码产生了非常奇怪的文本(带有各种重音符号的字母),而不是表示重要性的 * 周围的单引号。

如果我删除重音符号周围的引号,它就能正常运行,但是我会有很多这样的表格,手动删除它们会很累人而且容易出错。

如果我用文章文档类运行相同的代码,它就能正常运行,即使带有引号。

欢迎提出以下建议:a) 使其按原样正常运行,或 b) 自动删除。

梅威瑟:

\documentclass[nobib]{tufte-book} % Use the tufte-book class which in turn uses the tufte-common class
\usepackage{listings} % For display code listings
\usepackage[english]{SASnRdisplay}
%\usepackage{microtype} % Improves character and word spacing

\begin{document}


      \begin{Routput}
      Call: lm(formula = y ~ x)

       Residuals:
            Min       1Q   Median       3Q      Max
       -28.8626  -6.1401   0.0236   5.8645  29.8774

       Coefficients:
                   Estimate Std. Error t value Pr(>|t|)
       (Intercept)   0.3715     1.0498   0.354  0.72416
       x             2.7392     1.0378   2.639  0.00966 **
       ---
       Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

       Residual standard error: 10.37 on 98 degrees of freedom
       Multiple R-squared:  0.06637,    Adjusted R-squared:  0.05685
       F-statistic: 6.967 on 1 and 98 DF,  p-value: 0.009661
       \end{Routput}

\end{document}

答案1

SASnRdisplay是基于该listings包构建的。该包只能处理单字节输入,因此不能处理 UTF8(2 字节)。

如果您只需要支持几个非 ascii 字符,那么可以使用一些技巧literate,即指定 UTF8 输入和该字符的特定 TeX 输出的选项。

在这种情况下,utf8 引号就是问题所在。

这有效:

\documentclass[nobib]{tufte-book} % Use the tufte-book class which in turn uses the tufte-common class
\usepackage{listings} % For display code listings
\usepackage[english]{SASnRdisplay}
%\usepackage{microtype} % Improves character and word spacing


\lstdefinestyle{r-output-user}{
   literate={‘}{{`}}1
            {’}{{'}}1
}


\begin{document}

      \begin{Routput}
      Call: lm(formula = y ~ x)

       Residuals:
            Min       1Q   Median       3Q      Max
       -28.8626  -6.1401   0.0236   5.8645  29.8774

       Coefficients:
                   Estimate Std. Error t value Pr(>|t|)
       (Intercept)   0.3715     1.0498   0.354  0.72416
       x             2.7392     1.0378   2.639  0.00966 **
       ---
       Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

       Residual standard error: 10.37 on 98 degrees of freedom
       Multiple R-squared:  0.06637,    Adjusted R-squared:  0.05685
       F-statistic: 6.967 on 1 and 98 DF,  p-value: 0.009661
       \end{Routput}

\end{document}

答案2

对于 R 来说,至少有一种替代方法是使用knitr。额外好处:你不需要处理结果,只需要处理源代码:

\documentclass[nobib]{tufte-book}
\begin{document}
{\centering R oputput\par\small
<<echo=F,comment=NA, background="#EEFFFF" >>=
x <- rnorm(100,6,9)
y <- rnorm(100,3,1)
summary(lm(x~y))
@
}
\end{document}

姆韦

答案3

评论太长了。

\documentclass{tufte-book}
\usepackage[english]{SASnRdisplay}

\begin{document}

\begin{Routput}
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
\end{Routput}

\end{document}

在我的系统上(使用 LuaTeX 编译)导致:

在此处输入图片描述

  1. 你的输出是什么样的?
  2. \usepackage[???]{inputenc}在真实代码中使用吗?

相关内容