2013-02-05 6 views
6

मेरे पास कोड कोड में एक रैखिक मॉडल है जिसे मैं लाटेक्स में अच्छी तरह प्रदर्शित करना चाहता हूं। मॉडल कॉल मानक रूप को टिल्ड के साथ लेता है ~ जो लाटेक्स में बहुत अधिक टाइपसेट प्राप्त करता है।सुंदर tilde ~ kn chit के साथ आर खंड से?

\documentclass{article} 
\begin{document} 
<<>>= 
lm(Sepal.Width ~ Sepal.Length, data = iris) 
@ 
\end{document} 

कोड knitr::knit(mwe.Rnw) बुना हुआ है और फिर pdflatex के माध्यम से चलाते हैं।

लाइटिक्स में अच्छे टिल्ड्स बनाना बहुत परेशान है और उन्हें बनाने के लिए knitr प्राप्त करना पूरी तरह से आसान, आसान नहीं लगता है। knit द्वारा उत्पादित .tex फ़ाइल का एक निरीक्षण से पता चलता है कि कोड को तीन वातावरण में रखा गया है, जिनमें से \begin{alltt} ... \end{alltt} दिलचस्प है। लेकिन पैकेज alltt विशेष वर्णों के विशेष टाइपसेटिंग के लिए कोई त्वरित समाधान प्रदान नहीं करता है।

उत्तर

7

यह समाधान yihui's example on hooks, this post और मेरे दोस्त आरजे से प्रेरित है।

\documentclass{article} 
\usepackage{xspace} 
\newcommand{\mytilde}{\lower.80ex\hbox{\char`\~}\xspace} 
\begin{document} 
<<setup, include=FALSE>>= 
library(knitr) 
hook_source = knit_hooks$get('source') 
knit_hooks$set(source = function(x, options) { 
    txt = hook_source(x, options) 
    # extend the default source hook 
    gsub('~', '\\\\mytilde', txt) 
}) 
@ 
<<results = "hide">>= 
lm(Sepal.Width ~ Sepal.Length, data = iris) 
@ 
\end{document} 

यह सामान्य उपयोग के लिए \mytilde कमांड को भी परिभाषित करता है। उदाहरण के लिए, आर कोड के इन-लाइन उदाहरण: "in the form \texttt{response~\mytilde~predictors} ..."।

पैकेज xspace सख्ती से असफल नहीं है (जब तक आप नए कमांड में xspace हटाते हैं), लेकिन कमांड को उपयोग करने के लिए कमांड बनाता है।

+0

यह प्रतिबिंबित कोड के लिए अच्छा काम करता है, लेकिन परिणाम में टिल्ड अभी भी "बदसूरत" है। –

संबंधित मुद्दे