سؤال

في نهاية الاستطلاع الذي أجريته ، نمنح المجيبين صندوقًا مفتوحًا لإخبارنا بأي شيء لم نغطيه في الاستطلاع. وستمدد هذه التعليقات في كثير من الأحيان عدة صفحات. أنا على دراية بـ 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}")
@

على الرغم من أن هذا الحل يعمل تقنيًا ، إلا أنه لا يبدو مصقولًا بشكل رهيب ويجب تحسينه. لدي سؤالان ذوو الصلة:

  1. نصائح للصرف الصحي النصية لإخراج sweave الذي يجب معالجته كـ tex. على سبيل المثال ، إذا قال شخص ما Your survey is awesome & I would take more surveys for $$$ 100% of the time! الشخصيات الخاصة &, $, % تربى Havok عند المعالجة من خلال LaTeX. هل هناك شيء أكثر كفاءة من قائمة gsub دعوات لاستبدال الشخصيات المخالفة بشيء خيري؟
  2. اقتراحات لطريقة أفضل لطباعة هذه التعليقات الطويلة مع 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:] خاطئ ، وهذا يغير أيضًا علامات الترقيم وما إلى ذلك. تم تصحيح الكود. التراجع الخلفي هي حقا مشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top