修改后重现 Python/编程代码块

修改后重现 Python/编程代码块

我希望能够在考试批改的背景下重现这种环境。

我发现的一个线索是bclogo包的使用。

https://ctan.org/pkg/bclogo

但是,我想包含这里所见的突出显示的 Python 代码,并且我想包含缩进线并根据范围(缩进级别)为它们着色。

在此处输入图片描述

为算法的线条着色

在此处输入图片描述

彩色算法的代码

\pdfoutput=1
\usepackage[linesnumbered,titlenumbered,ruled,vlined,resetcount,algosection]{algorithm2e}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{color}

\begin{document}
\title{MWE}
\maketitle
\section{Algorithm}

\begin{algorithm}
    \caption{3-SAT in polynomial time}
    \label{alg:hs}
    \DontPrintSemicolon
    \KwIn{List of clauses}
    \KwOut{The clauses are satisfiable}
    \SetKwProg{Fn}{Function}{ is}{end}
    \Fn{\textsc{IsSatisfiable}($C$)} {
    
        \color{red} %<- my best attempt
        $k\gets 0$ \;
        \For {$i = 1$ \bf{to} $|C|$}
        {
            $c_i \gets $ $i$-th clause \;
            $L \gets$ list of literals of $c_i$ \;
            $k\gets f(k, L)$ \tcp{a miracle in polynomial time}
        }
        \color{black} %<- go back to color black
        
        \If {$k$ is even} {
            \Return true
        }
        \Else {
            \Return false
        }
        
    }
\end{algorithm}

\end{document}

答案1

对于 Python 代码,这里有一个带有包的解决方案piton,它需要使用 LuaLaTeX(但不需要外部程序)。

\documentclass{article}
\usepackage{geometry}
\usepackage{tikz}
\usepackage{piton}
\usepackage{lipsum}

\definecolor{bleupyth}{rgb}{0.2157,0.436,0.6172}
\definecolor{jaunpyth}{rgb}{1,0.8157,0.25}

\newcommand{\PythonLogo}{
\begin{tikzpicture}[scale=0.004]
  \begin{scope}[,yscale=-1]
    \fill[bleupyth] (41.1090,0.0000) .. controls (20.0860,0.0000) and
    (21.3980,9.1170) ..  (21.3980,9.1170) -- (21.4220,18.5620) --
    (41.4840,18.5620) -- (41.4840,21.3980) -- (13.4530,21.3980)
    .. controls (13.4530,21.3980) and (0.0000,19.8710)
    .. (0.0000,41.0860) .. controls (0.0000,62.3010) and
    (11.7420,61.5470) .. (11.7420,61.5470) -- (18.7500,61.5470) --
    (18.7500,51.7030) .. controls (18.7500,51.7030) and
    (18.3710,39.9610) ..  (30.3050,39.9610) .. controls
    (42.2380,39.9610) and (50.2030,39.9610) ..  (50.2030,39.9610)
    .. controls (50.2030,39.9610) and (61.3830,40.1410) ..
    (61.3830,29.1560) .. controls (61.3830,18.1720) and
    (61.3830,10.9920) ..  (61.3830,10.9920) .. controls
    (61.3830,10.9920) and (63.0820,0.0000) ..  (41.1090,0.0000) --
    cycle(30.0470,6.3520) .. controls (32.0430,6.3520) and
    (33.6560,7.9650) .. (33.6560,9.9610) .. controls (33.6560,11.9570)
    and (32.0430,13.5700) .. (30.0470,13.5700) .. controls
    (28.0510,13.5700) and (26.4380,11.9570) .. (26.4380,9.9610)
    .. controls (26.4380,7.9650) and (28.0510,6.3520)
    .. (30.0470,6.3520) -- cycle;
  \end{scope}

  \begin{scope}[shift={(81,-81)},xscale=-1]
    \fill[jaunpyth] (41.1090,0.0000) .. controls (20.0860,0.0000) and
    (21.3980,9.1170) ..  (21.3980,9.1170) -- (21.4220,18.5620) --
    (41.4840,18.5620) -- (41.4840,21.3980) -- (13.4530,21.3980)
    .. controls (13.4530,21.3980) and (0.0000,19.8710)
    .. (0.0000,41.0860) .. controls (0.0000,62.3010) and
    (11.7420,61.5470) .. (11.7420,61.5470) -- (18.7500,61.5470) --
    (18.7500,51.7030) .. controls (18.7500,51.7030) and
    (18.3710,39.9610) ..  (30.3050,39.9610) .. controls
    (42.2380,39.9610) and (50.2030,39.9610) ..  (50.2030,39.9610)
    .. controls (50.2030,39.9610) and (61.3830,40.1410) ..
    (61.3830,29.1560) .. controls (61.3830,18.1720) and
    (61.3830,10.9920) ..  (61.3830,10.9920) .. controls
    (61.3830,10.9920) and (63.0820,0.0000) ..  (41.1090,0.0000) --
    cycle(30.0470,6.3520) .. controls (32.0430,6.3520) and
    (33.6560,7.9650) .. (33.6560,9.9610) .. controls (33.6560,11.9570)
    and (32.0430,13.5700) .. (30.0470,13.5700) .. controls
    (28.0510,13.5700) and (26.4380,11.9570) .. (26.4380,9.9610)
    .. controls (26.4380,7.9650) and (28.0510,6.3520)
    .. (30.0470,6.3520) -- cycle;
  \end{scope}
\end{tikzpicture}} 

\ExplSyntaxOn
\NewPitonEnvironment{Python}{}
  { 
    \noindent \PythonLogo\newline \nobreak
    \leavevmode 
    \hspace* { 7.4 pt } 
    \vrule width 1pt 
    \hspace* { 5 pt } 
    \dim_set:Nn \l_tmpa_dim { \linewidth - 12.4 pt }
    \begin { minipage } { \l_tmpa_dim }
  }
  { \end { minipage } }
\ExplSyntaxOff

\begin{document}

\lipsum[1]

\begin{Python}
class PCFS(StratégieOrdonnancement):
    def elire(sef):
        p = min(selp.fp.data, key = lambda p : p.taP)
        if p.taP <= self.horlogie:
            p.changerEtat("Elu")
\end{Python}

\end{document}

Python 徽标代码已被占用这里

上述代码的输出

相关内容