Библиография в LaTeX, BiBTeX и JabRef



41 коммент.
Этот пост является частью большой статьи
"Как оформить диплом в LaTeX?",
которую написал virens,
ведущий блога "Записки дебианщика"

Проблема: библиографический список документов LaTeX разросся и перевалил за несколько десятков источников литературы. Требуется быстро и просто оперировать с библиографическими ссылками в научных документах.
Решение: есть кроссплатформенные системы ведения баз данных библиографических ссылок в LaTeX, одна из них - JabRef.

При написании объёмных научных трудов часто возникает проблема работы с библиографией в LaTeX. Обычно на начальном уровне освоения LaTeXники применяют для указания ссылок на литературу такую конструкцию, помещая её в конец своего tex-файла:

\addcontentsline{toc}{chapter}{Литература}
\begin{thebibliography}{99}

\bibitem{catheydowskinewparadigm} W.T. Cathey and E.R. Dowski, ``New paradigm for imaging systems'', Appl. Opt. 41, pp. 6080-6092, 2002.
Это значит буквально то, что написано: добавить главу "Литература" в конец списка, а ссылки (bibitem) указать в порядке перечисления их ниже. Вот тут-то и лежат грабли для начинающих TeXников - в тексте ссылки пронумеруются в том порядке, в котором они тут указаны, а не в порядке упоминания.

Кроме того, начнутся большие проблемы, когда вы захотите часть литературных источников включить в другой документ. Какие из них брать? В каком порядке? Или вспомнить, каким словом вы обозвали какую-то книгу или монографию? Вот тут нам и приходит на выручку BiBTeX...

Библиографические базы данных
Это простой текстовый файл, в котором перечислены ваши библиографические ссылки, и работают с этими файлами специальные (но простые для использования) программы. При этом каждый раз, когда вы собираете LaTeX-файл, создаётся специальный файл имяфайла.bib, в который из этой самой базы (bib-файла) надёргиваются источники литературы, указанные в тексте.

Таким образом, вы избавлены от забот с библиографией - теперь вы будете добавлять источники литературы не в сам LaTeX-документ, а в bib-файл при помощи удобной графической программы. Эту библиографическую базу вы сможете использовать для многих документов, что имеет свои преимущества:
  1. если в описание ссылки на литературу вкралась ошибка, её можно исправить в базе - и это будет изменено во всех документах, ссылающихся на неё;
  2. ссылки появляются по мере упоминания и нумеруются правильно;
  3. простой поиск в базе для выяснения ключа цитирования (подставляемый в \cite{});
  4. возможность использования одной базы во многих документах;
  5. импорт и экспорт в другие библиографические форматы.
Так что всё это стоит некоторых усилий - вы сможете просто писать \cite{источник} и не думать, в каком порядке и как отображается ссылка - лишь бы она была в базе. Всё просто и легко.


Как это работает
Для того, чтобы начать работу с BiBTeX, надо установить какую-нибудь оболочку к нему, создать новую библиографическую базу, заполнить её теми ссылками, которые у вас уже имеются в созданных LaTeXовских документах и слегка подправить в конце упоминание о библиографии. Если раньше вы писали в конце документа:
\addcontentsline{toc}{chapter}{Литература}
\begin{thebibliography}{99}
то теперь следует писать (не указывая расширения bib):
\bibliography{путь/к/файлу/библиографии}
например,
\bibliography{biblio/my}
и кроме того указать, какой стиль библиографических ссылок вы хотите использовать - чаще всего используется не сортированный (т.е. в порядке упоминания в тексте):
\bibliographystyle{unsrt}
Эту строчку ставим в шапке LaTeXовского документа, после разного рода \usepackage но до \begin{document}. Вот и все дела.

Здесь следует использовать возможности операционной системы, которые здорово облегчают жизнь. Например, у вас есть два LaTeX-файла в разных каталогах (скажем, две статьи). При этом они используют одну и ту же библиографическую базу, которая находится в другом каталоге - как её использовать в разных документах!? Очень просто: Linux и *BSD системы давно умеют создавать символические ссылки на файлы и каталоги. Предположим, что библиографическая база my.bib находится в каталоге ~/docs/matlab/docus/topics/biblio/ и в латеховском документе указывается как \bibliography{biblio/my} - поэтому нужно просто сделать символическую ссылку (симлинк) на каталог, в котором база хранится:
ln -s ~/docs/matlab/docus/topics/biblio/ biblio
и перекопировать симлинк в нужные каталоги, в которых находятся ваши латеховские документы. Всё, теперь все они будут работать с одной и той же базой. Легко и просто.

Надеюсь, я вас убедил и теперь осталось только всё это установить.


Приступаем к установке
Для того, чтобы всеми этими чудесами воспользоваться, нужно поставить программу-оболочку для работы с BibTeXом. Можно и руками набивать базу - пожалуйста, можно воспользоваться программами, уже имеющимися в дистрибутиве. Например, для Debian v3.1 Sarge, если поискать в репозитории:
# apt-cache search bibtex | grep tool bibtool - A tool for manipulating BibTeX data bases. bibview - X11 Bibliography database tool pybliographer - tool for manipulating bibliographic databases bibtool-dev - A library providing functions to deal with BibTeX files. search-ccsb - BibTeX search tool search-citeseer - BibTeX search tool
то можно найти приличное количество таких программ.

Однако в плане удобства использования они сильно проигрывают JabRef, о которой и пойдёт речь дальше. Эта программа написана на Java, бесплатна и лицензирована под GPL - однако из-за того, что Java-машина в основную ветку дистрибутива Debian не входит (по лицензионным причинам), JabRef в Дебиане нет. Однако для неё есть дебиановский пакет, который можно скачать с сайта разработчиков, а пакет с Java-машиной - из non-free ветки дистрибутива Debian.

Ставим!
Итак, нам нужно скачать из Интернета пакеты j2re*.deb (у меня, например, jpre1.4_1.4.2.03-1_i386.deb), jabref*_all.deb (у меня установлен jabref_2.0.1-1_all.deb) и взять первый DVD-диск, на котором есть пакет java-common, входящий в стандартную поставку Дебиана.

Сначала ставим java-common из дистрибутива:
#apt-get install java-common
Далее ставим отдельно пакет с Java-машиной (если у вас более свежая версия - поправьте имя пакета):
#dpkg -i jpre1.4_1.4.2.03-1_i386.deb
Конфигуратор этого пакета может задать вопросы - типа согласны ли мы с лицензией (выбирать не приходится), и прочее. Отвечаем утвердительно - согласны с лицензией SUN и принимаем все остальные вопросы. Теперь ставим собственно JabRef - так же отдельно пакет (если у вас более свежая версия - поправьте имя пакета):
#dpkg -i jabref_2.0.1-1_all.deb
Всё - теперь добавляем JabRef в меню своего любимого оконного менеджера или графической среды и запускаем:
jabref
Так как программа на джаве, запускается она не быстро - это нормально. Интерфейс у неё простой и понятный.

Осталось только вбить литературные источники в этой программе в новую базу, сохранить, поставить во всех документах упоминание о том, что мы теперь используем BiBTex:
\bibliography{путь/к/файлу/библиографии}
и работать, как всегда - ставить ссылки на литературу, а уж BiBTeX сам разберётся, как её указать. И в конце вашего LaTeXовского файла всегда будет аккуратный список литературы по всем правилам хорошего тона.


Несколько советов

Во-первых, не забываем про архивирование данных - и особенно библиографической базы данных. Это теперь наше всё. Её можно экспортировать в HTML или просто скопировать куда-нибудь в другое место.

Во-вторых, разного рода издательства и их электронные ресурсы, такие как SpringerLink и Elsavier предоставляют Citations для опубликованных у них работ. Не проходите мимо них и собирайте эти замечательные файлы (они обычно в формате RIS, но могут быть и в других форматах). Скачав и импортировав в JabRef в свою базу такой файл, вы получите уже набранную информацию о статье или книге - вам только остаётся подобрать для неё подходящий ключ, на который будете потом ссылаться. И всё.

