나는 시험 교정의 맥락에서 이 환경을 재현할 수 있기를 원합니다.
내가 찾은 단서 중 하나는 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
piton
Python 코드의 경우 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 로고의 코드가 사용되었습니다.여기.