我使用listings 包,但主要用于sn-ps。一般来说,我不需要担心分页符。 listings 的一大优点是高度的灵活性。例如,我的 SQL 没有大写,但我可以打印带有大写关键字的列表:
\makeatletter
\newcommand{\lstuppercase}{\uppercase\expandafter{\expandafter\lst@token
\expandafter{\the\lst@token}}}
\newcommand{\lstlowercase}{\lowercase\expandafter{\expandafter\lst@token
\expandafter{\the\lst@token}}}
\makeatother
\lstdefinestyle{Oracle}{basicstyle=\ttfamily,
keywordstyle=\lstuppercase,
emphstyle=\itshape,
showstringspaces=false,
}
并根据需要定义更多关键字:
\lstdefinelanguage[Oracle]{SQL}[]{SQL}{
morekeywords={ACCESS, MOD, NLS_DATE_FORMAT, NVL, REPLACE, SYSDATE,
TO_CHAR, TO_NUMBER, TRUNC},
}
使用这些定义:
\lstset{language=[Oracle]SQL,
style=Oracle,
}
如果我要打印出更大的代码片段,我要么不担心分页符,要么编写一个预处理器来分割代码,然后再将其传递给LaTeX。