سؤال

وأنا أعمل على وثيقة لاتكس التي تتطلب التنضيد كميات كبيرة من التعليمات البرمجية المصدر الثعبان. أنا باستخدام pygments (وحدة الثعبان، وليس التجريبي على الانترنت) لتغليف هذا الثعبان في لاتكس، الذي يعمل بشكل جيد إلا في حالة خطوط فردية طويلة - التي لا تزال ببساطة خارج الصفحة. ويمكنني أن التفاف يدويا هذه السطور إلا أن هذا لا يبدو أن أنيقة حل بالنسبة لي، وأنا أفضل قضاء وقت الحيرة حول حلول المؤتمتة مجنون من التركيز على المهام المتكررة.

ما أود هو وسيلة للمعالجة شفرة المصدر الثعبان إلى التفاف خطوط إلى أقصى طول معين الطابع، مع الحفاظ على وظيفة. لقد كان اللعب حولها مع بعض الثعبان والأقرب جئت يتم إدخال \\\n في المسافات الأخيرة قبل الحد الأقصى لطول خط - ولكن بطبيعة الحال، إذا كان هذا ينتهي في سلاسل والتعليقات، والأمور تسوء. بكل صراحة، أنا لست متأكدا من كيفية التعامل مع هذه المشكلة.

وهكذا، هو أي شخص على علم وحدة نمطية أو الأداة التي يمكن معالجة كود المصدر بحيث لا خطوط تتجاوز مدة معينة - أو على الأقل وسيلة جيدة لبدء التوجه نحو الترميز شيء من هذا القبيل

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

المحلول

وقد ترغب في تمديد النهج الحالي قليلا، ولكن باستخدام tokenize وحدة من المكتبة القياسية لتحديد مكان وضع فواصل الخط الخاص بك. وبهذه الطريقة يمكنك رؤية الرموز الفعلية (COMMENT، STRING، وما إلى ذلك) من التعليمات البرمجية المصدر بدلا من مجرد كلمات مفصولة بيضاء.

وهنا مثال قصيرة ما tokenize يمكنك القيام بها:

>>> from cStringIO import StringIO
>>> from tokenize import tokenize
>>> 
>>> python_code = '''
... def foo(): # This is a comment
...     print 'foo'
... '''
>>> 
>>> fp = StringIO(python_code)
>>> 
>>> tokenize(fp.readline)
1,0-1,1:    NL  '\n'
2,0-2,3:    NAME    'def'
2,4-2,7:    NAME    'foo'
2,7-2,8:    OP  '('
2,8-2,9:    OP  ')'
2,9-2,10:   OP  ':'
2,11-2,30:  COMMENT '# This is a comment'
2,30-2,31:  NEWLINE '\n'
3,0-3,4:    INDENT  '    '
3,4-3,9:    NAME    'print'
3,10-3,15:  STRING  "'foo'"
3,15-3,16:  NEWLINE '\n'
4,0-4,0:    DEDENT  ''
4,0-4,0:    ENDMARKER   ''

نصائح أخرى

واستخدام حزمة listings في اللثي لادخال شفرة المصدر. يفعل تسليط الضوء على بناء الجملة، بفواصل وآخرون.

ضع ما يلي في ديباجة الخاص بك:

\usepackage{listings}
%\lstloadlanguages{Python} # Load only these languages
\newcommand{\MyHookSign}{\hbox{\ensuremath\hookleftarrow}}

\lstset{
    % Language
    language=Python,
    % Basic setup
    %basicstyle=\footnotesize,
    basicstyle=\scriptsize,
    keywordstyle=\bfseries,
    commentstyle=,
    % Looks
    frame=single,
    % Linebreaks
    breaklines,
    prebreak={\space\MyHookSign},
    % Line numbering
    tabsize=4,
    stepnumber=5,
    numbers=left,
    firstnumber=1,
    %numberstyle=\scriptsize,
    numberstyle=\tiny,
    % Above and beyond ASCII!
    extendedchars=true
}

ومجموعة لديها ربط لرمز مضمنة، بما في ذلك ملفات كاملة، والتي تبين أنها الأرقام، ...

وأنا سوف تحقق أداة إعادة صياغة في محرر مثل نتبيانس.

عند إعادة جافا بشكل صحيح يحدد أطوال خطوط داخل وخارجها من التعليقات، إذا طبقت نفس خوارزمية لبيثون، انها ستعمل.

لجافا فإنه يسمح لك لتعيين أي عرض التفاف وحفنة من العوامل الأخرى. سأكون مندهشا جدا إذا لم تكن موجودة سواء مواطن أو البرنامج المساعد.

لا يمكن أن أقول على وجه اليقين فقط من الوصف، لكنه يستحق المحاولة:

http://www.netbeans.org/features/python/

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