哪些包可用于在 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?的主要内容,如果未能解决你的问题,请参考以下文章