[docs] Re: DocBook semantic -> LaTeX semantic (was: документация для нового Junior'а)

Kirill Maslinsky kirill на altlinux.ru
Ср Фев 4 19:36:19 MSK 2004


> > Тогда, может быть, это я неправильно понимаю, что такое формат.
> > Значит, разметка в формате C для интерпретатора C -- тоже
> > формат? Просто в LaTeX'e никто не требует использовать в
> > разметке именно команды форматного файла, как раз наоборот, это
> > не рекомендуется. Мне казалось, что формат -- это фиксированный
> > набор правил кодирования информации определенного рода. 
> > Правда, если включить все макроопределения в понятие разметки,
> > то и Латех тогда -- фомрат.
> 
> За эту терминологию я копья ломать не буду. Просто если я не прав
> - предложите правильный термин.

Да я вовсе и не хотел бороться за терминологию, на самом деле. 
Просто хотел понять, почему db2latex сделан так, а не иначе, и 
мне показалось, что тут дело не в последнюю очередь в словоупотреблении.

> Можно перевести целиком doc-template.xml в ту разметку, о которой
> Вы говорите? Там есть абзац, заголовок, а мне нужен минимальный
> целый документ, на который я буду смотреть при написании стилей.

Хорошо, вот я сделал первый примерочный вариант -- в аттачменте.
Посмотрите, если чего не нравится или чего не хватает.

> Атрибуты терять нельзя. Например, будет <para role="foo"/> и
> <emphasis role="foo">, не делать же из них \Foo{}.

Хорошо, могу предложить использовать необязательные аргументы в случае с
одним-двумя атрибутами: \emphasis[foo]{}. Хотя в общем случае поддержку
xml-атрибутов в ТеХе реализовать, кажется, непросто. Не уверен,
насколько это нужно для нашей задачи.

> > Что касается entities, должен быть отдельный файл (уже
> > обсуждавшийся entities.sty), где будет описано, как их
> > раскрывать, уже в терминах латеха. А команды для entities проще
> > всего генерировать из имени entity: &ALTSHORT; -> \ALTSHORT{} 
> 
> Сущностей к этому моменту уже не будет, они разрешатся на этапе
> XInclude.

Получается, невозможно организовать entities.sty так, как я предлагал?
Это, наверное, не очень хорошо, потому что тогда становятся
неавтоматическими любые изменения в entites уже на стадии ТеХа.
Зачем-то это может понадобиться.

KM

----------- следущая часть -----------
%% file: doc-template.tex 
%% version 0.1 4/02/2004

\begin{Chapterinfo}{doc-template}
%% в аргументе окружения -- BASEID: нужен для создания локальных меток
%% и идентификации метаифнформации о главе и, может, еще для чего-то
%% понадобится 
  \begin{revhistory}
    \revision{0.3}{29 Nov 2002}{Тип документа изменён с article на
    section.}
  \revision{0.2}{22 Oct 2002}{Кодировка изменена с cp1251 на windows-1251. Изменён
          почтовый адрес автора. Добавлен тег othercredit с указанием
          Антона Бояршинова. Теги sect1 изменены на section.}
        \revision{0.1}{28 May 2002}{Начальный вариант}
%% номера ревизий можно сделать автоматическими, если это
%% нужно. Вообще следует решить, может ли понадобиться
%% информация о ревизиях в Латехе. 
  \end{revhistory}
\Author{Виталий}{}{Останин}
\Author{Антон}{}{Боярщинов}
%% что делать с дополнительной информацией об авторах (email)?
%% пока кажется, что для верстки заголовков и оглавления достаточно 
%% ФИО, так что оставляю сокращенный вариант. Если не будет
%% дополнительных сведений об авторах главы, ничего не будет выводиться.
\end{Chapterinfo}
%% это окружение в обычном случае не должно производить никакого
%% вывода, оно для хранения информации о главе и для записи информации
%% об авторах, чтобы потом верстать заголовок.

\Chapter{Шаблон статьи для \ALTDOCS{}}
%% Собственно команда, которая должна верстать заголовок, записывать
%% строки для колонтитулов (необязательный аргумент) и оглавления. Не
%% хочу пока сюда включать информацию об авторах, чтобы обеспечить
%% возможность автоматически унифицировать способ написания имени
%% автора в заголовках глав и в оглавлении (один-два инициала,
%% сокращенное/полное имя). Возможно, это чрезмерное усложнение.

%% С разделами две возможности: либо использовать окружения для
%% разделов, тогда нет проблем с определением иерархии, либо
%% использовать две команды: \Section и \inSection. С авторами
%% разделов -- отдельная проблема.

\begin{Section}{Раздел}


%% Просто абзацы есть смысл разделять пустыми строками, как и положено
%% в ТеХе, специального ничего не делая. Если нужны какие-то атрибуты
%% для отдельных абзацев -- нужно смотреть в каждом случае отдельно,
%% какие и зачем это атрибуты. Если имеется в виду когда-нибудь
%% сделать механизм профайлинга, то это не обязательно привязано к
%% уровню абзаца (насколько я понимаю), и для ЛаТеХа есть
%% соответствующий пакет, который использует специальные окружения.


\end{Section}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
----------- следущая часть -----------
%% Sample output file for db -> LaTeX conversion
%% Ver 0.1 4/02/2004
\documentclass{book}
\usepackage[koi8-r]{inputenc}
\usepackage[russian]{babel}
\usepackage[..options..]{docbook}
%\usepackage[..options..]{entities}

\begin{document}

\input{doc-template}

\end{document}


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