この環境を試験採点の文脈の中で再現できるようにしたいです。
私が見つけた手がかりの 1 つは、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のロゴのコードが取得されましたここ。