Какие пакеты доступны для набора SQL в LaTeX? - PullRequest
6 голосов
/ 21 апреля 2009

Я ищу пакет для набора операторов SQL в LaTeX. До сих пор я слышал о списках и lgrind , есть ли другие предложения?

[править] Добавлено требование: я бы хотел, чтобы пакет мог интеллектуально вставлять разрывы страниц, чтобы по возможности операторы не занимали несколько страниц. Все еще читаете документацию, поэтому возможно, что любой из a / m уже сможет это сделать - пожалуйста, дайте мне знать, если это так.

Похожие: вопрос

Ответы [ 2 ]

12 голосов
/ 21 апреля 2009

Я использую пакет 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,
                        }

И определите больше ключевых слов по мере необходимости:

\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.

6 голосов
/ 21 апреля 2009

Вы хотите использовать пакет listings. Есть ли какая-то конкретная вещь, которую вы хотите сделать с ней, или вы просто спрашиваете, какой пакет работает лучше всего? Я никогда не сталкивался с какими-либо большими проблемами с listings, хотя заставить его делать именно то, что я хочу иногда бывает сложно (это LaTeX; ожидать чего-то еще было бы глупо).

Редактировать (чтобы решить ваши изменения): интеллектуальное разбиение страницы может быть проблематичным; это конечно за пределами моих способностей. listings может быть в состоянии сделать это с явной разметкой (перейти в LaTeX и вставить отрицательный штраф за разрыв страницы в соответствующем месте; скорее всего, из-за макро), но я не думаю, что listings может сделать это автоматически, и я сомневаюсь LGrind может сделать это либо. Возможно, вам больше повезет, если вы будете искать или спрашивать в списке, относящемся к LaTeX (comp.text.tex в Usenet - отличное место для пробования), но разрыв страниц в TeX никогда не был так хорош, как разрыв строки, и поэтому я бы не стал терпеть к сожалению, слишком много надежды.

...