在“Python”环境中删除框架

在“Python”环境中删除框架

我使用Python来自包的环境pythonhighlight来突出显示代码语法。但是,代码始终被框住。是否可以关闭代码周围的框架?

这是我的代码

\documentclass{article}
%some packages are loaded
\usepackage{pythonhighlight} %package to highlight the Python syntax

\begin{document}

\section{Python code}
\begin{python}
# Importing standard Qiskit libraries and configuring account
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit import execute, Aer, IBMQ
\end{python}
\end{document}

编译完成后页面如下:

在此处输入图片描述

我想摆脱代码周围的框架。

答案1

软件包pythonhilight看起来非常薄(而且毫无用处)listings,甚至没有文档。因此我建议你listings直接使用。

以下示例包含一些配置,您可以根据需要进行更改:

  • \lstset命令包含我一直在使用的 Python 语法高亮规则。
  • 在环境参数中lstlisting,删除numbers左侧删除行号的选项。
  • 删除frame删除框架的选项(这是您要求的)。
\documentclass{article}
\usepackage{xcolor}
\usepackage[procnames]{listings}

% Custom highlight rules for Python
\definecolor{keywords}{RGB}{255,0,90}
\definecolor{comments}{RGB}{0,0,113}
\definecolor{red}{RGB}{160,0,0}
\definecolor{green}{RGB}{0,150,0}
\lstset{language=Python, 
    basicstyle=\ttfamily\small, 
    keywordstyle=\color{keywords},
    commentstyle=\color{comments},
    stringstyle=\color{red},
    showstringspaces=false,
    identifierstyle=\color{green},
    procnamekeys={def,class},
    tabsize=4
}


\begin{document}

\section{Python code}

\begin{lstlisting}[
    language=Python,
    frame=single,   %Remove this option
    numbers=left]
# Importing standard Qiskit libraries and configuring account
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit import execute, Aer, IBMQ
\end{lstlisting}
    
\end{document}

删除最后两个选项后,您将获得以下结果: 结果

答案2

目前包python提供的环境pythonhighlight定义为

\lstnewenvironment{python}[1][]{\lstset{style=mypython}}{}

看起来有问题:这个环境接受一个可选参数但从未使用过。请注意样式mypython包含frame=trbl,这是代码周围出现框架的原因。

我认为预期的定义应该是

\lstnewenvironment{python}[1][]{\lstset{style=mypython,#1}}{}

一个直接的解决方案是重新定义lst-environment python,但实际上更难,因为listings没有提供重新定义环境的方法。因此,更简单的选择是类似地定义一个新的lst-environment ,并使用新名称:

\lstnewenvironment{pythonx.y.z}[1][]{\lstset{style=mypython,#1}}{} % just for example

\begin{pythonx.y.z}[frame=none]
<python code>
\end{pythonx.y.z}

\lstrenewenvironment下面是一个尝试提供然后重新定义环境的示例python

\documentclass{article}
%some packages are loaded
\usepackage{pythonhighlight} %package to highlight the Python syntax

\makeatletter
\lst@UserCommand\lstrenewenvironment#1#2#{%
  \@ifundefined{#1}%
    {\PackageError{Listings}{Environment `#1' undefined}\@eha
     \@gobbletwo}\relax
  \expandafter\let\csname#1\endcsname\relax
  \expandafter\let\csname#1@\endcsname\relax
  \expandafter\let\csname end#1\endcsname\relax
  \let\lst@arg\@empty
  \lst@XConvert{#1}\@nil
  \expandafter\lstnewenvironment@\lst@arg{#1}{#2}}

\lstrenewenvironment{python}[1][]{\lstset{style=mypython,#1}}{}
\makeatother

\begin{document}
\section{Python code}
\begin{python}[frame=none]
# Importing standard Qiskit libraries and configuring account
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit import execute, Aer, IBMQ
\end{python}
\end{document}

在此处输入图片描述

相关内容