Для любопытных
Физически теперь ваши ссылки будут одним файлом с расширением bib, который, если его открыть текстовым редактором, будет похож на:
This file was created with JabRef 2.0.1.
Encoding: KOI8-R

@ARTICLE{catheydowskinewparadigm,
author = {W.T. Cathey and E.R. Dowski},
title = {New paradigm for imaging systems},
journal = {Appl. Opt.},
year = {2002},
volume = {41},
pages = {6080-6092},
owner = {penta4},
timestamp = {2006.05.12},
}

Это и есть ваша база данных библиографии. Её, как сказано выше, можно набивать чем угодно - программами или руками, а так же привлечь к этому делу скрипты. Так же можно обмениваться ими с коллегами по работе. В общем, полная свобода действий.



Как переименовать "Литература" (rename References in LaTeX)?
Если необходимо оформить список литературы для диплома, чтобы само название было СПИСОК ЛИТЕРАТУРЫ по центру (например). В зависимости от того, чем вы там диплом формляете (может, мудрёные пакеты какие), сделать можно вот так:
\begin{document}
\renewcommand\refname{\centering СПИСОК ЛИТЕРАТУРЫ}

Это если для стиля article. Если для report или book, тогда:
\renewcommand\bibname{СПИСОК ЛИТЕРАТУРЫ}
Почерпнул мудрости здесь.
Читать далее

Использование пакетов расширения LaTeX: LaTeX usepackage



5 коммент.
Задача: в ЛаТеХ нужно применять специфические, отличные от умолчальных, настройки (поля, списки и таблицы, библиографические ссылки и прочее).
Решение: для этого используются пакеты расширений, подключаемые в "шапке" ЛаТеховского документа.

Вот пример такой шапки с описанием действия пакетов. Шапка написана с сильным физико-математическим уклоном: для вёрстки статей и отчётов с обильным использованием формул, рисунков, таблиц и ссылок на литературу.

\documentclass[a4paper,12pt]{article}
\usepackage[T2A]{fontenc} %поддержка кириллицы в ЛаТеХ
\addtolength{\hoffset}{-1.7mm} % горизонтальное смещение всего текста как целого
\usepackage[koi8-r]{inputenc} %По умолчанию кодировка KOI8 для *nix-систем
и cp1251 для винды
\usepackage[english,russian]{babel} %определение языков в документе
\usepackage{amssymb,amsmath,amsfonts,latexsym,mathtext} %расширенные наборы
математических символов
\usepackage{cite} %"умные" библиографические ссылки
(сортировка и сжатие)
\usepackage{indentfirst} %делать отступ в начале параграфа
\usepackage{enumerate} %создание и автоматическая нумерация списков
\usepackage{tabularx} %продвинутые таблицы
% \usepackage{showkeys} %раскомментируйте, чтобы в документе были видны
ссылки на литературу, рисунки и таблицы
\usepackage[labelsep=period]{caption} %заменить умолчальное разделение ':' на '.'
в подписях к рисункам и таблицам
\usepackage[onehalfspacing]{setspace} %"умное" расстояние между строк - установить
1.5 интервала от нормального, эквивалентно
\renewcommand{\baselinestretch}{1.24}
\usepackage[dvips]{graphicx} %разрешить включение PostScript-графики
\graphicspath{{edgeimages/}} %относительный путь к каталогу с рисунками,
это может быть мягкая ссылка

\usepackage{geometry} %способ ручной установки полей
\geometry{top=2cm} %поле сверху
\geometry{bottom=2.5cm} %поле снизу
\geometry{left=2.5cm} %поле справа
\geometry{right=2cm} %поле слева

\makeatletter
\bibliographystyle
{unsrt} %Стиль библиографических ссылок БибТеХа - нумеровать
в порядке упоминания в тексте
%Заменяем библиографию с квадратных скобок на точку в списке литературы
\renewcommand{\@biblabel}[1]{#1.}
\makeatother

% Меняем везде перечисления на цифра.цифра
\renewcommand{\theenumi}{\arabic{enumi}}
\renewcommand{\labelenumi}{\arabic{enumi}}
\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}.}
\renewcommand{\theenumiii}{\arabic{enumiii}}
\renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}.}

\righthyphenmin=2 % Минимальное число символов при переносе - 2.
Читать далее

Работа с огромными растровыми изображениями в Linux: графический редактор nip2



3 коммент.
Задача: имеется большое растровое изображение, которое требуется обработать и улучшить, желательно видя результат и имея возможность изменив что-то одно, быстро пересчитать результат.
Решение: нам поможет уникальная программа для обработки музейных изображений - nip2, которая есть в составе Debian.

Подход nip2: изображения в виде таблиц
Неожиданный и очень продуктивный подход реализован в этой замечательной программе: каждое изображение помещается в ячейку таблицы. Его можно просмотреть, и оно будет воспроизводиться постепенно, так же ячейками. Это сильно экономит время и оперативную память. Когда вы применяете какой-либо фильтр обработки изображения, вы указываете ячейку, к которой это применяется. Таким образом, возможен оперативный пересчёт результатов при изменении параметров фильтров.

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


Помимо служебных форматов, программа знает TIFF, PPM, PNG и JPEG. Немного, но этого хватает для нормальной работы с графикой.

Что есть и чего нет в nip2
Так как программа изначально заточена под работу с плоской графикой, нет функций работы со слоями - это не её профиль. Зато есть много очень продвинутых техник обработки изображений, реализованных в виде быстрых алгоритмов (следует отметить, что обработка изображений проходит намного быстрее, чем в аналогичных растровых графических редакторах, например, в GiMP).

Что есть:

- оперативный пересчёт конечного и промежуточных результатов при изменении параметров любого фильтра;
- работа с 8, 16 и 32 битными изображениями;
- реализованы продвинутые техники работы с изображениями (морфологический анализ, фурье-фильтрация, методы арифметической свертки, статистические техники шумоподавления и прочее);
- реализована работа с цветокоррекцией и цветовыми профилями;
- алгоритмы работают очень быстро, экономное расходование ресурсов;
- выдающиеся способности по обработки изображений большого объёма.

Чего нет:
- нет работы со слоями;
- нет возможности воспользоваться инструментами рисования (только обработка изображения фильтрами);

Из особенностей следует отметить необычный (но довольно понятный) интерфейс и не всегда логичное расположение фильтров в меню. Однако менюшки можно открепить, и самые нужные фильтры и инструменты будут под рукой.


Зачем нужен nip2
На самом деле, как говорится здесь, nip2 - это лишь графический пользовательский интерфейс на Gtk2 к библиотеке VIPS. Эта библиотека на С спроектирована для обработки очень больших изображений, главным образом, для исследований картин в музеях. Оцифрованные изображения произведений искусства - это огромные файлы, и обработка их в обычных графических редакторах просто немыслима. Кроме того, многие цифровые фильтры в графических редакторах применяют медленные алгоритмы обработки, так как их проще реализовать и не возникает специфических проблем.
У nip2 много преимуществ, помимо работы с очень большими изображениями, так что надеюсь, что программа будет полезна и вам.

Ссылки
Замечательная статьятут её английский источник)по библиотекам обработки изображений в Линукс - там говорится и о VIPS, на которой основан nip2.
Читать далее

Текстовые процессоры: Глупые и Неэффективные



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


Текстовые процессоры:
Глупые и Неэффективные

Аллин Коттрелл


Содержание



1 Утверждение

Текстовый процессор - глупый и чрезвычайно неэффективный инструмент подготовки текста для обмена информацией с окружающими. Это утверждение мне предстоит защищать ниже. Оно, вероятно, удивит вас своей эксцентричностью при первом прочтении. Если я выступаю против текстовых процессоров, что я предложу: писать от руки или использовать пишущие машинки? Нет. Можно найти аргументы в защиту этих моделей подготовки текста, но я понимаю, что большинство читателей этой заметки, как и я, выполняют львиную долю своей писательской работы на компьютере. Моё утверждение заключается в том, что есть намного лучшие способы подготовки текста, используя компьютер, чем текстовые процессоры.

