什么包可用于在LaTeX中排版SQL?

saf*_*fsd 6 sql latex typeset

我正在寻找一个在LaTeX中排版SQL语句的包.到目前为止,我听说过列表lgrind,还有其他建议吗?

[edit]添加了要求:我希望软件包能够智能地插入分页符,以便在可能的语句中不跨越多个页面.仍在阅读文档,因此有可能任何一个a/m都能够这样做 - 如果是这种情况,请告诉我.

相关:问题

Jon*_*son 12

我使用的是listings包,但主要是用于片段.我一般不需要担心分页符.其中一个好处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,
                        }
Run Code Online (Sandbox Code Playgroud)

并根据需要定义更多关键字:

\lstdefinelanguage[Oracle]{SQL}[]{SQL}{
  morekeywords={ACCESS, MOD, NLS_DATE_FORMAT, NVL, REPLACE, SYSDATE,
                TO_CHAR, TO_NUMBER, TRUNC},
}
Run Code Online (Sandbox Code Playgroud)

要使用这些定义:

\lstset{language=[Oracle]SQL,
        style=Oracle,
       }
Run Code Online (Sandbox Code Playgroud)

如果我要打印出更大的代码片段,我要么不要担心分页符,要么写一个预处理器来将代码分开,然后再传递给它LaTeX.


kqu*_*inn 6

您想要使用该listings包.你想用它做一件具体的事吗,或者你只是问一般哪种套餐效果最好?我从来没有遇到过任何大问题listings,虽然要做到完全我想要的东西有时候很棘手(这是LaTeX;期待其他任何东西都是愚蠢的).

编辑(解决您的编辑问题):智能分页可能有问题; 这肯定超出了我的能力.listings或许可以使用显式标记(转移到LaTeX并在适当的位置插入负分页符惩罚;可能是宏 - 可用),但我认为listings不能自动完成,我怀疑LGrind也可以这样做.你可能有更好的运气搜索或询问特定于LaTeX的列表(comp.text.tex在Usenet上是一个很好的尝试),但TeX中的分页从来没有像破线一样好,所以我不会抱太多的希望不幸的是.