Wie stellt man einen Python-Codeausschnitt effizient in LaTeX dar?

Wie stellt man einen Python-Codeausschnitt effizient in LaTeX dar?

Ich bin ziemlich neu bei LaTeX und weiß nicht, wie ich einen einfachen Python-Code wie diesen professionell in LaTeX darstellen kann. Ihre Lösungen und Beispiele werden mir beim Lernen und Weiterkommen sehr helfen.

if transactions: Transaction.create_transactions() # if transactions = "true"
node.generate_emptyState() # empty state for all nodes
S.initial_events() # initiate initial events to start with

while not queue.isEmpty() and clock <= targetTime:
    next_e = queue.get_next_event()
    clock = next_e.time # move clock to the time of the event
    Event.execute_event(next_e)
    Queue.remove_event(next_e)

print results

Antwort1

So mache ich es gerne. Natürlich können Sie Farben, Schriftgrößen, Ränder usw. ändern.

Du brauchstPygmentebenutzen minted.

Bildbeschreibung hier eingeben

MWE

\documentclass[11pt,a4paper]{report}
\usepackage{tcolorbox}
\tcbuselibrary{minted,breakable,xparse,skins}

\definecolor{bg}{gray}{0.95}
\DeclareTCBListing{mintedbox}{O{}m!O{}}{%
  breakable=true,
  listing engine=minted,
  listing only,
  minted language=#2,
  minted style=default,
  minted options={%
    linenos,
    gobble=0,
    breaklines=true,
    breakafter=,,
    fontsize=\small,
    numbersep=8pt,
    #1},
  boxsep=0pt,
  left skip=0pt,
  right skip=0pt,
  left=25pt,
  right=0pt,
  top=3pt,
  bottom=3pt,
  arc=5pt,
  leftrule=0pt,
  rightrule=0pt,
  bottomrule=2pt,
  toprule=2pt,
  colback=bg,
  colframe=orange!70,
  enhanced,
  overlay={%
    \begin{tcbclipinterior}
    \fill[orange!20!white] (frame.south west) rectangle ([xshift=20pt]frame.north west);
    \end{tcbclipinterior}},
  #3}
\begin{document}
\begin{mintedbox}{python}
if transactions: Transaction.create_transactions() # if transactions = "true"
node.generate_emptyState() # empty state for all nodes
S.initial_events() # initiate initial events to start with

while not queue.isEmpty() and clock <= targetTime:
      next_e = queue.get_next_event()
      clock = next_e.time # move clock to the time of the event
      Event.execute_event(next_e)
      Queue.remove_event(next_e)

print results
\end{mintedbox}

\end{document}

Antwort2

Ich bevorzuge minted, aber Sie können auch verwenden pythonhighlight, was ein schönes Frontend für das listings-Paket ist:

\documentclass{article}
\usepackage{pythonhighlight}

\begin{document}
\begin{python}
if transactions: Transaction.create_transactions() # if transactions = "true"
node.generate_emptyState() # empty state for all nodes
S.initial_events() # initiate initial events to start with

while not queue.isEmpty() and clock <= targetTime:
      next_e = queue.get_next_event()
      clock = next_e.time # move clock to the time of the event
      Event.execute_event(next_e)
      Queue.remove_event(next_e)

print results
\end{python}
\end{document}

Bildbeschreibung hier eingeben

listingsEine weitere Möglichkeit , ohne viel Aufwand schöne Ergebnisse zu erzielen, ist diesolarzied-Paket:

\documentclass{article}
\usepackage{solarized-light}

\begin{document}
\begin{lstlisting}[language=python]
if transactions: Transaction.create_transactions() # if transactions = "true"
node.generate_emptyState() # empty state for all nodes
S.initial_events() # initiate initial events to start with

while not queue.isEmpty() and clock <= targetTime:
      next_e = queue.get_next_event()
      clock = next_e.time # move clock to the time of the event
      Event.execute_event(next_e)
      Queue.remove_event(next_e)

print results
\end{lstlisting}
\end{document}

Bildbeschreibung hier eingeben

Antwort3

Sie können {Piton}die Erweiterung verwenden piton. Sie verwendet die Lua-Bibliothek LPEG von LuaLaTeX (und erfordert LuaLaTeX). Es ist kein externes Programm erforderlich.

\documentclass{article}
\usepackage{xcolor}
\usepackage{piton}

\begin{document}

\begin{Piton}
from math import pi

def arctan(x,n=10):
   """Compute the mathematical value of arctan(x)

   n is the number of terms in the sum
   """
    if x < 0:
        return -arctan(-x) # recursive call
    elif x > 1: 
        return pi/2 - arctan(1/x) 
        #> (we have used that $\arctan(x)+\arctan(1/x)=\frac{\pi}{2}$ for $x>0$)
    else: 
        s = 0
        for k in range(n):
            s += (-1)**k/(2*k+1)*x**(2*k+1)
        return s 
\end{Piton}

\end{document}

Ausgabe des obigen Codes

Eine Verwendung in Verbindung mit ist möglich tcolorbox.

\documentclass{article}
\usepackage{xcolor}
\usepackage{piton}
\usepackage{tcolorbox}

\NewPitonEnvironment{Python}{}
  {\begin{tcolorbox}}
  {\end{tcolorbox}}

\begin{document}

\begin{Python}
from math import pi

def arctan(x,n=10):
   """Compute the mathematical value of arctan(x)

   n is the number of terms in the sum
   """
    if x < 0:
        return -arctan(-x) # recursive call
    elif x > 1: 
        return pi/2 - arctan(1/x) 
        #> (we have used that $\arctan(x)+\arctan(1/x)=\frac{\pi}{2}$ for $x>0$)
    else: 
        s = 0
        for k in range(n):
            s += (-1)**k/(2*k+1)*x**(2*k+1)
        return s 
\end{Python}

\end{document}

Ausgabe des zweiten Codes

verwandte Informationen