LinuxDoc+Emacs+Ispell-HOWTO: Функция insert-sgml-header

Next Previous Contents

## 7. Функция `insert-sgml-header`

Эта функция позволит пользователю вставить настраиваемый заголовок для документа Linux Documentation Project в файл. Она может быть вызвана автоматически при открытии нового файла, или может быть вызвана пользователем.

Эта функция запрашивает у пользователя, пользуясь mini-buffer, некоторую информацию, часть из которой необходима, а часть нет. not.

Сначала идет заголовок документа. Если ничего не дано, то функция сразу прекращает выполнение и ничего не вставляет. Затем идет дата, автор, его электронный адрес и домашняя страница (эти два последних пункта являются опциональными).

Затем идет запрос имени переводчика документа. Если его нет, то просто нажмите клавишу Return, и больше запросов не будет. А если переводчик есть, то вас запросят о его электронном адресе и домашней странице.

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

    (defun insert-sgml-header ()

      "Inserts the header for a LinuxDoc document"

      (interactive)

      (let (title author email home translator email-translator home-translator date

                  starting-point)

        (setq title (read-from-minibuffer "Title: "))

        (if (> (length title) 0)

            (progn

              (setq date (read-from-minibuffer "Date: ")

                    author (read-from-minibuffer "Author: ")

                    email (read-from-minibuffer "Author e-mail: ")

                    home (read-from-minibuffer "Author home page: http://")

                    translator (read-from-minibuffer "Translator: "))

              (insert "<!doctype linuxdoc system>\n<article>\n<title>")

              (insert title)

              (insert "</title>\n<author>\nAuthor: ") (insert author) (insert "<newline>\n")

              (if (> (length email) 0)

                  (progn

                    (insert "<htmlurl url=\"mailto:")

                    (insert email) (insert "\" name=\"") (insert email)

                    (insert "\"><newline>\n")))

              (if (> (length home) 0)

                  (progn

                    (insert "<htmlurl url=\"http://")

                    (insert home) (insert "\" name=\"") (insert home)

                    (insert "\">\n<newline>")))

              (if (> (length translator) 0)

                  (progn

                    (setq email-translator (read-from-minibuffer "Translator e-mail: ")

                          home-translator (read-from-minibuffer "Translator home page: http://"))

                    (insert "Translator : ")

                    (insert translator)

                    (insert "<newline>\n")

                    (if (> (length email-translator) 0)

                        (progn

                          (insert "<htmlurl url=\"mailto:")

                          (insert email-translator) (insert "\" name=\"")

                          (insert email-translator)

                          (insert "\"><newline>\n")))

                    (if (> (length home-translator) 0)

                        (progn

                          (insert "<htmlurl url=\"http://")

                          (insert home-translator) (insert "\" name=\"")

                          (insert home-translator)

                          (insert "\"><newline>\n")))))

              (insert "</author>\n<date>\n")

              (insert date)

              (insert "\n</date>\n\n<abstract>\n")

              (setq point-beginning (point))

              (insert "\n</abstract>\n<toc>\n\n<sect>\n<p>\n\n\n</sect>\n\n</article>\n")

              (goto-char point-beginning)

              ))))

Next Previous Contents