Do wpisywania literalnych fragmentów tekstu używam otoczenia Verbatim
z pakietu fancyvrb
. Otoczenie to m.in. może być wstawione do przypisu oraz jest możliwość umieszczania w tekście literalnym poleceń formatujących. To drugie przydaje się przykładowo w sytuacji gdy w opisie składni jakiegoś języka pewne fragmenty są meta, tj. nie należy przepisywać ich literalnie ale oznaczają pewne pojęcia (jak dajmy na to element replaceable
wewnątrz literallayout
w Docbook), przykładowo:
\begin{list}{punktor}{deklaracje} zestawienie \end{list}
Można wpisać:
\begin{Verbatim}[commandchars=@\{\}]
\begin{list}{@emph{punktor}}{@emph{deklaracje}} @emph{zestawienie} \end{list}
Jeżeli fragmenty literalne mają być mniejsze to można dopisać po przecinku fontsize=\small
. Inną potencjalnie przydatną opcją jest numerowanie wierszy:
\begin{Verbatim}[commandchars=@{},fontsize=\small,numbers=left]
\begin{list}{@emph{punktor}}{@emph{deklaracje}} @emph{zestawienie} \end{list}
Numery nie muszą się zaczynać od 1. Opcja firstnumber
pozwala na kontynuację. Można w szczególności wpisać firstnumber=last
i numerowanie rozpocznie się od wartości o 1 większej niż ostatni wiersz w poprzednim otoczeniu Verbatim
.
Można też wykorzystując polecenie \fvset
zdefiniować powtarzające się opcje globalnie a nie wpisywać je za każdym razem:
\usepackage{fancyvrb}
\VerbatimFootnotes % <-- verbatim można umieszczać w przypisie
\DefineShortVerb{\"} % <-- krótka forma zapisu "foo" zamiast \verb@foo@
\fvset{commandchars=¤´˝}
\makeatactive
\newenvironment{literalexample}{\begingroup \endgraf \small \medskip \Verbatim}%
{\endVerbatim \par \medskip \endgroup \@doendpe }
\makeatother
\begin{document}
\begin{literalexample}
\@startsection{¤emph´nazwa˝}{¤emph´poziom˝}{¤emph´wcięcie˝}{¤emph´odstęp-przed˝}{¤emph´odstęp-po˝}{¤emph´styl˝}
\end{literalexample}
W powyższym przykładzie \@doendpe
powoduje, że w pierwszym akapicie po otoczeniu literalexample
nie będzie wcięcia. \Verbatim
i \endVerbatim
, to otoczenie Verbatim
zapisane w postaci pary poleceń (każde otoczenie LaTeXa można zapisać jako \Otoczenie
i \endOtoczenie
.
Ponieważ w kodzie LaTeXa praktycznie występują wszystkie znaki z klawiatury jako commandchars zastosowałem znaczki z górnej połówki ASCII: ¤
(dziesiętnie 164) ´
(180) oraz ˝
(189). Można by stosować np. ¤{}
, ale wolałem nie używać {}
w roli ograniczników do ¤
, żeby mi się nie mieszało z nawiasami klamrowymi wstawionymi literalnie.
Teraz większy przykład, jak to działa
%& --translate-file=il2-pl
\documentclass[a4page]{book}
\usepackage{fancyvrb}
\fvset{commandchars=¤´˝}
\usepackage{polski}
\begin{document}
\begin{Verbatim}
\begin{list}{¤emph´punktor˝}{¤emph´deklaracje˝} ¤emph´zestawienie˝ \end{list}
\end{Verbatim}
\end{document}
Znaczki ¤´
oraz ˝
wstawiam w Emacsie wciskając C-c [
oraz C-c ]
. W tym celu w .emacs
zdefiniowałem co następuje:
(defun insert-commandchars-open ()
"Insert sequence of characters character 164-180"
(interactive) (insert "¤emph´") )
(defun insert-commandchars-close ()
"Insert sequence of characters character 189"
(interactive) (insert "˝") )
(global-set-key "\C-c\C-[" 'insert-commandchars-open)
(global-set-key "\C-c\C-]" 'insert-commandchars-close)
Teraz jeżeli byśmy na-rympał chcieli to używać z opcją utf-8
albo latin2
pakietu inputenc
, to no-way:
\documentclass[a4page]{book}
\usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[T1]{fontenc}
\usepackage{fancyvrb}
\fvset{commandchars=¤´˝}
\usepackage{polski}
\begin{document}
\begin{Verbatim}
\begin{list}{¤emph´punktor˝}{¤emph´deklaracje˝} ¤emph´zestawienie˝ \end{list}
\end{Verbatim}
\end{document}
LaTeX zgłasza błąd:
! Package inputenc Error: Keyboard character used is undefined
BTW: zapewne \fvset{commandchars=@\{\}}
zadziała, ale nie chce mi się sprawdzać...
Można spróbować też XeTeXa:
\documentclass[a4page]{book}
\usepackage{fontspec} %<-- włącza LM wymaga xetexa
\usepackage{fancyvrb}
\fvset{commandchars=¤´˝}
\usepackage{polski}
\begin{document}
\begin{Verbatim}
\begin{list}{¤emph´punktor˝}{¤emph´deklaracje˝} ¤emph´zestawienie˝ \end{list}
\end{Verbatim}
\end{document}
Działa...
Brak komentarzy:
Prześlij komentarz