Пользовательские команды в словесной среде
Вопрос
Можно ли создать новую команду с параметром в словесной среде и некоторым отступлением?
\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}
работает. Кратко и грубо.
\begin{verbatim}
расширяется до\verbatim
.- Затем
\verbatim
Устанавливает код категории каждого специального символа на 12. Теперь все Chars похожи на цифры или пункты. - Затем
\verbatim
Устанавливает шрифт, окрашивание и вызовы\@xverbatim
. \@xverbatim
ловит конец дословно, используя следующий трюк:\def\@xverbatim#1\end{#1\end}
Затем
\end{verbatim}
Заканчивает работу.
Как \newcommand{\codeblock}[1]{\begin{quote}\begin{verbatim}#1\end{verbatim}\end{quote}}
работает.
- Прежде всего
\codeblock{Some {}$&%^_}
читает свой аргумент. #1 --> Some code {}$&%^_
Примечание:
{
,}
,$
,&
,%
,^
,_
имеют категории 1,2,3,4,6,7,8 а не 11 или 12 !!!)\codeblock
расширяется до\begin{quote}\begin{verbatim} Some {}$&%^_\end {verbatim}\end {quote}
. Важный: Бэтап\end
имеет категорию 0, а не 11. Более того{
и}
иметь категории 1 и 2, а не 11. и$
,&
,%
,^
,_
есть категории 3,4,6,7,8.\begin{quote}
расширяется до\quote
и\quote
выполняет.- Затем
\begin{verbatim}
расширяется до\varbatim
.\varbatim
Изменит все категории и шрифт. Но (важный) категория BackSlash (в\end
) остается равным 0. и категориям{
,}
,$
,&
,%
,^
,_
напечатано послеSome
остается из -за «чтения аргументов», выполняемого до\verbatim
меняет все категории. Но вам нужно, чтобы все Чар имели категории 11 O 12. - Затем
\verbatim
вызовы\@xverbatim
. \@xverbatim
пытается поймать свой аргумент, используя следующий трюк:\def\@xverbatim#1\end{#1\end}
Но это невозможно из -за
\@xverbatim
пытается поймать\end
где все буквы (\
,e
,n
,d
) иметь категорию 12 и 11. Но на самом деле есть четыре буквы с другими кодом категории:\
с категорией 0 иe
,n
,d
с категорией 11.Возможно (я не уверен), что трюк более мастерски:
Red Chars имеют категорию 12. Green Chars имеют категорию 11.
\def
,\@xverbatim
,\end
макросы с\
(Категория 0) и буквы (категория 11).\@xverbatim
пытается и пытается найти\end
где обратная сбоя (\
) имеет категорию 11, но ....File ended while scanning use of \@xverbatim
Если вы хотите создать новый макрос \codeblock
Вы должны сделать что -то вроде текста выше.