Формулировка моего утверждения умышленно провокационная, но я внесу ясность: когда я говорю, что текстовые процессоры глупые, я не говорю, что вы, если используете текстовый процессор, тоже глупые. Я критикую технологию, которая усердно продвигается крупными производителями программного обеспечения, и которая стала стандартном де-факто. Вы скорее всего не подозреваете о существовании альтернатив. Альтернативные решения не продвигаются крупными производителями, по известной причине: как мы увидим, они свободно доступны.

Давайте начнём с конца. Текст, который предназначен для обмена идеями и информацией с окружающими, распространяется двумя главными путями:

  1. Как ``твёрдая копия'', в виде традиционных отпечатанных документов.
  2. В цифровом виде: электронная почта, веб-страницы, в формате, воспроизводимом на экране.

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

2 Печатные документы

Вы хотите напечатать документ на клавиатуре, и ожидаете, что он красиво напечатается на вашем принтере. Естественно, вы не хотите, чтобы это произошло сразу (чтобы печатаемый вами текст появлялся на принтере в процессе написания). Вы хотите напечатать документ сначала и затем ``сохранить'' его в цифровой форме на каком-либо носителе. Вы хотите иметь возможность вернуться к документу и редактировать его в будущем, а так же отправить его на печать при желании. Верно ли, что текстовый процессор, такой, как захвативший большую долю рынка Майкрософт Ворд, ``естественный'' способ сделать всё это? Ну, это один способ, но не лучший. Почему?

2.1 Создание против Набора

Подготовка печатного текста при использовании текстового процессора обязательно вынуждает вас соединять две задачи, концептуально различные. Этими двумя задачами являются:

  1. Создание непосредственно текста. Под этим я понимаю непосредственный выбор слов для выражения мыслей, и логическое структурирование текста. Это включает такие вещи, как разбиение текста на параграфы, разделы и главы, выбор места появления главного материала в сносках или в основном тексте, выделение значимых частей текста, представление некоторых частей текста в качестве цитат вместо авторских слов, и так далее.
  2. Типографский набор документа. Имеется в виду выбор гарнитуры шрифта, которой будет отпечатан текст, и способ визуального представления структурных элементов. Должны ли заголовки разделов быть полужирными или написанные капителью? Должны ли они быть выровнены по левому краю или центрированы? Должен текст быть выровнен по ширине или нет? Должны ли заметки появляться вверху страницы или внизу? Должен ли текст идти одной колонкой или двумя? И так далее.

Автор текста должен, по крайней мере в первом приближении, быть полностью сосредоточен на первой из перечисленных задач. Это главная задача автора. Адам Смит, как известно, выявил огромные преимущества, вытекающие из разделения труда. Создание и логическое структурирование текста является решающим вкладом автора в производство печатного текста. Типографский набор - дело наборщиков. Это разделение труда было выполнено, разумеется, в традиционном производстве книг и статей в докомпьютерную эпоху. Автор писал и сообщал издателю логическую структуру текста с помощью различных пометок. Наборщик переводил авторский текст в печатный документ, преобразуя логическую разметку автора в конкретный типографское исполнение. Нужно только представить себе, скажем, Джейн Остин (Jane Austen) озадаченную, в каком шрифте набрать заголовок главы ``Гордость и Предубеждение'', чтобы увидеть, насколько нелепа эта фантазия. Джейн Остин - великая писательница; она не была наборщицей.

Вы можете подумать, что это не относится к делу. Произведения Джейн Остин были издаваемы; профессиональные наборщики были заинтересованы в разметке этого текста и его печати. Вы и я не столь удачливы; если мы хотим печатную статью, мы вынуждены делать это сами (и, кроме того, мы хотим сделать это намного быстрее, нежели при помощи обычных пишущих машинок). Мы чувствуем, что будем делать это сами (на собственных компьютерах), но в нашем распоряжении много помощников. В частности, у нас есть программы создания документов профессионального качества. Эта программа (или набор программ) способна сделать это за нас, бесплатно и за несколько секунд или долей секунд; сделать работу, которую обычные наборщики выполняли для Шекспира, Джейн Остин, сэра Вальтера Скотта и остальных. Мы просто воспользуемся программой с подходящим размеченным текстом, как делали традиционно авторы.

Я полагаю, следовательно, что должны быть два различных момента в производстве печатного текста с использованием компьютера. Первый печатает собственно текст и создаёт правильную логическую структуру, отмечая эту структуру простыми пометками. Это достигается при использовании текстовых редакторов, программ, которые не должны быть смешаны с визуальными текстовыми процессорами (ниже я объясню эту разницу более подробно). Дальше текст передаётся программе типографского набора, которая быстро вернёт восхитительно набранную копию.

2.2 Зло имени ``Что видишь, то и получаешь''

Эти две работы превращаются в одну при помощи современных визуальных1 ``что видишь, то и получаешь'' текстовых процессоров. Вы печатаете свой текст, в то же время, как видите набираемый текст на экране компьютера и его конкретное типографское представление, которое близко соответствует тому, что вы распечатаете на принтере. В результате, текст постоянно оформляется по ходу его создания. На первый взгляд это может показаться огромным удобством; при ближайшем рассмотрении это настоящее бедствие. Есть три причины этого:

  1. Автор отрывается от своего дела - создания текста - для выбора типографских приёмов, в которых он может совершенно не разбираться (``маяться со шрифтами и полями'' в то время как он должен сконцентрироваться на тексте).
  2. Алгоритм типографского набора, применённый в визуальном процессоре, жертвует качеством во имя скорости, требуемой для оформления и изменения вводимого пользователем текста в реальном времени. Окончательный результат сильно ниже по качеству того, который получается в настоящей программе типографского набора.
  3. Пользователь текстового процессора испытывает большой соблазн потерять видение структуры текста и совместить это с поверхностными типографскими элементами.

Первые два пункта должны быть очевидными. Позвольте мне раскрыть третий (его важность зависит от типа рассматриваемого документа).

2.3 Структура документа

Рассмотрим для примера заголовок раздела. Как только логическая структура текста становится главной целью, требуется, чтобы важные части текста помечались бы, как заголовки разделов. Можно, например, написать \section{Text of heading}. Как заголовки разделов будут воспроизведены типографски в печатном документе - отдельный вопрос. Когда вы используете текстовый процессор, то, что вы видите есть (всё!) что вы получите. Вас вынуждают решать специфические типографские вопросы об отображении заголовка.

Положим, вы решили, что хотите заголовки сделать полужирными, и немного больше остального текста. Как вы собираетесь достичь этого? Есть более одного способа это сделать, но для большинства людей наиболее очевидным и интуитивным путём (дающимся в визуальной среде) является набор текста в заголовок, выделения его, нажатия на значок ``сделать полужирным'', открывания ниспадающего меню размеров шрифта и выбора большего размера. Заголовок теперь полужирный и большой.

Отлично! Но что говорит о том, что это заголовок? В документе ничто не идентифицирует этот маленький кусочек текста как заголовок раздела. Предположим, что через некоторое время вы захотите, чтобы заголовки были написаны капителью, или нумеровались римскими цифрами, или были отцентрированы, или что-нибудь ещё. Вы бы хотели сказать ``пожалуйста, сделайте это и это для изменения всех заголовков раздела''. Но если вы применили форматирование так, как описано выше, вы должны будете пройтись по всему документу и изменить каждый заголовок вручную.

Теперь есть способ определения структурного положения участков текста, например, в Майкрософт Ворде. Вы можете, если вы аккуратны, достичь эффектов типа изменения представления всех заголовков разделов одной командой. Но лишь немногие пользователи Ворда применяют это постоянно, и это не удивительно: визуальный подход не поощряет заботу о структуре. Вы можете легко - всё слишком легко - создать видимость структуры низкоуровневыми командами. Когда пишете текст используя текстовый редактор, с другой стороны, необходимость разметки структуры возникает сразу же.

