طباعة السلاسل الطويلة من النص اللاتكس / sweave
سؤال
في نهاية الاستطلاع الذي أجريته ، نمنح المجيبين صندوقًا مفتوحًا لإخبارنا بأي شيء لم نغطيه في الاستطلاع. وستمدد هذه التعليقات في كثير من الأحيان عدة صفحات. أنا على دراية بـ longtable
حزمة LaTex وهنا الحل الذي سخرت منه:
<<results = tex>>=
cat("\\begin{longtable}{p{14cm}}\n")
cat("\\hline\n")
write.table(toBePrinted, eol = "\\\\\n", col.names = FALSE)
cat("\\hline\n")
cat("\\end{longtable}")
@
على الرغم من أن هذا الحل يعمل تقنيًا ، إلا أنه لا يبدو مصقولًا بشكل رهيب ويجب تحسينه. لدي سؤالان ذوو الصلة:
- نصائح للصرف الصحي النصية لإخراج sweave الذي يجب معالجته كـ
tex
. على سبيل المثال ، إذا قال شخص ماYour survey is awesome & I would take more surveys for $$$ 100% of the time!
الشخصيات الخاصة&, $, %
تربى Havok عند المعالجة من خلالLaTeX
. هل هناك شيء أكثر كفاءة من قائمةgsub
دعوات لاستبدال الشخصيات المخالفة بشيء خيري؟ - اقتراحات لطريقة أفضل لطباعة هذه التعليقات الطويلة مع
Sweave & LaTeX
.
المحلول
يمكنك إلقاء نظرة على الحزمة Xtable لإنشاء طاولات اللاتكس ، لكن هذا لا يعمل بشكل جيد مع Longtable على ما أعتقد. بدلاً من ذلك ، انظر إلى الوظيفة اللاتكس في الحزمة HMISC ، والتي لها خيار "طويل القابل" ويسمح بمزيد من التحكم في الإخراج.
لإضافة مائلة للشخصيات الخاصة كما هو مستخدم في LaTex ، يمكنك أن تفعل شيئًا كهذا:
add.slash <- function(x){
where <- embed(c(1,gregexpr("[&#$%]",x)[[1]],nchar(x)+1),dim=2)
out <- paste(apply(where,1,function(y){substr(x,y[2],y[1]-1)}),collapse="\\")
return(out)
}
> x <- "I print $ and % and & and # and . and ! and ,"
> cat(add.slash(x),"\n")
I print \$ and \% and \& and \# and . and ! and ,
تحرير: استخدام [[: premint:] خاطئ ، وهذا يغير أيضًا علامات الترقيم وما إلى ذلك. تم تصحيح الكود. التراجع الخلفي هي حقا مشكلة.