воскресенье, 7 декабря 2008 г.

А что ещё может lyx

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

суббота, 13 сентября 2008 г.

Как сделать альтернативыне короткие заголовки в Lyx

LyX уже очень удобен при создании разного рода статей и книжек, но проект всё ещё не покрывает повседневные нужды... Короче говоря, в нём очень много чего не хватает.

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

Интереса ради, сделал простой latex-файл с нужной функциональностью и импортировал его в Lyx.

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

\begin_inset OptArg status collapsed \begin_layout Standard Короткий заголовок \end_layout \end_inset

В общем, вот инструкция:

  • Создаём файл *.lyx c таким содержимым:
    \lyxformat 276
    
    \begin_document
    
    \begin_header
    
    \textclass book
    \language russian
    \inputencoding auto
    
    \paperpagestyle fancy
    
    \end_header
    
    \begin_body
    
    \begin_layout Section
    \begin_inset OptArg
    status collapsed
    
    \begin_layout Standard
    Короткий заголовок
    \end_layout
    
    \end_inset
    
    Очень-очень-очень-очень-очень длинный, длиннющий заголовище
    \end_layout
    
    \end_body
    \end_document
    
    и открываем его в Lyx
  • выделяем серенькую штучку Opt и копируем её в свой документ, в свой длинный заголовок
  • заменяем содержимое штучки на нужный короткий заголовок

Всё, теперь в верхней части страницы и в содержании будет использоваться короткий заголовок

четверг, 4 сентября 2008 г.

%)

В Matlab комментарии начинаются со знака '%'.

Обожаю писать комментарии вида

0*q2(0,0) + 0*o1p_exp2(0,0,0) .+ ... %) я не знаю почему, но работает только так

суббота, 23 августа 2008 г.

Octave как скриптовый язык

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

Чтобы не "таскать" за собой Matlab, можно воспользоваться, например, Matlab Compiler. На выходе будет исполняемый бинарный файл, для работы которого нужно внушительное количество библиотек Matlab'а.

Другой вариант — использовать open-source ПО для выполнения m-файлов. Кроха (по сравнению c Matlab'ом) Octave умеет это делать.

Создадим m-файл hello.m:

#!/usr/bin/octave --silent

disp('hello world!')
2+2
input('Done.');

И дадим ему права на исполнение. В Winodows придётся создать bat-файл hello.bat:

"c:\program files\octave\octave.exe" --silent hello.m

Или же нужно создать соответствующую ассоциацию файлов для типа m.

В результате получим исполняемый файл (hello.m или hello.bat), который при запуске выведет:

hello world
ans = 4
Done.

и будет ждать нажатия Enter.

Всё это может спасти от необходимости переписывания m-файла на какой-нибудь C++. Чем меньше функций из Matlab'овских toolbox'ов используется в m-файле, тем больше шансов, что он запустится в Octave.

вторник, 15 июля 2008 г.

Линуксойд

Sorce'ик не компилится,
Система в kernel panic.
Линуксойду видятся
сны in command line

воскресенье, 13 июля 2008 г.

svg2eps

SVG — прогрессивный формат векторной графики. Вообще говоря и анимации, но не будем настолько прогрессивны.
Inkscape — открытый и удобный редактор графики в этом формате.

Как бы замечателен ни был svgsvgz), иногда нужно его конвертировать во что-то, с чем умеют работать старые программы и пакеты (офис, tex). В растр его легко переводит ImageMagic. А вот с другими, векторными, форматами — проблемы.

Но после элементарного
inkscape --help
выяснилось, что Inkscape способен выступать в роли простого и быстрого конвертора:
inkscape --without-gui --file=SOURCE.SVG --export-eps=RESULT.EPS

вторник, 1 июля 2008 г.

Как извлечь картинки из *.doc?

MS Word, как известно, предоставляет возможность сохранить все изображения, используемые в документе, непосредственно внутри файла *.doc. При этом изображение в документе может довольно значительно отличатся от исходной картинки, которая была вставлена в документ.

Что делать, если необходимо "достать" картинку из документа Word в таком виде, в каком она была при вставке? Можно вернуть для рисунка все параметры (такие как размер, обрезка...) к исходному состоянию. Процесс мучительный, но даст почти нужный результат... при нажатии PrintScreen. Если картинок вытащить нужно много, то убить можно очень много времени.

Ещё можно поискать различного рода макросы и попытаться написать свою программу на основе спецификации...

Рациональнее воспользоваться возможностями новых форматов. Формат документов в Office 2007, как и ODF, представляет собой zip архив со всеми вложениями внутри. Извлечение картинок будем делать на примере ODF (Open Document Format). Microsoft скоро научит свой Office работать с этим форматом... А пока этого не произошло, нам понадобится OpenOffice.org

  • Первым делом, открываем документ в OO Writter. Надо отметить, что большому документу потребуется много оперативной памяти и времени на преобразование, которое произойдёт на этом шаге.
  • Сохраняем документ в формате *.odt и закрываем OpenOffice. Как уже отмечено, файл *.odt представляет собой просто zip архив, содержащий все "внутренности" документа как отдельные файлы.
  • Переименовываем наш NewDocument.odt в NewDocument.zip и извлекаем из архива папку pictures... Там-то и будут находится нужные нам картинки.
При этом методе картинки в архиве находятся вовсе не обязательно в том порядке, в котором они расположены в документе.. Если последовательность нужна, то рисунки из ODF можно извлечь при помощи writer2latex. В моём дистрибутиве Linux (Mandriva 2008.1), после установки соответствующего пакета, нужный результат получается такой командой:
java -jar /usr/share/java/writer2latex.jar -latex  \
/путь/NewDocument.odf /путь/к/папке/для/рисунков/

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