2.4 Текстовые редакторы

Хорошо, теперь, вероятно, пора объяснить, что такое текстовый редактор и чем он отличается от текстового процессора. Современный текстовый редактор выглядит очень похожим на визуальный текстовый процессор. Он имеет обычные механизмы ниспадающих меню и/или иконок для функций открытия и сохранения файлов, поиска и замены, проверки орфографии, и так далее. Но он не имеет типографской функциональности. Текст, который вы набираете, отображается на экране в простом виде, но без претензии на отображение окончательного печатного документа.

Когда вы сохраняете документ, он сохраняется в форме простого о текста, который в США подразумевается как ``ASCII'' (the American Standard Code for Information Interchange, Американский Стандартный Код для Обмена Информации)2. Кодировка простого текста состоит из 128 символов (иногда это называют ``7-ми битным'' набором символов, так как он требует 7 бинарных знаков для кодирования; 2 в седьмой степени составляют 128). Он включает числа от 0 до 9, латинский алфавит в верхнем и нижнем регистре, стандартные символы пунктуации и набор специальных символов. Сообщение на простом тексте будет ``понято'' любым компьютером в мире. Если вы отправите такое сообщение, вы можете быть уверенным, что получатель увидит буквально то, что вы набрали.

С другой стороны, когда вы сохраняете файл из визуального текстового процессора, файл содержит различные ``управляющие'' символы, выходящие за диапазон кодировки простого текста. Эти символы представляют форматирование, которое вы применили (например, полужирное или наклонное) и различные виды внутренних ``служебных'' символов, относящихся к внутреннему устройству визуального текстового процессора. Они не являются универсальными. Чтобы они имели смысл, вам необходима копия текстового процессора, которым создавался текст (или некоторый подходящий конвертор). Если вы откроете файл визуального текстового процессора в текстовом редакторе, вы увидите (кроме текста, или его битов), много ``забавно выглядящей чепухи'': это бинарный форматирующий код.

Так как текстовые редакторы не вставляют никакого бинарного форматирующего кода, если вы хотите показать форматирование, например наклонный шрифт, вы должны сделать это с помощью меток разметки. А именно, вы пишете примечания (используя только простой текст), которые скажут системе типографского набора сделать указанный текст наклонным. Например, для системы набора LaTeX (о которой пойдёт речь ниже) вы должны написать \textit{текст, который вы хотите сделать наклонным}. В действительности, если вы используете текстовый редактор, созданный для взаимодействия с LaTeX, вам не придётся набирать это самостоятельно. Вы можете нажать комбинацию клавиш, выбрать из меню или нажать на значок, и соответствующее примечание будет вставлено за вас; механизм набора текста в текстовом редакторе, предназначенном для LaTeX, не сильно отличается от набора в современном визуальном текстовом процессоре.

2.5 Сила простого текста

Метод создания текста в простом тексте с использованием текстового редактора и компьютерной системы типографского набора имеет несколько ``побочных'' преимуществ:

  1. Портируемость: как указано выше, любой человек, используя любую компьютерную платформу, в состоянии прочесть ваш размеченный текст, даже сли он не собирается просматривать или распечатывать набранную версию. С другой стороны, файл вашего навороченного визуального текстового процессора Шик-Блеск 9.0 может быть полностью не воспроизводим для получателя, не имеющего такого же визуального процессора той же версии, что и у вас - если он или она не настолько продвинутые в компьютерах, что способны вытащить простой текст из этого бинарного ``мусора''. И это заставляет тратить дополнительно время и вас, и получателя вашего документа. Вы так же можете встретить проблемы с чтением файла текстового процессора Шик-Блеск 8.0 программой новой версии 9.0, или наоборот, но вы никогда не будете иметь таких проблем с чтением старого доброго о текста.
  2. Компактность: файл текста представляет ваши записанные мысли, а не кучу бинарного ``хлама'' визуального процессора. Для небольших документов файлы визуального текстового процессора могут быть в 10 раз больше соответствующего о текста, содержащего ту же информацию.
  3. Безопасность: метод ``текстовый редактор в качестве системы типографского набора'' практически гарантирует отсутствие проблем с повреждением ваших документов (только если ваш винчестер не выйдет из строя или не произойдут прочие форс-мажоры). Ваш исходный текст всегда будет с вами, даже если система компьютерного набора выйдет из строя по каким-либо причинам. Если вы регулярно используете визуальные текстовые редакторы и не имеете таких проблем с повреждением файлов, вы чрезвычайно везучий человек!

(Для дальнейшего чтения: страница Сэма Стейнголда ``Нет проприетарным форматам данных'')

2.6 Системы компьютерного типографского набора

К этому времени, я так чувствую, вы уже больше разбираетесь в типографской части стратегии, которую я отстаиваю. Я не хочу здесь пускаться в технические подробности, но постараюсь сказать достаточно для того, чтобы вы поняли, о чём я говорю.

Основная программа, которую я подразумеваю, называется ТеХ и она была написана Дональдом Кнутом из Стэнфордского университета. ТеХ свободно доступен (можно скачать со многих ресурсов в Интернете), для любой компьютерной платформы (вы можете, если захотите, купить диск с полным набором файлов ТеХа по очень умеренной цене). Кнут начал работу над ТеХом в 1977 году; в 1990 он заявил, что больше не собирается разрабатывать программу - не потому, что потерял к ней интерес, а потому, что к этому времени она стала почти совершенна. Она свободна от ошибок настолько, насколько любая компьютерная программа может быть, и она превосходно выполняет типографский набор практически любого материала, от простого текста до высшей математики.

Я ссылался выше на ЛаТеХ. Если ТеХ - базовый типографский движок, ЛаТеХ - огромный набор макрокоманд, изначально разработанных Лэсли Лэмпортом в 80-ых годах 20 века и ныне поддерживаемых интернациональной группой экспертов. Эти макрокоманды делают жизнь гораздо проще для среднего пользователя системы. ЛаТеХ до сих пор находится в активной разработке, так как новые возможности и пакеты надстраиваются над базовым движком. Различные ``дополнения'' для ТеХа так же разрабатываются, позволяющие, например, создавать PDF (``Портативный Формат Документов'' компании Адоб) файлы напрямую из исходного размеченного текста (я говорю ``в разработке'', но имею в виду, что они постоянно улучшаются; программы уже очень стабильны и обладают всеми возможностями).

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

Одна из притягательных возможностей ЛаТеХ - возможность менять частично или полностью типографское представление вашего текста лишь несколькими командами. Общее представление текста управляется:

  1. изменением ``класса документа'' (например, отчёт, письмо, статья, книга);
  2. применением ``пакета'' или файла стиля, которые вы хотите загрузить.

Вы можете, например, полностью изменить гарнитуру шрифта (для текста, заголовков разделов, сносок и всего прочего) и/или размеров используемых шрифтов изменением лишь одного или двух параметров в ``преамбуле'' вашего исходного размеченного текста. Точно также вы можете оформить всё, что угодно, в формат двух колонок, или повернуть страницы с портретной ориентацией на ландшафтную. Вероятно, есть такая возможность и у визуальных текстовых процессоров, но обычно это менее удобно и вы гораздо более вероятно приведёте всё в беспорядок и перепутаете всё из-за неудобства форматирования.

Типографский набор вы можете сделать столь подробным, насколько вы сами хотите этого. Вы можете выбрать полностью автоматический режим: просто определите класс документа и предоставьте всю остальную работу выполнить по умолчанию макрокомандам. В большинстве случаев это приводит к хорошим результатам, набор становится существенно более высокого качества, чем в любом визуальном текстовом процессоре (естественно, такие вещи как нумерация глав, заголовков и сносок, перекрёстные ссылки и всё остальное делает автоматика). Или вы можете более глубоко вмешиваться в процесс набора, загружая различные пакеты (или даже создавая свои собственные) для управления различными аспектами типографского набора. Если вы чувствуете к этому склонность, вы можете создавать действительно восхитительные и уникальные документы.

