вторник, 7 июля 2009 г.

Пара LaTeX-мелочей

Кое-что из свеженьких рецептов. Ничего особенного и, для знатоков LaTeX, особо нового...

  1. Первым делом мне захотелось наладить висячую пунктуацию. В Google я пока не забанен, посему сразу же вышел на правильный рецепт — «Висячая пунктуация в LaTeX» на typedef.ru. Обнаружилась только одна проблема: кавычки в начале блочной цитаты (хоть в окружении quote, хоть в quotation) «висеть» никак не хотели... Да и странно ожидать от них иного поведения, если вспомнить, что эти окружения реализованы через list. Что мне всегда казалось странным, но не о том речь.

    Ломать поведение list и вообще глубоко копать я не стал, а счел наиболее корректным и удобным определить новое окружение, которое будет использовать механизмы форматирования, стандартные для абзацев, и тем самым станет совместимо с висячей пунктуацией. Результат:

    \newenvironment{quoting}{%
     \vspace{\parskip}%
     \hfill\begin{minipage}[t]{0.9\textwidth}%
    }{%
     \end{minipage}%
     \vspace{\parskip}%
    }

    Замечу, что в таком варианте цитата получается без отступа от правого края, в отличие от стандартных окружений. Однако нет проблем его получить — для этого нужно всего лишь заменить \hfill на \hfil. Еще момент: окружение minipage накладывает некоторые ограничения и особенности, в частности — при работе со сносками. Для меня это неактуально, так что разбирательство с этими проблемами оставляю читателю.

  2. Неприятной неожиданностью для меня стало то, что пакет inputenc с опцией utf8 не распознает символ неразрывного пробела... Решение тривиально:

    \usepackage[utf8]{inputenc}
    \DeclareUnicodeCharacter{00A0}{~}

воскресенье, 5 июля 2009 г.

/etc/hal/fdi/policy/10-x11-input.fdi — окончательная версия

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
    <device>
        <match key="info.capabilities" contains="input.keymap">
            <append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
        </match>
        <match key="info.capabilities" contains="input.keys">
            <merge key="input.xkb.rules" type="string">base</merge>
            <merge key="input.xkb.layout" type="string">us,ru</merge>
            <merge key="input.xkb.options" type="string">grp:ctrl_shift_toggle,
                grp_led:scroll,compose:caps</merge>
            <merge key="input.xkb.variant" type="string">,winkeys</merge>
        </match>
    </device>
</deviceinfo>

Естественно, в реальности строка с «input.xkb.options» не переносится, просто здесь она бы неаккуратно выглядела.