针织和数字

针织和数字

我回到一个问题,它已经存在几个月了,但可能还不是最好的做法。

我使用siunitx文档中的包以及knitr编译我的 R 块。据我了解,它的行为knitr将输出整数并将其视为普通字符,同时将其加倍到环境中\ensuremath{}

然后

\documentclass{article}

\begin{document}

Integer:
\Sexpr{14}

Double:
\Sexpr{-1.2324234}


\end{document}

将被编织为

\documentclass{article}

\begin{document}

Integer:
14

Double:
\ensuremath{-1.2324}


\end{document}

根据回答我回到我之前的问题(正在解决)如果我想将我的数字siunitx\num我需要将我的 R 块中的双精度值编译为字符的环境处理,那么\Sexpr{as.character(-1.2324234)}(或者\num{\Sexpr{as.character(-1.2324234)}}如果我想利用siunitx)它将被编织为-1.2324234。一切都很好。

但是我想知道是否有更好的方法来管理我的输出。首先,有时我不确定我的输出是整数还是双精度数;特别是当我的数据发生变化时,我可能会因为 1 变成了 1.1 而在整个代码中产生错误。其次,将所有内容包装起来的解决方案as.character()使我的代码更难阅读,特别是当我将所有内容包装到 中时num{}

然后我尝试了一下\renewcommand{\ensuremath}{\num},但我认为这不是一个好主意:

! Undefined control sequence.
\ensuremath ->\num 

l.61 \ensuremath
                {-1.2324}
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

是否有机会轻轻地要求knitr输出所有包装到的数字(整数和双精度数)\num{}

相关内容