четверг, 19 февраля 2009 г.

Продолжение тестирования MiKTeX 2.7

  1. Проблема с неподхватыванием jpg\png решилась путем прописывания строчек \DeclareGraphicsRule в стартовый файл. Причем, именно в такой последовательности:
    \ifpdf
    % идет компиляция в PDF
    \else
    % идет компиляция в DVI
    \DeclareGraphicsExtensions{.eps,.png,.jpg}
    \DeclareGraphicsRule{.png}{eps}{.bb}{}%
    \DeclareGraphicsRule{.jpg}{eps}{.bb}{}%
    \fi
    Так и только так. В противном случае, если же прописать \DeclareGraphicsRule и в PDF секции, pdflatex, при использовании графики в png формате отображет только бокс с именем файла, а в случае с jpg файлом -- все ок.
  2. Обнаружилась иная проблема. Пакет Caption2 устарел. Caption3 наследует не все свойства предыдущего пакета, надо разбираться.
  3. Теперь переменная \pdfoutput определена всегда. поэтому для точного определения, идет ли компиляция в pdf или в dvi, необходимо использовать пакет ifpdf, см. MiKTeX 2.7 Known Issues.
  4. Конфликт между пакетом hypcap и caption. Ошибка "! Package hypcap Error: You have forgotten to use \caption". Требует обязательной подписи рисунков, видимо, из-за необходимости простановки гиперрсылок. В конце концов, поскольку caption3 самостоятельно взаимодействует с hypcap, я просто исключил последний из списка подгружаемых пакетов.
  5. Заработал запуск редактора по 'e' при ошибке. Каким образом -- экспериментов проведено недостаточно. Скорее всего, что редактор определяется в настройках YAP (Options|Inverse Search). Если был выбран WinEdt, параметры которого подхватываются автоматом, то по 'e' вызывался WinEdt. Если прописать notepad, то вызывается именно он. Проблема в том, что в обязательном порядке надо прописывать командную строку. Осталось выяснить, в какие конфигурационные файлы при этом вносятся изменения. Если они вообще вносятся.
  6. Теперь LaTeX ругается на -src-specials и -terminal в командной строке. В WinEdt пришлось это все убрать, иначе не компилирует. Надо детально разбираться
  7. PsCyr заработал и при установке в кривые директории (вместо понятных, приятных и портабельных texmf\localtexmf). Батник для установки написан. Более детально --- TODO.
  8. Для HTLATEX необходимо таки ставить ImageMagick. Чтобы им пусто было. Надо же назвать команду convert... Но не беда, все решается небольшой ручной правкой. В файле %\Program Files\MiKTeX 2.7\tex4ht\base\win32\tex4ht.env команду convert надо переименовать в convertIM, чтобы не было конфликта. В противном случае, если не поставить ImageMagick, при компиляции возникает такая ошибка:

    System call: convert -trim +repage -density 110x110 -transparent "#FFFFFF" zzportal_small_short.ps portal_small_short0x.png

    Invalid Parameter - +repage
    --- Warning --- System return: 4
    Entering portal_small_short.css
    Entering portal_small_short.tmp
  9. Как определить, загружен ли tex4ht?
    Ответ (один из возможных):
    Статус Tex4HT:\{
    \ifx\HCode\UnDef
    Unloaded
    \else
    Loaded
    \fi
    \}
  10. При использовании моего класса, в коде
    \begin{enumerate}
    \item Необходимо осуществить переход к сервисной модели предоставления ИТ услуг.
    \item Необходимо внедрить инструментарий для измерения в режиме реального времени метрик
    оказываемых услуг и оперативного принятия мер по устранению деградации качества
    предоставления ИТ сервисов.
    \end{enumerate}

    возникает ошибка

    ! LaTeX Error: Something's wrong--perhaps a missing \item.

    See the LaTeX manual or LaTeX Companion for explanation.
    Type H for immediate help.
    ...
    l.84 \item Н
    еобходимо внедрить инструментарий для измерения в режиме реально...

    ?
    ! Emergency stop.
    ...
    l.84 \item Н
    еобходимо внедрить инструментарий для измерения в режиме реально...

    по причине загрузки пакета
    \RequirePackage[hyperindex=true,
    final=true, %%% 2.7?
    unicode=true,
    colorlinks=true,
    % pdfstartview={XYZ 0 842 1.5}]{hyperref}%
    pdfstartview={XYZ 0 842 1}]{hyperref}%
    %%% в 2.7 сказано, что проблему с hyperref пакет caption3 решает самостоятельно, без помощи hypcap
    %%\RequirePackage[figure]{hypcap} % Но subfigure перестанет работать :((

    Cвязано с загрузкой в рамках класса, а не файла (RequirePackage вместо usepackage)

    Исходя из анализа логов и анализа содержимого пакетов аазница в том, что использование \usepackage позволяет загрузить пакет tex4ht раньше, чем будут загружаться другие пакеты.
    ("d:\Program Files\MiKTeX 2.7\tex\generic\tex4ht\tex4ht.sty"
    version 2008-08-07-16:03
    Package: tex4ht
    --------------------------------------
    --- Note --- for _ at preamble, use the command line option `early_'
    --------------------------------------
    --------------------------------------
    --- Note --- for ^ at preamble, use the command line option `early^'
    --------------------------------------
    \tmp:toks=\toks14
    )
    ("d:\Program Files\MiKTeX 2.7\tex\generic\tex4ht\usepackage.4ht"
    version 2008-10-10-13:16
    )
    А именно, файл htlatex осуществляет принудительный вызов пакета tex4ht.sty сразу после вызова класса, читаем файл %\Program Files\MiKTeX 2.7\doc\tex4ht\mn-commands.html. Вот и весь фокус


P.S.
При этом шапка проектного документа должны обогатиться вызовом пакета hyperref и принять следующий вид:
\documentclass{mydoc}

\message{---> Options:[Loading HYPERREF] <---}
\ifpdf
\message{------------==== PDF ====------------}
\usepackage[unicode,
hyperindex=true,
final=true, %%% 2.7?
unicode=true,
colorlinks=true,
pdfstartview={XYZ 0 842 1.5}]{hyperref}%
%% в 2.7 сказано, что проблему с hyperref пакет caption3 решает самостоятельно, без помощи hypcap
\hypersetup{bookmarksnumbered=true}
\renewcommand{\blackHlinks}{\hypersetup{pdfborder={0 0 0},linkcolor=black,pagecolor=blue}}
\renewcommand{\notblackHlinks}{\hypersetup{pdfborder={0 0 0},linkcolor=ForestGreen,pagecolor=blue}}
%--------- перегружаем определения из Hyperref.sty, необходимо для корректного создания меток в aux файлах ---
%\renewcommand\theHfigure {\theHsection.\arabic{figure}}
%\renewcommand\theHtable {\theHsection.\arabic{table}}
\else
\message{------------==== DVI ====------------}
\usepackage[unicode]{hyperref}
\fi
% в 2.7 изменения
\usepackage[font=small,labelsep=period]{caption}

% специфические настройки под Tex4Ht
\ifx\HCode\UnDef
\message{------------==== TeX4HT Unloaded ====------------}
\def\soo#1{{\sood{#1}}}
\else
\message{------------==== TeX4HT Loaded ====------------}
\def\soo#1{\ul{#1}}
\fi

1 комментарий:

Alla комментирует...

8. В тексте tex4ht.env менять ничего не надо, достаточно просто установить ImageMagick