[docs] возможности улучшения db2latex

Kirill Maslinsky kirill на altlinux.ru
Пт Янв 30 23:14:11 MSK 2004


Всем привет!

В выводе db2latex присутствуют некоторые регулярные ошибки 
(или, скажем мягче, недальновидные решения разработчиков), 
исправив которые можно сделать немного более реальной 
качественную автоматическую обработку документации через 
LaTeX да и вообще всю автоматическую обработку документации. 
Во всяком случае, мне так кажется ;)

Привожу список замеченного, прошу всячески исправлять и дополнять.

Проблемы локализации типографских правил.

Тире: 

Крайне желательно использовать \cyrdash, определенный в babel а не 
английский \emdash, поскольку так сразу рещается проблема с тире, которое
не должно начинать строку и выполнятся русская типографская норма длины
текстового тире. 


Кавычки: 
неплохо бы использовать свой макрос, который будет ставить нужные 
кавычки, смотря по глубине вложения (елочки или лапки), и проверять,  
Возможны ли в DocBook вообще вложенные кавычки, и если да, то да какого 
уровня? В реальности стоит ограничивать этот уровень 2-мя 
(в крайнем случае -- 3-мя). 
Макрос на Латехе могу написать сам. 

Следить за тем, чтобы не было пробелов после кавычек и перед ними -- 
это можно вписать в сам формат DocBook? 

При экспорте в Латех кавычки должны закрываться пустыми скобками, чтобы не 
слипались со следующим словом. Вообще так следует поступать со всеми 
командами без аргументов.

Entities раскрываются в конечные команды форматирования Латеха, в то время
как логично сохранить entities в Латехе, а конкретные указания по 
форматированию вынести в стилевой пакет. 

Например: 

&LINUX; -> {\texttt{{Linux}}} 

(Кстати, почему-то определяется локально в данном .xml-файле, а не глобально)
<!ENTITY LINUX "<systemitem class='osname'>Linux</systemitem>">


А хотелось бы: 

&LINUX; -> \osname{Linux} 

local.sty
\newcommand{\osname}[1]{\mbox{\texttt{#1}}}
(мы ведь еще не хотим, чтобы оно переносилось, верно? 
правда, это может оказаться слишком жестким требованием, возможно, 
нужно просто указать ТеХу, что здесь переносы невозможны, а разрывы 
строки на пробелах нежелательны.)

Или даже: 

&LINUX; -> \Linux{}

local.sty 
аналогично предыдущему примеру

entities.sty
Специальный промежуточный файл, в котором будет определено, как 
макросы, соответствующие docbook'овским entities, будут раскрываться
в строки.

\newcommand{\Linux}{\osname{Линукс}}

Идеально, чтобы "заготовки" для этих двух .sty файлов db2latex порождал 
сам в качестве вывода, а пользователь затем мог исправить как оформление 
логических элементов структуры, так и процесс раскрытия макросов в конечные
строки. По необходимости, здесь можно добавить ТеХовское форматирование. 
Для чего может понадобиться именно ТеХовское форматирование: 

В документации все время встречаются "и т. д." и "и т. п.", которые пишутся 
то с пробелом, то без, "т. д." может уйти на другую строку... Сразу 
характеризует текст как неаккуратный. Предлагается: завести в docbook entity, 
что-нибудь вроде 

&ITD; -> \itd{}

entities.sty

\newcommand{\itd}{и~т.\,д.}

Возможно ли в DocBook указать, что некоторые пробелы должны быть 
неразрывными? А что некоторые должны быть тонкими? (шириной .3 ширины 
прописной буквы М текущего шрифта, если быть точным ;)) 
По крайней мере для тех форматов, которые подразумевают печать на 
бумаге.

По содержанию: 

Обрабатывает ли как-нибудь db2latex сведения об авторе _раздела_? 
Потому что хотелось бы в общем случае указать для каждого раздела 
автора. (Хотя уже видел дискуссию об авторах в архивах рассылки...)

Зачем в некоторых списках использован glosslist?
см. например /docs/books/junior-2.3/intro/support/support.xml

Разве от бедности возможностей разметки docbook? Это же не список 
терминов, там и заголовки не в одно-два слова, следовательно, 
используемое в TeXe для оформления такого списка окружение 
description выглядит ужасно, поскольку рассчитано на короткие метки. 
Наверное, в docbook есть для таких случаев другой тип списка? 
Хотя на мой взгляд это уже больше похоже на подзаголовок.
Вообще желательно в ТеХе использовать не стандартный 
description, а что-нибудь вроде glosslist, определяя его все в том же 
гипотетическом local.sty.

Как реализовать специфические дефисы в сложных словах: неразрывный дефис, 
в словах типа OEM-партнеры, а также дефис, позволяющий переносить части 
сложного слова (второе, скорее всего, специфично для ТеХа)?

Продолжение следует...

В общем, кого что заинтересовало -- спрашивайте, я каждому отвечу, 
каждый пункт можно обсудить, оценить и, если понравится, конечно же, -- 
реализовать самому! ;)

КМ




Подробная информация о списке рассылки docs