哪些包可用于在 LaTeX 中排版 SQL?

Posted

技术标签:

【中文标题】哪些包可用于在 LaTeX 中排版 SQL?【英文标题】:What packages are available to typeset SQL in LaTeX? 【发布时间】:2010-10-20 17:10:26 【问题描述】:

我正在寻找一个用于在 LaTeX 中排版 SQL 语句的包。目前我听说过listings和lgrind,还有其他建议吗?

[编辑] 新增要求:我希望包能够智能地插入分页符,以便在可能的情况下语句不跨越多个页面。仍在阅读文档,因此任何一个 a/m 都可能已经能够做到这一点 - 如果是这种情况,请告诉我。

相关:question

【问题讨论】:

不是我的。你提到的两个包都是成熟的,它们都声称支持 SQL。我会先尝试一下,然后再看更远的地方。 【参考方案1】:

您想使用listings 包。您是否想用它做特定的事情,或者您只是在询问哪个软件包通常最有效?我从来没有遇到过listings 的任何大问题,虽然让它完全按照我的意愿去做有时很棘手(它是 LaTeX;期待其他任何东西都是愚蠢的)。

编辑(解决您的编辑问题):智能分页可能会出现问题;这当然超出了我的能力。 listings 可能可以通过显式标记来做到这一点(转义到 LaTeX 并在适当的位置插入负分页符;可能是可宏化的),但我不认为 listings 可以自动做到这一点,我怀疑LGrind 也可以。您可能会在 LaTeX 特定列表上搜索或询问更好的运气(Usenet 上的comp.text.tex 是一个很好的尝试),但是 TeX 中的分页从来没有像换行那样好,所以我不会坚持不幸的是,希望太大了。

【讨论】:

【参考方案2】:

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

\lstdefinestyleOraclebasicstyle=\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,

使用这些定义:

\lstsetlanguage=[Oracle]SQL,
        style=Oracle,
       

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

【讨论】:

以上是关于哪些包可用于在 LaTeX 中排版 SQL?的主要内容,如果未能解决你的问题,请参考以下文章

LaTex初学

LaTeX排版时作者格式与公式的问题

学习使用LATEX排版

如何使用 LaTeX 输出竖版排版的文章或书籍

如何使用 LaTeX 输出竖版排版的文章或书籍

LaTex:图片排版