|
Здравствуйте, Эдуард.
В Втр, 28/07/2009 в 06:38 +0400, neGODnick пишет:
> > Насчёт листингов.
Дональд Кнут в своей книге "Всё про TeX" предлагает такой способ
оформления листингов (позволю себе немного процитировать, с. 276, 388):
"Компьютерные программы доставляют различного рода затруднения, так как
некоторые программисты любят выбирать такой стиль, чтобы позиции
табуляции изменялись от строки к строке. Рассмотрим, например, фрагмент
следующей программы:
if n < r then n := n + 1
else begin print_totals; n := 0
end;
while p > 0 do
begin q := link(p); free_node(p); p := 1;
end;
Здесь задано такое табулирование, чтобы операторы 'then' и 'else' стояли
друг под другом и так же располагались операторы 'begin' и 'end'. Это
достигается тем, что устанавливается новый образец строки, когда
необходима новая позиция табуляции. Однако это утомительно, а простая
система TeX делает это немного проще. Напечатав символ & справа от всех
существующих позиций табуляции, вы устанавливаете такую табуляцию, что
только что завершённая колонка будет иметь естественную ширину. Кроме
того, существует операция '\cleartabs', которая устанавливает заново все
позиции табуляции справа от текущей колонки. Поэтому приведённая выше
компьютерная программа "TeXнически" может иметь следующий вид:
$$\vbox{
\+\bf if $n<r$ \cleartabs&\bf then $n:=n+1$\cr
\+&\bf else &{\bf begin} ${\it print\_totals}$; $n:=0$;\cr
\+&&{\bf end};\cr
\+\bf while $p>0$ do\cr
\+\quad\cleartabs&{\bf begin} $q:={\it link}(p)$;
${\it free\_node}(p)$; $p:=q$;\cr
\+&{\bf end};\cr
}$$"
Если существующие решения по какой-либо причине вас не устраивают и
разбираться в них и вносить изменения нет желания (возможности, времени
и т.д.), можно сверстать текст "в рукопашную".
--
С уважением,
Андрей Севастьянов <asev69@mail.ru>
|
|