Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Tuesday, July 7, 2009

Bachelor Thesis in Computer Science. Part 3. Слайды в LaTeX-beamer

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

  • Полное разделение оформления и содержания. Сначала пишите текст, а оформление можно сменить в любой момент
  • Очевидный плюс, но забывать о нём нельзя: можно использовать все возможности LaTeX
  • Красивые и удобные темы оформления "из коробки"
  • Широкие возможности в настройке и доводке

Пример применения

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

Как видите, слайды выглядят весьма привлекательно. К тому же, представьте, что каждый слайд - это всего пара строчек текста. А теперь, как я и обещал, несколько советов подкрепленные кодом:
  • Не пытайтесь изменить шрифт, чтобы вместить на слайд как можно больше информации. Выполненные в PowerPoint с 12pt шрифтом презентации навевают тоску и абсолютно нечитаемы с расстояния в 5-10 метров. Если уж очень нужно разместить на слайде побольше, а количества строк не хватает - используйте двухколоночную вёрстку. Тогда даже большое количество формул может поместиться на один слайд:
    Для верстки в две колонки используйте пакет multicol(на примере вставки изображений в две колонки):
    \usepackage{multicol}
    %%....
    \begin{multicols}{2}
    \begin{figure}[!ht]
    \begin{center}
    \includegraphics[width=\columnwidth]{../img/positioning_slides1}
    \end{center}
    \end{figure}

    \begin{figure}[!ht]
    \begin{center}
    \includegraphics[width=\columnwidth]{../img/positioning_slides2}
    \end{center}
    \end{figure}
    \end{multicols}
  • Создатели тем оформления beamer не подумали, что название может быть длинным и сократить его будет нельзя. Поэтому во многих темах длинные названия не влазят на слайд. Однако это можно исправить - например, использование подправленной темы оформления, которую вы видели на скриншотах:
    \usetheme{Antibes}
    \useinnertheme{rounded}
    \setbeamertemplate{headline}
    {%
    \begin{beamercolorbox}[wd=\paperwidth,ht=6.5ex,dp=1.125ex,%
    leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}
    \usebeamerfont{title in head/foot}\parbox[b]{0.95\paperwidth}{\@title}
    \end{beamercolorbox}
    \begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,%
    leftskip=.3cm,rightskip=.3cm plus1fil]{section in head/foot}
    \usebeamerfont{section in head/foot}%
    \ifthenelse{\value{page}>1}{\hskip2pt\raise1.9pt\hbox{\vrule width0.4pt height1.875ex\vrule width 5pt height0.4pt}}{}
    \hskip1pt%
    \insertsectionhead
    \end{beamercolorbox}
    \begin{beamercolorbox}[wd=\paperwidth,colsep=1.5pt]{lower separation line head}
    \end{beamercolorbox}
    }


    \setbeamertemplate{footline}
    {%
    \leavevmode%
    \hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fill,rightskip=.3cm]{author in head/foot}%
    \usebeamerfont{author in head/foot}\insertshortauthor
    \end{beamercolorbox}%
    \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}%
    \usebeamerfont{title in head/foot}Слайд \insertframenumber
    \end{beamercolorbox}}%
    \vskip0pt%
    }
    Этот небольшой сниппет может стать отправной точкой для написания собственных тем оформления - в нём совсем несложно разобраться по названиям команд
  • Скриптованные презентации никому не нужны. Я имею в виду моргающие анимированные слайды со сложной системой переходов, которые можно создать в Microsoft Office или OpenOffice. Для улучшения восприятия достаточно простейших эффектов, которых можно легко добиться в beamer. Единственной полезной вещи, которой может не хватать в beamer по сравнению с PowerPoint и Impress - воспроизведение видео. Однако встроить видео в PDF тоже можно! Пример:
    \usepackage{movie15}
    %%...
    \frame
    {
    \includemovie[externalviewer]{}{}{../vid/mouse_emulation.avi}
    }
    Этот код отводит отдельный слайд под видео. Стоит отметить, что видео можно будет проиграть только в Adobe Reader (я не знаю свободных альтернатив, которые бы поддерживали видео). Также обратите внимание, что я использую внешний плеер. Использование внешнего плеера гарантирует максимальную кросс-платформенность вашего PDF документа

Выводы

Используйте LaTeX, используйте beamer. Забудьте о медленных, неудобных офисных пакетах, полных недостатков и ошибок.

P.S.

Здесь вы можете найти исходники презентации (без изображений и видео)

Sunday, March 22, 2009

Настройка удобного переключения раскладки клавиатуры для трёх и более языков