2.7 Соединяем всё вместе

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

Через некоторое время вы захотите просмотреть обновлённый файл. Нажмите на кнопку вызова подсистемы набора снова. На этот раз вам не придётся вызывать просмотрщик - если вы оставили его запущенным на фоне, он автоматически отобразит обновлённую набранную версию. Когда вы закончите с редактированием, вы можете удалить печатную версию файла для освобождения места на диске. Вам нужно только сохранить исходный файл размеченного текста; печатная версия может быть легко получена в любое время, как только потребуется.

3 Цифровое распространение

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

Возьмём для начала электронную почту. Обычно если человек хочет послать короткое, ``по случаю'', письмо, он печатает это письмо непосредственно в программе почтового клиента, независимо от того, является эта программа консольной (вроде Pine) или с графическим интерфейсом (например, Mozilla Thunderbird или Sylpheed)3. В этом случае письмо выходит в форме о текста (или, возможно, HTML, то есть языка разметки гипертекстовых документов, языка веб-страниц, которые сами по себе состоят из текста). Но что, если мы хотим послать более длинный текст, который подготовлен независимо от почтовой программы?

Для этих целей наиболее популярным является вложение в письмо документа, созданного в визуальном текстовом процессоре. Как альтернативная стратегия работает в этом случае?

Итак, мы провели различие между двумя ситуациями: является ли текст относительно короткий и несложный (записка, письмо, время собрания, список дел, расписание встреч) или более сложный (научная статья - вероятнее всего с множеством математических формул, отчёт с иллюстрациями, монография)? Подход `` текст плюс компьютерный набор'' предлагает разные решения для этих двух случаев.

3.1 Простой документ

В случае с простым документом мы должны спросить: вам действительно нужен компьютерный набор, информация о шрифте и всё прочее? Не является ли более продуктивным, более эффективным и экономичным сообщением просто напечатать простой текст, с минимальными элементами форматирования, которые позволяет простой текст? Это позволяет и экономить объём передаваемой информации (не забывайте, что файлы визуальных текстовых процессоров могут быть существенно больше простого текста, содержащего ту же фактическую информацию) и гарантирует, что никто не будет лишён возможностей прочесть сообщение из-за того, что они не могут запустить визуальный текстовый процессор Шик-Блеск 9.0. Вы можете прикрепить простой текст, созданный в текстовом редакторе, точно так же, как если бы прикрепили файл визуального текстового процессора, или просто можете вставить его из буфера обмена в тело сообщения (так как он содержит только простой текста). Так как исходные файлы ТеХа не содержат ничего более простого текста, вставленный размеченный текст содержит простые и очевидные метки форматирования, которые легко понять.

3.2 Сложный документ

Более длинные и сложные документы с тем же успехом могут быть прочитаны в форматированном виде. Математические символы трудно выражать в простом тексте, и, конечно, сложные диаграммы и изображения явно выходят за рамки возможностей простого текста. Как насчёт применения ТеХ в этом смысле? Я показал, что файлы визуального текстового процессора могут вызвать проблемы, поскольку у вашего получателя может не найтись визуального текстового процессора Шик-Блеск 9.0, который есть у вас. Но нельзя ли совместить их воедино? Даже если вы достаточно разбираетесь в ТеХе, чтобы попробовать его, как много ваших получателей имеют установленный ТеХ? Это резонный вопрос, но на него можно ответить. Если вы хотите, чтобы ваш получатель мог увидеть оформленную версию вашего файла без необходимости устанавливать ТеХ, вы можете:

  1. Конвертировать исходные тексты ТеХа в HTML. Имеются хорошие программы для этих целей (HTML и ТеХ на самом деле имеют тесные родственные узы, так как они оба позволяют логически размечать текст, так что их взаимная конвертация может быть выполнена с высокой точностью4. Тогда ваш получатель сможет прочесть оформленный текст любым броузером.
  2. Ваш получатель имеет доступ к Postscript-принтеру? В академической или деловой среде это очень частое явление. В этом случае вы можете послать полностью оформленную версию вашего документа в виде postscript-файла, который может быть просто отправлен на принтер. И/или его можно просмотреть на экране при установленной программе типа ghostview (свободна для загрузки из Интернета).
  3. Ваш получатель имеет установленный просмотрщик PDF-файлов вроде Adobe Acroread? (Опять-таки, он свободен для загрузки) Если так, вы можете послать полностью оформленную PDF-версию вашего документа.

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

4 Оговорка

Я попытался рассказать об альтернативном методе ``текст плюс система компьютерного набора'' в ущерб методу визуальных текстовых редакторов. Я понимаю, однако, что есть некоторые виды документов, для которых визуальные процессоры являются на самом деле лучшими инструментами. Полагаю, что это короткие, по случаю, документы, в которых дело оформления превыше содержимого: флаеры, постеры, пригласительные билеты на вечеринки и тому подобное. Вы можете сделать это и в ТеХ, но это будет не эффективно. Стандартных ЛаТеХовских классов (отчёт, статья и прочие) вам, очевидно, не хватит. И хотя ЛаТеХ очень лихо орудует различными вариантами шрифтов, которыми вы можете захотеть оформить текст, он не предназначен для смешивания и вкрапления весёленьких шрифтов, которыми вы захотите набрать несерьёзный документ. Логическая структура тут не главное: вы заинтересованы в возможностях ``чистого форматирования'' документа. Если вы хотите знать, оформляя эту строку шрифтом 36 кегля, не вытолкнет ли она последнюю строку на следующую страницу, чего вы не хотите? Тогда визуальные процессоры - ваш выбор.

Если большая часть вашей работы с текстом именно такого сорта, вы, скорее всего, уже давным-давно перестали читать эту статью. Если большая часть работы по подготовке текста связана с созданием относительно формальных документов, эта оговорка в данном случае не имеет значения.

5 Демагогия, демагогия

Наверное, не ускользнуло от вашего внимания то, что я до некоторой степени подготовился к этой теме. Да, это так. Дело в том, что это не предмет для академического спора между альтернативными методами подготовки текста. Чаша весов, в которых могущество и богатства основных производителей программного обеспечения, вся на одной стороне. Глупо, что мы рассматриваем ситуацию, в которой Микрософт Ворд уверенно стал, для большинства в мире, стандартном подготовки документов с использованием компьютеров. Но Ворд это стандарт, которому нечем больше похвалиться кроме того, что он является (или домогается того) быть стандартом.

Это очень похоже на ситуацию с раскладкой QWERTY. Вы знаете эту историю? Почему стандартное расположение клавиш на пишущей машинке (что распространилось и на компьютерные клавиатуры) имеет символы QWERTYUIOP на верхнем ряду клавиатуры? Оно не было таковым изначально. Это было придумано для того, чтобы существенно снизить скорость печати. Проблема была в том, что компетентность машинисток тех лет быстро обогнала возможности первых механических пишущих машинок: быстрая печать могла привести к застреванию клавиш, когда нажатие происходило быстрее, чем клавиша возвращалась обратно, ударившись о ленту. Раскладка QWERTY расположила клавиши таким образом, чтобы невозможно было печатать быстро. Это откровенно безумное расположение для клавиш на клавиатурах, но теперь слишком поздно что-либо менять: QWERTY - стандарт, и все попытки рационализировать клавиатуры разбивались об эту реальность.

Точно так же, я заявляю, что Ворд не имеет права быть стандартном подготовки документов, так как он однозначно менее эффективен (для большинства применений), чем уже существующие альтернативы. Надеюсь, что ещё не поздно в этом случае, что есть ещё возможность сказать НЕТ Ворду. На самом деле, в случае с Вордом, он хуже QWERTY: это не настоящий стандарт, но скорее попытка навязать его. Микрософтский ``стандарт'' для бинарного представления документа это что-то вроде прихоти корпорации Микрософт. Квази-монополия Ворда это лишь довесок к квази-монополии Микрософт Виндовс (событие, о котором я не буду здесь говорить). И до тех пор, пока на них хорошенько не надавят конкуренты, Микрософт не имеет никакого интереса в установке любого долгосрочного стандарта бинарного представления форматирования. С другой стороны, у них есть веские основания вынуждать вас ``обновлять'' Ворд время от времени. О, святая Мария Гваделупская, Ворд версии N+0 не желает читать документ, присланный вашими коллегами, созданный в Ворде версии N+1? Ну, наверное лучше обновить его, правда? Даже если в версии N+1 не появилось никаких новых возможностей по сравнению с версией N6

6 Ссылки

Если вы дочитали до этого места, вы скорее всего заинтересованы в более подробной информации о хороших текстовых редакторах, системе компьютерного набора ТеХ и так далее.

Лучшим местом для начала изучения ТеХ и ему подобных, вероятно, это домашняя страница TUG (TUG - TeX Users Group - Группа пользователей ТеХ). Здесь размещены все ссылки, которые вам могут потребоваться; одна из главных ведёт на сайт CTAN (Исчерпывающая Архивная Сеть ТеХ), с которого вы можете скачать полную систему ТеХ для практически любой компьютерной платформы. Эта система включает в себя программу типографского набора, большую коллекцию макрокоманд, просмотрщик и программное обеспечение для создания печатных файлов.

Пакеты ТеХа (свободные для любого использования) не включают обычно текстовых редакторов, которые вам так же потребуются (только если вы у вас нет такого). Выбор тут велик, но мой любимый текстовый редактор для работы с файлами ТеХа - Emacs, поставляемый с пакетом AUC TeX7. Последний делает Emacs очень дружественным к ТеХ: он будет подсвечивать синтаксис ТеХа, так что вы быстро увидите любые ошибки в вашей разметке, а так же он предоставляет широкий выбор команд ТеХ в виде обычных меню.

Если вы заинтересовались, здесь находится снимок экрана работы с TeX в текстовом редакторе Emacs8 (PNG, 40678 bytes).

Примечание

... визуальных1
прим. перев.: Автор текста постоянно употребляет аббревиатуру WYSIWYG, которую затруднительно перевести адекватно на русский. Здесь и далее я буду заменять это слово на варианты слова ``визуальный'', в частности, WYSIWYG-wordprocessors на ``визуальные текстовые процессоры''.
... Информации)2
прим. перев.: И снова, всюду аббревиатура ASCII будет заменяться на ``плоский/простой текст'', тем более, что символы нашего алфавита тоже туда не входят.
... Sylpheed)3
прим. перев.: В оригинале было ``Netscape или Eudora'', но первый уже помер и я заменил его на потомка - Thunderbird, а второй заменил по религиозным соображениям (нет в Дебиане) на Sylpheed
... точностью4
Бинарное кодирование, используемое в визуальных текстовых процессорах, чрезвычайно разнообразная зверюга, так что взаимная конвертация между ТеХом и форматом визуального текстового процессора не так проста. В дополнении ко всему, так как ТеХ - превосходный наборный движок, в принципе невозможно конвертировать ТеХовский документ, например, в Ворд, без потери части информации о форматировании
... NVU5
прим. перев.: В оригинале - Netscape Communicator, но он, как поётся в песне, мёртв, а я - ещё нет. Заменён на NVU, для которого есть дебиановский пакет.
... N6
Это особенно ценно, на мой взгляд, для человека, использовавшего Ворд на протяжении нескольких лет до перехода на ТеХ, и кто остро интересуется типографским набором, никаких стоящих возможностей не было добавлено в Ворд для виндовс с версии 2.0 с примерно 1990 года
... TeX7
прим.перев.: мой выбор не совпадает с мнением автора - посмотрите на Kile, который входит в поставку почти любой nix-системы; может быть, он и вам понравится.
... Emacs8
прим.перев.: А если захотите посмотреть на Kile - вот ссылка.
Читать далее

