>Эта бесполезная рюшечка включается при помощи `M-x linum-mode`.
Еще за компанию M-x setnu-mode. В emacs21 она в комплекте, а вот linum-mode, насколько я понимаю, в новых emacs идет в поставке (у меня 21-й до сих пор, поэтому точно не знаю), хотя поставить можно и на старый, наверное.
>Выкинули из-за тормознутости.
Поставил linum под emacs21 посмотреть. Действительно, гораздо быстрее
нумерует. Хотя режим этот абсолютно бесполезный, IMHO. Я им не
пользуюсь. Занумеровывать строки разумно тогда, когда текст программы
надо распечатать или в книжку какую вставить, чтобы ориентироваться
читателю было удобнее. Для этой цели достаточно функции, которая
вставит перед строчками цифры, чтобы в этом виде можно было сохранить
потом. Вот я тут как-то себе писал функцию уже давно для этой цели.
Она нумерует строки прямо в тексте в указанном регионе. Потом можно
этот кусочек занумерованный вставить куда-нибудь. Не знаю, насколько
она хорошо написана, но свою работу когда-то сделала.
(defun enumerate-lines (start end)
(interactive "r")
(save-excursion
(let* ((start-line (line-number-at-pos start))
(end-line (line-number-at-pos end))
(max (1+ (- end-line start-line)))
(line 1))
(goto-line start-line)
(untabify (point) end)
(while (<= line max)
(setq fmtstr (concat "%" (number-to-string
(length (number-to-string max))) "d: "))
(insert (format fmtstr line))
(beginning-of-line 2)
(setq line (+ line 1))))))
(unless (fboundp 'line-number-at-pos)
(defun line-number-at-pos (&optional pos)
(let ((opoint (or pos (point))) start)
(save-excursion
(goto-char (point-min))
(setq start (point))
(goto-char opoint)
(forward-line 0)
(1+ (count-lines start (point)))))))
Зачем нужна нумерация кода в тексте? Для того, чтобы найти быстро какой-то фрагмент в коде, на который есть ссылка в тексте (например, "стр. 1000-1010"). Вопрос, как ссылаться на номера строк в TeX, если ты нумерации еще не видишь на этапе создания документа? А если код еще несколько раз поменяется? Вот если вставлять текст уже пронумерованный, то всегда можно тут же документ подправить еще в сырце.
UPD. В lstlisting есть лабелинг. Я сверился. Не стал читать все 56 страниц, но там можно ссылки делать на номера строчек через label. Вопрос для TeX отпал сам собой. Для всего остального -- нет.
>Хе-хе, а если код предназначается не в TeX, а в Ворд? Какой там пакет? :)
Я написал специальный скрипт на perl, который по меткам выдирает фрагменты которые нельзя перенести в Word и делал из них epsы. Так я сделал для Linux Format серию статей по LaTeX.
P.S. С listings засада - он utf-8 не переваривает в случае нелатиницы. Есть заглушка только для вставки внешнего кода.
> С listings засада - он utf-8 не переваривает в случае нелатиницы.
Угу, я когда курсач писал, из-за этого решил комментарии для бумаги математическими выражениями записывать :-) В итоге получилось даже изящнее, чем если бы писать по-русски.
>Я написал специальный скрипт на perl, который по меткам выдирает фрагменты которые нельзя перенести в Word и делал из них epsы. Так я сделал для Linux Format серию статей по LaTeX.
Пардон, Евгений, я не понял в этом месте что-то. LF верстается в Ворде?!
> Пардон, Евгений, я не понял в этом месте что-то. LF верстается в Ворде?!
Нет, но текст передаётся в совместимом с ним формате. Картинки отдельно в eps или pdf. Сейчас я odt отсылаю, но сути это не меняет. С тем же успехом можно и просто текстовые файлы использовать, так как в любом случае форматирование теряется.
Английский LF является частью большой издательской конторы и он лишь один из её журналов - отсюда всё и растёт. Внутренний стандарт, так сказать.
> Угу, я когда курсач писал, из-за этого решил комментарии для бумаги математическими выражениями записывать :-)
С комментариями проблем нет, так как всегда есть возможность выйти в LaTeX с помощью escapechar. Проблема когда русский текст является частью синтаксиса или вывода.
>С комментариями проблем нет, так как всегда есть возможность выйти в LaTeX с помощью escapechar. Проблема когда русский текст является частью синтаксиса или вывода.
Собственно, да. \label на строчки программы именно так и вставляется через escapechar. Иначе же он обрабатывается как часть синтаксиса исходного кода. Но если комментариев много слишком, то замучаешься каждый их них обрамлять. А если потом другой код вставить придется, то караул.
> С комментариями проблем нет, так как всегда есть возможность выйти в LaTeX с помощью escapechar. Проблема когда русский текст является частью синтаксиса или вывода.
У меня почему-то работало только при extendedchars и экранировании русского текста при помощи escapechar, так что я просто включил mathescape и перевёл текст на формульки.