تسليط الضوء على بناء الجملة للغات متعددة في نفس الملف:ستاتويف/ساس/لاتيكس

StackOverflow https://stackoverflow.com/questions/841831

سؤال

أنا أستخدم StatWeave لتشغيل كود SAS من داخل ملفات LaTeX.أود أن أكون قادرًا على فتح ملف في محرر نصوص وعرض مستند LaTeX الرئيسي مع تمييز بناء جملة LaTeX و"أجزاء كود" SAS المضمنة مع تمييز بناء جملة SAS.("أجزاء التعليمات البرمجية" هي تعليمات برمجية حقيقية (عاملة)، وليس فقط للعرض، لذلك لا أعتقد أن حزمة قوائم LaTeX ستعمل.) أنا متأكد من أنه يجب أن تكون هناك طريقة للقيام بذلك باستخدام emacs، لكنني لا أفعل ذلك لا أعرف ما هو...في هذه المرحلة أنا منفتح على أي حل مع أي محرر.

تحديث 5 فبراير 2010:قررت أن أفضل طريقة هي التوقف عن محاولة استخدام StatWeave وSAS، وتعلم استخدام Sweave وR بدلاً من ذلك.أنا سعيد بتسليط الضوء على Sweave في Vim، ولكني أعرف أشخاصًا آخرين سعداء جدًا بـ ESS، لذا سأمضي قدمًا وأقبل هذه الإجابة حتى نتمكن من إغلاق هذا السؤال.

هل كانت مفيدة؟

المحلول

ولعل واحدة من الحلول على MultipleModes صفحة على إيماكس المعرفة تساعد. أيضا، دليل على Sweave يقول أن <لأ href = "HTTP : //ess.r-project.org/ "يختلط =" نوفولو noreferrer "> إيماكس يتحدث الاحصائيات يمكن التعامل مع الملفات Sweave، وذلك منذ StatWeave يبدو أن ما شابه ذلك، وربما كنت قد الإختراق ESS للتعامل مع هذه الملفات أيضا . ESS يبدو أن لديها بالفعل دعم SAS، وبالتالي فإن التغييرات المطلوبة قد لا تكون كبيرة جدا.

نصائح أخرى

هل سيكون خيارا ليس لديهم ساس الملفات مباشرة في التعليمات البرمجية ولكن استخدام '\ الإدخال' في حين أن؟ شيء واحد كثيرا ما تفعل مع أمثلة المصدر ل وضعها في عينات الفرعي / ثم استخدام "تسليط الضوء" لإنشاء ملفات اللثي التي يمكن تضمينها في الملف الرئيسي. وبهذه الطريقة يمكن تنفيذ في كل الملفات المصدر تم تغييرها إلى تحقق مما إذا كانت تعمل بشكل صحيح. ويمكن أن يتم (إعادة) جيل من قانون تكس من قبل شيل أو من جعل إذا كان مشروع أكبر. في معظم الحالات كان السيناريو generate_tex.sh بسيط يكفي لمشاريعي التي دعوت بعد أن كنت قد غيرت أي من العينات بلدي. محتويات يمكن أن يكون شيء من هذا القبيل

#!/bin/bash
highlight -L -f --wrap-simple *.css --outdir ../input/
highlight -L -f --wrap-simple *.html --outdir ../input/
highlight -L -f --wrap-simple *.php --outdir ../input/

ولمشروع شبكة الإنترنت. في ملف تكس الرئيسي ثم تشمل العينات باستخدام

\input{filename.css}

وUltaEdit قد عمل ولكن سيكون لديك لتفعل الكثير من الإعداد

إذا كنت تستخدم إكس إيماكس يمكنك استخدام mmmmode إلى تسليط الضوء على بناء الجملة. يمكنني استخدام ESS مع statweave ذلك الشخص أول إجابة لماذا لا يتم استخدام ESS إلى sybntax وتسليط الضوء على استخدام statweave للقيام بهذا العمل. I لكن لا تستخدم SAS لكن قد استخدمت الحسابية وR في نفس الملف وكلاهما عمل مع تسليط الضوء على تركيب الخاصة بهم.  (تتطلب "MMM واسطة) (تتطلب 'ط ط ط-فار)  (setq ط ط ط عالمي وضع "ربما) (setq ط ط ط-submode الزينة المستوى 1)