Обработка изображений: конвертация из RAW-формата



9 коммент.
Задача: требуется конвертировать снимки в RAW формате в Linux.
Решение: в Debian GNU/Linux есть несколько утилит, способных нам помочь - их можно просто поставить и сразу с ними работать.

Зачем и кому оно надо?
Многие цифровые камеры позволяют сохранять данные в RAW-формате - данные прямо с матрицы фотоприёмника, повторяющие структуру массива фотосенсоров (RGRGRG..., GBGBGB...). Для того, чтобы изображение можно было редактировать, его необходимо конвертировать из RAW-формата, использовав информацию о балансе белого, контрастности и интерполировав чёрно-белые значения баеровской матрицы в цветные пиксели. Некоторые конверторы, способны выдавать именно чёрно-белый массив точек, без цветовой интерполяции.
RAW-конвертор выполняет следующие преобразования:
  • Интерполяция баеровского массива точек в цветное изображение: наиболее важная функция. Почти все фотосенсоры (за исключением матриц Foveon) используют баеровский примитив RGGB. В процессе интерполяции из этих пикселей восстанавливаются цвета итеративными методами, что обеспечивает минимальное количество артефактов;
  • Баланс белого: съёмка часто производится при различных источниках света, каждый из которых имеет свою цветовую температуру. Она указывается при конвертации из RAW-формата.

Какие средства есть в Дебиане?
Простой поиск в репозитории
# apt-cache search RAW | grep image
выдаёт немало интересного, среди чего выделяются:
dcraw - decode raw digital camera images
gimp-ufraw - Gimp importer for raw images
mrwtoppm - tool to convert Minolta DiMAGE 5/7/7i RAW images to PPM
mrwtoppm-gimp - GIMP-plugin to support Minolta DiMAGE 5/7/7i RAW images
Всего этого должно хватить, чтобы более или менее комфортно работать с RAW-форматом в Linux.

Ставим и смотрим
Замечание по ходу: я прекрасно знаю, что этими несколькими программами средства по работе с RAW в Линукс не исчерпываются, однако пока я расскажу о том, что есть под руками, а потом, если будет желание, время и возможности, и о других программах. А пока о том, что есть непосредственно в Дебиан, во всяком случае в Debian v3.1 Sarge.

1. gimp-ufraw

Итак, первой программой, которой я воспользовался для работы с RAW-файлами, была gimp-ufraw - плагин для GiMP, дающий возможность конвертировать RAW. После установки этого плагина и перезапуска GiMP в меню появилась строчка, свидетельствующая о поддержке "чистого" формата. При попытке открыть RAW-файл, полученный с камеры, появляется диалог конвертора:

Скажу прямо, для бесплатной программы очень и очень неплохо. Можно поменять экспокоррекцию, баланс белого, цветовую температуру. Далее имеются настройки для цветовых профилей - по умолчанию sRGB, но скачиваением и установкой плагинов можно добавить огня в эти настройки. Самое интересное - управление кривыми: можно выставить линейные кривые, гамма-кривые и логарифмические. Внизу имеется гистограмма и проценты пере- и недоэкспонированных пикселей. Что ж, для GiMPовского плагина это, наверное, пять с плюсом.
Кроме RAW-файла Casio QV4000 были так же успешно открыты файлы с камер Canon EOS300D и FujiFilm S2 Pro. Тут надо отметить один забавный момент: в навороченном Adobe Photoshop CS2 тоже есть RAW-конвертор, но помимо перегруженности его совершенно бесполезными ползунками (и отсутствием нужных), был удивлён, что он не смог открыть RAW с моей камеры Casio. Вот так проприетарный продукт! А такой простой камеры не знает... Так что ufraw в этом плане обгоняет в том числе и проприетарные конверторы.
В общем, gimp-ufraw очень понравился, и он стал основным инструментом по работе с RAW-форматом.