Многие пользователи ПК пользуются всего двумя раскладками клавиатуры - для родного и для английского языка. Если Вы привыкли к использованию двух раскладок, то переход на использование трёх или более раскладок может быть очень болезненным: Вы будете случайно попадать не на ту раскладку, писать белиберду и страшно ругаться. Для того, чтобы облегчить себе жизнь с тремя и более раскладками(у меня английская, русская и украинская), я настроил такую схему переключения раскладок: левый Shift + левый Ctrl переключает между первой и второй раскладкой, а правый Shift + правый Ctrl переключает циклически все раскладки. Так как обычно я переключал раскладку левой рукой, то привычная комбинация введением новых раскладок нарушена не была, при этом сохранилась возможность перейти на любую добавленную раскладку.
Основным источником информации для меня стал вот этот сайт. Ниже руководство для нетерпеливых :)
Итак, первым делом скажу, что я не захотел полностью следовать советам с указанного выше сайта, так как предложенный там способ задания конфигурационных файлов предполагал редактирование xorg.conf, а также добавление собственных конфигурационных файлов в папки настроек Xorg. Таким образом, я пошел по пути наименьшего сопротивления и моё решение - "fast and dirty".
В данном руководстве я предполагаю, что переключение раскладок по Shift + Ctrl уже настроено, все раскладки уже добавлены. Начнём с того, что получим текущую настройки XKB:

xkbcomp :0
, где :0 - id вашего X Display (скорее всего он у вас :0). Эта команда создаст файлик server-N.xkb , где N - указанный Вами id. Откройте этот файлик и найдите там описание символов ISO_Next_Group, ISO_Prev_Group, ISO_First_Group и ISO_Last_Group. У меня описания выглядят примерно так:
    interpret ISO_Next_Group+AnyOfOrNone(all) {
virtualModifier= AltGr;
useModMapMods=level1;
action= LockGroup(group=+1);
};
interpret ISO_Prev_Group+AnyOfOrNone(all) {
virtualModifier= AltGr;
useModMapMods=level1;
action= LockGroup(group=-1);
};
interpret ISO_First_Group+AnyOfOrNone(all) {
action= LockGroup(group=1);
};
interpret ISO_Last_Group+AnyOfOrNone(all) {
action= LockGroup(group=2);
};
ISO_Next_Group, ISO_Prev_Group, ISO_First_Group и ISO_Last_Group - это специальные символы, которые как раз и отвечают за переключение раскладок. В варианте указанном выше ISO_Next_Group переключает на следующую раскладку, ISO_Prev_Group - на предыдущую, ISO_First_Group - на первую, а ISO_Last_Group - на вторую. Осталось переназначить клавиши, чтобы они указывали на другие символы. Дифф для трёх раскладок (для четырёх и более - добавятся новые группы):
     key  {         [          Return ] };
- key { [ Control_L, ISO_Prev_Group ] };
+ key {
+ symbols[Group1]= [ Control_L, ISO_Last_Group ],
+ symbols[Group2]= [ Control_L, ISO_First_Group ],
+ symbols[Group3]= [ Control_L, ISO_First_Group ] };
key {
type= "ALPHABETIC",
symbols[Group1]= [ a, A ],
@@ -1262,7 +1265,9 @@ xkb_symbols "pc+us+ru(winkeys):2+ua(wink
};
key {
type= "PC_CONTROL_LEVEL2",
- symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
+ symbols[Group1]= [ Shift_L, ISO_Last_Group ],
+ symbols[Group2]= [ Shift_L, ISO_First_Group ],
+ symbols[Group3]= [ Shift_L, ISO_First_Group ]
};
Т.е, заменим для комбинации клавиши LFSH + LCTL символ ISO_Prev_Group на ISO_First_Group и ISO_Last_Group в зависимости от раскладки.
После того, как Вы отредактировали файл, осталось залить настройки. Делается это так:
xkbcomp file.xkb :0
, где file.xkb - ваш сохранённый файл, а :0 - display id.
Хочу отметить, что при перезагрузке иксов все ваши настройки сбросятся. Т.е., для того, чтобы настройки загружались при старте, их надо добавить в автозагрузку. Минус такого подхода в том, что если обновить X Server, то настройки могут стать несовместимыми и иксы могут зависать. Поэтому я просто добавил шорткат для применения настроек и запускаю его тогда, когда мне нужно.
Еще один важный момент: xkbcomp перезаписывает все настройки. Т.о., если Вы переназначите какие-нибудь клавиши через xmodmap, то Вам нужно будет заново создавать файл настроек, иначе при применении настроек сделанные через xmodmap переназначения пропадут. Удачи с настройкой!