我使用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}