2. dcraw
Далее была опробована программа dcraw, которая конвертирует RAW-файлы в формат ppm и фотошоповский psd. Утилита консольная и очень мощная, с большим количеством параметров. Она, как и gimp-ufraw, без проблем разобралась с raw-файлом моей камеры Casio, и конвертировала его в 16-бит ppm:
$ dcraw -2 kx821000.raw
Это, согласно справке dcraw (вызов без параметров, помимо man dcraw), преобразует в 16-бит ppm мой указанный файл. Отлично, справилось и открылось GiMP.
Среди других интересных и полезных опций программы:
-a Use automatic white balance
-w Use camera white balance, if possible

-m Don't convert camera RGB to sRGB
-d Document Mode (no color, no interpolation)
-f Interpolate RGGB as four colors
-s Use secondary pixels (Fuji Super CCD SR only)
-2 Write 8-bit PPM with 0.45 gamma (default)
-3 Write 16-bit linear PSD (Adobe Photoshop)
-4 Write 16-bit linear PPM
я бы выделил -d, которая позволяет вытащить из файла просто баеровский массив точек, без конвертации в цвета. Почти то, что и упало на матрицу. Для художественной съёмки это в общем особенно не нужно, а для научной - очень пригодится: часто нужен именно массив точек, без интерполяции на цвета. Благодаря dcraw теперь это можно получить.

Заключение
Всё меньше и меньше областей превосходства проприетарных программ над бесплатными - и это не может не радовать. Вот и в обработке RAW-файлов пользователи открытых систем не обделены хорошими и мощными утилитами, такими, как gimp-ufraw и dcraw. Есть и другие программы, но о них в других постах.
Читать далее

IceWM Window Manager: Ледяной десктоп антарктических пингвинов



46 коммент.
Много оконных менеджеров в Linux, хороших и разных, и у каждого свои преимущества и недостатки. В этом посте я не буду сравнивать оконные менеджеры в Linux, а просто расскажу об оконном менеджере, которым пользуюсь с момента перехода на Debian. Это IceWM - холодный и строгий, простой и быстрый - компромисс между функциональностью и скоростью.


Как выглядит IceWM?
IceWM напоминает доведённый до ума интерфейс Windows 95: панель задач, кнопка Пуск IceWM, всплывающие подсказки, трей, часы... Только стильно, красиво и не занимает много ресурсов. Установка IceWM в базовой комплектации
отнимет около 7Мб, что совсем не много за более чем функциональный интерфейс. Однако по умолчанию тема для IceWM (в Debian, во всяком случае) мягко говоря страшновата - такой тонкий намёк на то, что надо оконный менеджер подстроить под себя.


Кроме того, в меню могут отсутствовать кириллические символы - что видно на скриншоте - и там вместо русских пунктов меня будет просто пустота. Лечится это очень просто: нужен пакет gsfonts, который обычно устанавливается вместе с GiMP. После установки его потребуется в меню "Выход" (самый нижний пункт) нажать "Перезапустить IceWM" (просто пункт IceWM, пока у вас кириллица не видна). После этого русские менюшки видны на ура.

Русский есть, но темы уж больно убогие. Это поправимо, так как в дистрибутиве Debian есть специальный пакет, icewm-themes, который можно поставить и наслаждаться кучей разнообразных тем. Это потребует 16 Мб, зато не придётся лезть на сайт и качать их.


Если вы хотите, чтобы ваш десктоп был более рациональным, подберите тему под свой вкус и представления о красоте. Вот, например, используемая мной сейчас тема TrueCurve-1.0.4


Эта тема, как и многие другие, лежит на freshmeat. О том, какие есть самые красивые темы для IceWM, можно узнать здесь.

Следует отметить, что далеко не в каждой теме есть обои - так что не удивляйтесь, если после смены темы у вас на фоне замаячит однотонный фон или вообще сеточка иксов. Обои можно поставить руками, для чего в конфиге темы придётся кое-что поправить - но об этом ниже.


Подгоняем ледяной десктоп под себя
IceWM создан для того, чтобы быть лёгким и удобным - но у каждого представление об удобстве своё, так что следующий естественный шаг - подогнать IceWM под себя.
Так, русский в нём поправили, другие темы попробовали, что-то для себя выбрали. Но всё равно как-то аскетично. Нельзя ли что-то поправить или переделать, навесить немножко полезных рюшечек? И вообще, что можно сделать в IceWM для индивидуализации десктопа и оптимизации своей работы в нём?

Короткий ответ: многое. Для начала идём в скрытый каталог ~/.icewm (в домашнем каталоге) и смотрим, что там внутри:

keys
menu
preferences
programs
theme
toolbar
winoptions

Какой файл и на что влияет? Как говорится здесь, размещение параметров в нескольких файлах выполнено весьма логично:
keys
Горячие клавиши запуска приложений

menu
Управляет содержимым "стартового" меню

preferences
Управляет поведением и общим внешним видом IceWM

programs
Управляет содержимым "programs", подменю стартового меню

toolbar
Управляет рядом запускающих кнопок на панели задач, и имеет такой
же синтаксис как и файл меню

winoptions
Управляет поведением отдельных приложений

Для того, чтобы изменить поведение IceWM, можно влезть в конфиг и поискать параметр по ключевому слову - высока вероятность, что вы его отыщете быстро, так как конфиг подробно прокомментирован. Вот его кусочек:

# "Hide window" shortcut
KeyWinHide="Alt+F11"

# "Rollup window" shortcut
KeyWinRollup="Alt+F12"

# "Window menu" shortcut
KeyWinMenu="Alt+Space"

# "Next item" shortcut
KeySysSwitchNext="Alt+Tab"

Как видите, всё можно настроить под себя. Лучше всего посмотреть на часто используемые комбинации клавиш и поправить конфиг так, чтобы вы смогли их использовать. Управлять так окнами гораздо проще и быстрее. Например, у меня сворачивание окна стоит на "CTRL+Пробел", переключение на "Alt+Tab" и остальные комбинации я тоже подогнал под себя - и управление окнами у меня теперь идёт со скоростью света, что сильно экономит время.
Кроме того, окно можно поднимать и опускать по слоям - чтобы, например, одно окно всегда было ниже остальных (очень выручает при работе в GiMP). Вот как выглядит меню при щелчке по правой крайней кнопке наверху окна:


У меня оно вызывается по "Shift+Esc", вы можете настроить это под свой вкус.

Итак, помимо стандартных операций с окнами, можно:
+ скрывать окна (при этом их не будет на строке задач, но при переключении задач они будут последними в списке);
+ скручивать (останется только заголовок окна);
+ перемещать по слоям (меню, поверх других, под другими, десктопный уровень);
+ перемещать на другие рабочие столы;
+ сделать видимым на всех рабочих столах;
+ сделать пиктограммой в трее.

Также очень советую настроить горячие клавиши (хоткеи) под себя для запуска часто используемых приложений. Отредактируйте файл настройки ~/.icewm/keys для установки быстрых клавиш на запуск часто используемых программ. Кнопка Win (здесь она называется Super) на клавиатуре очень пригодится - должны же мы использовать эту подаренную нам микрософтом клавишу? Вот на неё и повесьте запуск приложений. Например, у меня они такие:
key "Super+t" xterm -font -misc-*-*-*-*-*-*-*-*-*-*-100-*-ru
key "Super+p" gimp
key "Super+z" xscreensaver
key "Super+q" scribus
key "Super+i" gqview
key "Super+w" /opt/openoffice.org2.0.4/program/swriter
key "Super+x" /opt/openoffice.org2.0.4/program/scalc
key "Super+Shift+i" /opt/openoffice.org2.0.4/program/simpress
key "Super+g" gnumeric
key "Super+a" xmms
key "Super+Shift+w" abiword
key "Super+m" firefox
key "Super+b" mozilla-thunderbird
Таким образом, за несколько нажатий клавиш я могу запустить десяток нужных мне программ. Быстро, просто и удобно.

