奇怪的行为 相同的代码但在不同的章节

奇怪的行为 相同的代码但在不同的章节

我刚刚遇到一个无法解决的问题。

我在第 2 章中使用了此代码并且一切运行正常:

\begin{ttfamily}
\begin{lstlisting}
<?php
$template = 'blue.php';
    if ( is_set( $_COOKIE['TEMPLATE'] ) )
    $template = $_COOKIE['TEMPLATE'];
include("/home/users/phpguru/templates/". $template );
?>
\end{lstlisting}
\end{ttfamily}

然后我实际上在第 4 章中使用了相同的代码,但令人惊讶的是,我得到了一个带框(或框架)的结果:

\begin{ttfamily}
\begin{lstlisting}
// connect to the database
$conn = mysql_connect("localhost","username","password");
// dynamically build the sql statement with the input
$query = "SELECT userid FROM CMSUsers WHERE user = '$_GET["user"]' " .
"AND password = '$_GET["password"]'";
// execute the query against the database
$result = mysql_query($query);
// check to see how many rows were returned from the database
$rowcount = mysql_num_rows($result);
// if a row is returned then the credentials must be valid, so
// forward the user to the admin pages
if ($rowcount != 0){ header("Location: admin.php");}
// if a row is not returned then the credentials must be invalid
else { die('Incorrect username or password, please try again.')}
\end{lstlisting}
\end{ttfamily}

我必须说,在第 3 章中(因此位置不同,但可以说是在第 4 章出现奇怪行为之前)我使用此代码来获取框架代码片段:

\lstset{framexleftmargin=0mm, frame=shadowbox, rulesepcolor=\color{black},basicstyle=\ttfamily\small}
\begin{figure} [H]
\begin{lstlisting}
root@bt:~# echo -en "GET/HTTP/1.0\n\n\n"|nc www.we****t***.com 80\
>|grep Server
Server: Apache/2.2.15
\end{lstlisting}
\caption{Identificazione server}
\end{figure}

我该怎么办?我尝试删除所有不带 .tex 扩展名的文件(aux、toc、bak 等),但无济于事。

答案1

正如 @Torbjørn 所说,该\lstset命令具有全局范围,因此它会影响其后的每个列表。这就是第 4 章中的列表被框起来的原因。如果您只想框住一个列表,请使用环境的可选参数:

\begin{lstlisting}[framexleftmargin=0mm, frame=shadowbox, rulesepcolor=\color{black}, basicstyle=\ttfamily\small]

您还应该使用\lstset{basicstyle=\ttfamily}第 3 章中的 而不是\begin{ttfamily}

相关内容