plant - latex tutorial




LaTeX شفرة المصدر قائمة مثل في الكتب المهنية (6)

كيف يجب أن تظهر قائمة شفرة مصدر اللاتكس لإنتاج مخرجات مثل في الكتب المعروفة ، على سبيل المثال واحدة للإطار الربيع؟ لقد حاولت مع حزمة قوائم اللاتكس ولكن لم يكن قادرا على إنتاج شيء بدا لطيفا مثل واحد أدناه. لذلك ، أنا مهتم في المقام الأول بتعليمات التنسيق لإنتاج شيء مثل العينة أدناه (من فصل عينة مانينغ عن Spring in Action ):

EDIT مع مساعدة خاصة من Tormod Fjeldskår هنا مقتطف كامل لإنتاج الشكل المطلوب:

 \usepackage{listings}
  \usepackage{courier}
 \lstset{
         basicstyle=\footnotesize\ttfamily, % Standardschrift
         %numbers=left,               % Ort der Zeilennummern
         numberstyle=\tiny,          % Stil der Zeilennummern
         %stepnumber=2,               % Abstand zwischen den Zeilennummern
         numbersep=5pt,              % Abstand der Nummern zum Text
         tabsize=2,                  % Groesse von Tabs
         extendedchars=true,         %
         breaklines=true,            % Zeilen werden Umgebrochen
         keywordstyle=\color{red},
            frame=b,         
 %        keywordstyle=[1]\textbf,    % Stil der Keywords
 %        keywordstyle=[2]\textbf,    %
 %        keywordstyle=[3]\textbf,    %
 %        keywordstyle=[4]\textbf,   \sqrt{\sqrt{}} %
         stringstyle=\color{white}\ttfamily, % Farbe der String
         showspaces=false,           % Leerzeichen anzeigen ?
         showtabs=false,             % Tabs anzeigen ?
         xleftmargin=17pt,
         framexleftmargin=17pt,
         framexrightmargin=5pt,
         framexbottommargin=4pt,
         %backgroundcolor=\color{lightgray},
         showstringspaces=false      % Leerzeichen in Strings anzeigen ?        
 }
 \lstloadlanguages{% Check Dokumentation for further languages ...
         %[Visual]Basic
         %Pascal
         %C
         %C++
         %XML
         %HTML
         Java
 }
    %\DeclareCaptionFont{blue}{\color{blue}} 

  %\captionsetup[lstlisting]{singlelinecheck=false, labelfont={blue}, textfont={blue}}
  \usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}

استخدمها مع هذا في وثيقتك:

\lstinputlisting[label=samplecode,caption=A sample]{sourceCode/HelloWorld.java}

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

$ pip install Pygments

مثال في LaTeX:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage{minted}

\begin{document}
\begin{minted}{python}
import numpy as np

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #to become the incidence matrix
    VT = np.zeros((n*m,1), int)  #dummy variable

    #compute the bitwise xor matrix
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1) 

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;

                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)

                VT = np.zeros((n*m,1), int)

    return M
\end{minted}
\end{document}

مما يؤدي إلى:

تحتاج إلى استخدام العلامة -shell-escape مع الأمر pdflatex.

لمزيد من المعلومات: https://www.sharelatex.com/learn/Code_Highlighting_with_minted


ألقِ نظرة على حزمة algorithms ، خاصةً بيئة algorithm .


جرب على حزمة listings . إليك مثال على ما استخدمته منذ بعض الوقت في الحصول على قائمة Java ملونة:

\usepackage{listings}

[...]

\lstset{language=Java,captionpos=b,tabsize=3,frame=lines,keywordstyle=\color{blue},commentstyle=\color{darkgreen},stringstyle=\color{red},numbers=left,numberstyle=\tiny,numbersep=5pt,breaklines=true,showstringspaces=false,basicstyle=\footnotesize,emph={label}}

[...]

\begin{lstlisting}
public void here() {
    goes().the().code()
}

[...]

\end{lstlisting}

قد ترغب في تخصيص ذلك. هناك العديد من المراجع لحزمة القوائم. مجرد جوجل لهم.


لرمز R أنا أستخدم

\usepackage{listings}
\lstset{
language=R,
basicstyle=\scriptsize\ttfamily,
commentstyle=\ttfamily\color{gray},
numbers=left,
numberstyle=\ttfamily\color{gray}\footnotesize,
stepnumber=1,
numbersep=5pt,
backgroundcolor=\color{white},
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
tabsize=2,
captionpos=b,
breaklines=true,
breakatwhitespace=false,
title=\lstname,
escapeinside={},
keywordstyle={},
morekeywords={}
}

ويبدو بالضبط مثل هذا


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

جرّب إعداد خط ذي عرض ثابت بهذا:

\lstset{basicstyle=\ttfamily}

يبدو لي أن ما تريده حقًا هو تخصيص شكل التسميات التوضيحية. يتم ذلك بسهولة باستخدام حزمة caption . للحصول على إرشادات حول كيفية استخدام هذه الحزمة ، راجع الدليل (PDF) . ربما تحتاج إلى إنشاء تنسيق التسمية التوضيحية المخصص الخاص بك ، كما هو موضح في الفصل 4 في الدليل.

تحرير: اختبار مع MikTex:

\documentclass{report}

\usepackage{color}
\usepackage{xcolor}
\usepackage{listings}

\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}

% This concludes the preamble

\begin{document}

\begin{lstlisting}[label=some-code,caption=Some Code]
public void here() {
    goes().the().code()
}
\end{lstlisting}

\end{document}

نتيجة: