Пользовательские команды в словесной среде

StackOverflow https://stackoverflow.com/questions/4440040

  •  09-10-2019
  •  | 
  •  

Вопрос

Можно ли создать новую команду с параметром в словесной среде и некоторым отступлением?

\newcommand{codeblock}[1]{\begin{quote}\begin{verbatim}#1\end{verbatim}\end{quote}}

Это не работает. Есть другой путь?

Это было полезно?

Решение

Похоже, что вы хотите иметь код в своем документе, и в этом случае вы, вероятно, лучше обслуживаете списки пакетов, чем Vorbatim. Списки также дают вам хорошие функции, такие как нумерация линий и выделение синтаксиса для многих общих языков. Видеть http://www.ctan.org/tex-archive/macros/latex/contrib/listings/ Если он еще не установлен с вашим распределением латекса.

Другие советы

Как \begin{verbatim} работает. Кратко и грубо.

  1. \begin{verbatim} расширяется до \verbatim.
  2. Затем \verbatim Устанавливает код категории каждого специального символа на 12. Теперь все Chars похожи на цифры или пункты.
  3. Затем \verbatim Устанавливает шрифт, окрашивание и вызовы \@xverbatim.
  4. \@xverbatim ловит конец дословно, используя следующий трюк:

    \def\@xverbatim#1\end{#1\end}
    
  5. Затем \end{verbatim} Заканчивает работу.

Как \newcommand{\codeblock}[1]{\begin{quote}\begin{verbatim}#1\end{verbatim}\end{quote}} работает.

  1. Прежде всего \codeblock{Some {}$&%^_} читает свой аргумент.
  2. #1 --> Some code {}$&%^_

    Примечание: {,},$,&,%,^,_ имеют категории 1,2,3,4,6,7,8 а не 11 или 12 !!!)

  3. \codeblock расширяется до \begin{quote}\begin{verbatim} Some {}$&%^_\end {verbatim}\end {quote}. Важный: Бэтап \end имеет категорию 0, а не 11. Более того { и } иметь категории 1 и 2, а не 11. и $,&,%,^,_ есть категории 3,4,6,7,8.
  4. \begin{quote} расширяется до \quote и \quote выполняет.
  5. Затем \begin{verbatim} расширяется до \varbatim. \varbatim Изменит все категории и шрифт. Но (важный) категория BackSlash (в \end) остается равным 0. и категориям {, }, $, &, %, ^, _ напечатано после Some остается из -за «чтения аргументов», выполняемого до \verbatim меняет все категории. Но вам нужно, чтобы все Чар имели категории 11 O 12.
  6. Затем \verbatim вызовы \@xverbatim.
  7. \@xverbatim пытается поймать свой аргумент, используя следующий трюк:

    \def\@xverbatim#1\end{#1\end}
    

    Но это невозможно из -за \@xverbatim пытается поймать \end где все буквы (\,e,n,d) иметь категорию 12 и 11. Но на самом деле есть четыре буквы с другими кодом категории: \ с категорией 0 и e,n,d с категорией 11.

    Возможно (я не уверен), что трюк более мастерски:

    alt text

    Red Chars имеют категорию 12. Green Chars имеют категорию 11. \def, \@xverbatim, \end макросы с \ (Категория 0) и буквы (категория 11).

  8. \@xverbatim пытается и пытается найти \end где обратная сбоя (\) имеет категорию 11, но .... File ended while scanning use of \@xverbatim

Если вы хотите создать новый макрос \codeblock Вы должны сделать что -то вроде текста выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top