我回到一个问题,它已经存在几个月了,但可能还不是最好的做法。
我使用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{}
?