و(ط ط ط الوظيفة الإضافية مجموعة   '-احصائيات اللاتكس   "((ص العلامة      : submode ص وضع      : وجه ط ط ط-رمز submode وجه      : وضع محدد لا شيء      : الجبهة "تبدأ {RCODE}"      : عودة "نهاية {RCODE}"      : لموازنة الظهر (متخلف-شار -1)      : إدراج ((R R-صفر العلامة @ "\ تبدأ {RCODE}"؟     @ "\ ن" _ "\ ن" @ "\ نهاية {RCODE}" @))      )     (الثابتة العلامة      : submode STA-وضع      : وجه ط ط ط-رمز submode وجه      : وضع محدد لا شيء      : الجبهة "تبدأ {Statacode}"      : عودة "نهاية {Statacode}"      : لموازنة الظهر (متخلف-شار -1)      : إدراج ((S STATA العلامة صفر @ "\ تبدأ {Statacode}"     @ "\ ن" _ "\ ن" @ "\ نهاية {Statacode}" @))      )))

و(إضافة إلى قائمة "ط ط ط-وضع تحويلة الطبقات-alist        "(لا شيء" -swv.tex "لاتكس احصائيات))

وتحتاج فقط إلى تغيير SAS-وضع (على ما أظن إذا كان هذا هو ما يطلق عليه) ولدي في بلدي ملف latex.el (محملة امدا في init.el) ما يلي (المحلية-مجموعة المفتاح  [   (F1 السيطرة)]
 "(لامدا ()     (تفاعلية)     (إذا كان (سلسلة مباريات "\ .tex" العازلة ملف اسم)  (progn     (أبلاغ (ملف اسم ملف NAME1 ملف اسم-wihoutswv)       (setq ملف اسم (العازلة ملف اسم))       (setq الملفات NAME1 (ملف اسم-nondirectory ملف اسم))       (setq ملف اسم-wihoutswv (محل-التعبير العادي، في سلسلة "-swv" ""       ملف NAME1))       (setq ملف اسم-wihoutswv (استبدال-التعبير العادي، في سلسلة "\ .tex" ""       ملف اسم-wihoutswv))       (إذا كان (سلسلة مباريات "-swv \ .tex" العازلة ملف اسم)    (العثور علي الملفات الأخرى النافذة (CONCAT اسم ملف wihoutswv ".tex"))  (العثور علي الملفات الأخرى النافذة (CONCAT اسم ملف wihoutswv "-swv.tex"))  )       )     )       (الرسالة "أنت في اللاتكس الوضع وهذا ليس SWV ولا تكس الملف. لا يمكن فتح تكس المقابلة أو ملف sweave")  )))

و

و(وضع مفتاح العالمي [F1]
  "(لامدا ()      (تفاعلية)      (حفظ العازلة)      (إذا كان (سلسلة مباريات "-swv \ .tex" العازلة ملف اسم)   (progn     (تفاعلية)     (لاتكس واسطة)     ؛؛ (الخط قفل fontify عازلة)     (ميزان ويندوز)     (mylatex-حذف بادئة)     (حفظ العازلة)     (حفظ نافذة نزهة (التشغيل-statweave ملف الحالي)) . (mylatex نظيفة)     )        (إذا كان (سلسلة مباريات "\ .tex" العازلة ملف اسم)     (progn       (تفاعلية)       (لاتكس واسطة)       ؛ (الخط قفل fontify عازلة)       (ميزان ويندوز)       (افعل قوات الدفاع الشعبي)  . (mylatex نظيفة)       )   (الرسالة "هذه ليست إما تكس ولا ملف SWV وأنا لا أعرف ما يجب القيام به البعض من إنقاذ المخزن المؤقت للملف. هكذا فعلت")   ))      )

)

و(التشغيل-statweave ملف الحالي defun ()   "تنفيذ statweave على ملف -swv.tex وإطلاق يبدي لعرض الانتاج"   (تفاعلية)   (أبلاغ (ملف اسم ملف NAME1 ملف اسم-wihoutswv cmd1-شارع الوضع CMD2-شارع)   (setq ملف اسم (العازلة ملف اسم))   (setq الملفات NAME1 (ملف اسم-nondirectory ملف اسم))   (setq ملف اسم-wihoutswv (محل-التعبير العادي، في سلسلة "-swv \ .tex" "قوات الدفاع الشعبي" ملف NAME1)) ؛؛ (setq cmd1-شارع (CONCAT "statweave" ملف NAME1 "&& يبدي" ملف اسم-wihoutswv "&"))   (setq cmd1-شارع (CONCAT "statweave" ملف NAME1))   (setq CMD2-شارع (CONCAT "جلاء" ملف اسم-wihoutswv "&")) ؛؛ (شل الأوامر cmd1-شارع)   (setq الانتاج عازلة " swvoutput ")   (حفظ نافذة نزهة (وضع setq (شل الأوامر-cmd1 شارع الناتج العازلة)))   ؛؛ (مركز الرسالة) ؛؛ (أبلاغ (الوضع) ((cmd1-شارع قذيفة الأوامر الناتج العازلة))))) ))

ويبدو مروعا وأنا لست خبيرا ثغة لذلك أنا واثق من أن لديها الكثير من أوجه القصور لكنه يعمل.

يمكنك تجربة فئة StatReport LateX الجديدة التي تعمل إلى حد ما مثل Sweave، ولكن يتم تنفيذها بالكامل في LaTeX.

سير العمل:قم بتشغيل مرة واحدة واحصل على رمز SAS، قم بتشغيل هذا الرمز في SAS، قم بتشغيل laTeX مرة أخرى وقم بتضمين المخرجات.

أعتقد أنه يقوم بتلوين الكود (باستخدام فئة SASnRdisplay) إذا كنت أتذكر بشكل صحيح.

انظر ورقة هنا: http://support.sas.com/resources/papers/proceedings12/324-2012.pdfوCTAN لتوثيق الحزمة http://mirror.switch.ch/ftp/mirror/tex/macros/latex/contrib/statrep/statrep.pdf

وعلى dicuss استجابة جان ل: المشكلة لقد كان دائما مع ESS هي أن لا وظائف كافية ويدعم ويندوز (حيث أركض SAS).

وبناء على ذلك تمت Statweave ليس من المفيد بالنسبة لي على الإطلاق.

وهذه الأيام هناك هو نسخة لينكس SAS حتى أستطيع أن أتخيل التي يمكن أن تعمل على نحو أفضل.

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