在这段代码中,我想自动隐藏第一行(在我的完整示例中,代码是从外部文件插入的)。
一个解决方案是使用 firstline=2,但是即使此行不是编码行,它也会隐藏第一行。
解决方案可能是使用morecomment=[is]{}{}
命令,但我不明白如何做到这一点。
\documentclass[a4paper,11pt]{article}
%compilation XeLaTeX
%\usepackage[tuenc]{fontspec}
%
%compilation LaTeX
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{listings}
\lstset{language=Python,morecomment=[is]{\# -*-}{-*-}}
\begin{document}
\begin{lstlisting}
# -*- coding: utf-8 -*- <- this line should no appear
Python code
\end{lstlisting}
\end{document}
答案1
这是一个与您的版本类似的版本,但带有分隔符# -*-
和^^M
。后者对应于行尾字符。幸运的是,行尾被输入处理器完全吃掉,因此输出中不会留下虚假的空行。
\documentclass[a4paper,11pt]{article}
\usepackage{listings}
\lstset{
language=Python,
frame=single,
numbers=left,
morecomment=[is]{\#\ -*-}{\^^M}
}
\begin{document}
\begin{lstlisting}
# -*- coding: utf-8 -*- <- this line should no appear
Python code
\end{lstlisting}
\begin{lstlisting}
# coding: utf-8 <- this line *should* appear
Python code
\end{lstlisting}
\end{document}