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

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

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

相关:question

【问题讨论】:

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

标签: sql latex typeset


【解决方案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
    
    \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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      相关资源
      最近更新 更多