Навешиваем рюшечки
Их не так много, как в других средах, но всё-таки есть. Первым делом я бы посоветовал подогнать комбинации клавиш управления окнами под себя - и вы забудете о мыши и тыканью по маленьким кнопочкам. Это отнимает время и силы - кроме того, вы теряете концентрацию внимания на том, что вы делаете. Через некоторое время горячие клавиши управления окнами будут отточены до уровня рефлекса, и вы перестанете замечать это.
Потом, можно поставить несколько полезных приложений. Как вам нравится полупрозрачный календарик? Тогда поставьте пакет gdeskcal, который есть в Debian:
apt-get install gdeskcal
и вы сможете видеть календарик на месяц, с полупрозрачностью, с возможностью смены тем, надписью на дате важных событий... Маленькая программа, но очень полезная, и к тому же интегрируется в трей IceWM.

Для созерцания ресурсов очень подойдёт программа torsmo или conky. Тоже есть полупрозрачность, а подогнать её под свои конкретные нужды помогает её конфиг .torsmorc, в котором можно поправить всё, что угодно. Однако чаще используется conky, как настроить conky можно прочитать здесь.

Ещё полезные программы - xpad и knotes. Это липкие записки, которые клеят на мониторы или холодильники - теперь тоже самое можно делать на рабочем столе. Knotes будет сидеть в трее и при нажатии на неё увидите все свои заметки. Вот как выглядит всё это в рабочем состоянии:


Если вас не устраивают обои, идущие с темой, можно поставить свои. Впрочем, это немного неочевидно - здесь я опишу этот процесс. Итак, идём в ~/.icewm/preferences, открываем на редактирование и ищем переменную DesktopBackgroundImage, которую меняем на:
DesktopBackgroundImage="/home/логин/.icewm/обои.jpg"
Никто не запрещает использовать KDEшные и GNOMEистые
программы, которые любят лезть в трей. Например, для монтирования удалённых сетевых ресурсов я часто использую Smb4K, и он без всяких вопросов садится в трей IceWM. Несколько более капризен klaptop_check, который мониторит состояние батарей на ноутбуке: через 15-20 секунд после запуска пропадает с экрана. Но если запустить до него любое КДЕшное приложение, он сидит себе в трее IceWM как родное.

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

Что умеет IceWM?
Так как это оконный менеджер, а не навороченная среда, возможностей у него не так много - это тот самый компромисс, о котором я говорил выше. Многое придётся делать руками или ставить дополнительные программы, например, монтировать устройства. Впрочем, в этом есть положительный момент: вы привыкаете к эффективной работе, вешая всё на горячие клавиши и скрипты, подстраивая графическую оболочку под себя.

Итак, возможности IceWM:

+ панель задач, на которой отображаются запущенные приложения;
+ меню приложений, вложенные пункты меню;
+ трей, в котором есть часы, потребление процессорного времени, активность сетевых интерфейсов, значки приложений (поддерживает приложения, сворачивающиеся в трей);
+ смена обоев (правда, требуется перезагрузка иксов);
+ темы (разнообразные, в том числе имитирующие другие ОС);
+ независимые горячие клавиши;
+ переключение рабочих столов (по умолчанию 4, можно менять);
+ список окон, быстрая навигация по открытым окнам;
+ убирание панели задач с экрана (как в угол, так и вниз);
+ управление "слоями" окон;
+ всплывающие подсказки (на русском);
+ полная локализация (никаких проблем с кириллицей, для чего требует defoma и gsfonts).

Чего в IceWM можете не искать:
- значков на рабочем столе (есть ROX-filer);
- полупрозрачных окошек (только отвлекает от работы);
- навороченных конфигураторов (есть конфиги, простенькие графические конфигурялки).
Многие настройки можно включить в конфигах, которые, кстати, очень просты и обильно прокомментированы. Для тех, у кого идиосинкразия к конфигам, есть графические GTKшные конфигураторы - iceme (для изменения содержимого стартового меню в IceWM) и icepref (изменение настроек в ~/.icewm/preferences). Обе входят в дистрибутив Дебиан.

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



Ссылки
Время от времени я пишу о всё новых замечательных возможностях, которые нахожу в IceWM. Например, о темах для IceWM - какими красивыми они бывают и
откуда их взять. Или о том, что настройка IceWM может быть проведена из удобной графической панели управления. Другие справочные материалы и ответы часто задаваемые вопросы по IceWM на русском можно найти тут. А если и этого мало, то в IceWM есть ещё много возможностей, которые вам понравятся!
Читать далее

Knoppix Linux Math - Математические программы живьём



11 коммент.
Иногда бывает полезно ознакомиться с программой, прежде чем её искать, качать и ставить. Для ознакомления с научными приложениями Linux есть замечательный живой дистрибутив Knoppix Linux Math, построенный на базе хорошо известного Кноппикса. Здесь рассматривается версия 5.0.1 Knoppix Linux Math, распространяемая на DVD.

Запуск и работа в Knoppix Linux Math не представляет никаких сложностей, однако по сравнению с обычным Кноппиксом имеется дополнительное меню, в котором перечислены специализированные программы.

И тут есть на что взглянуть! Имеется LaTeX с интегрированной средой Kile и TeXmacs, строитель графиков GNUplot, система численных расчётов GNU/Octave и символьных Maxima, пакет статистических расчётов GNU R, алгебраическая система GAP и другие приложения. Помимо них, есть и другие, не менее знакомые поклонникам свободных систем: OpenOffice.org, Scribus, Audacity, XMMS...

Редкие и малоизвестные программы
Заинтересовал пакет визуальной геометрии Dr.Geo. Наверное, он может подойти для обучения геометрии: программа позволяет создавать фигуры из примитивов и обладает довольно продвинутой системой управления ими.

Однако придётся привыкнуть к её нетривиальному интерфейсу: так, чтобы нарисовать окружность, сперва следует поставить точку центра (отдельным инструментом "Точки") и касательной. Хотя мысль интересная...

Также имеется генератор фракталов XaoS. Простой и понятный интерфейс: левая кнопка мыши - приближение, правая - отдаление, средней кнопкой можно перемещать фрактал внутри окна.

Можно вызвать заложенные фракталы и поменять их параметры, менять число итераций расчётов и прочее.

С помощью программы KALI можно изучать группы симметрии - очень удобно. Где же она была, когда я учил кристаллографию!?

Можно создавать симметричные структуры на основе имеющихся групп симметрии и сразу их просматривать.

Программа Surf умеет строить поверхности на основе своего собственного языка. С ним я пока не разобрался, поэтому сходу ничего построить не удалось :-)

Можно создавать симметричные структуры на основе имеющихся групп симметрии и сразу их просматривать.


Программы более известные
Конечно, для многих одним из главных инструментов работы является LaTeX и естественно, что на Knoppix
Linux Math он имеется. Также есть оболочки для него на выбор: Kile 1.8 и TeXmacs 1.0.6.4, которые можно сразу попробовать в деле и решить, какая из них больше вам подходит. Или просто вооружиться любимым текстовым редактором (благо, их в Knoppix Linux Math великое множество).

Приятно видеть в сборе сразу такое количество серьёзных математических инструментов, как GNU/Octave, свободный аналог MATLAB, MAXIMA, из которой вышли Maple и MathCAD, GNU R - система статистических расчётов и другие. Это позволяет оценить их возможности, и уже после этого принимать решение, стоит ли их ставить и изучать.


Заключение

Целью этого краткого обзора было рассказать о существовании такой разновидности Knoppix Linux (и, соответственно, Debian GNU/Linux), которая способна проиллюстрировать многообразие математических программ без необходимости их установки. Бывает очень полезно предварительно ознакомиться с возможностями программы, или узнать о новых программах. В любом случае, этот живой дистрибутив стоит того, чтобы с ним познакомиться поближе.

На всякий случай, скачать Knoppix Linux Math (Математический Линукс) можно здесь.
Читать далее