понедельник, 30 декабря 2013 г.

Непонятная ошибка eskdx

Порой сталкиваешься с ошибкой и понять не можешь, как же ее решить, или если решил проблему, то почему она решилась, и что ты сделал такого для ее решения?
Для меня такой ошибкой явилась следующая ошибка интерпретатора latex:
! Undefined control sequence.
\ESKDcolumnXVIname ->\No 
                         \ \cyrp \cyro \cyrd \cyrl .
l.9 \begin{document}
 Честно сказать сам не знаю почему, но при замене в файле eskdrussian.def из пакета eskdx строчек:
\newcommand{\ESKDcolumnXVIname}{%
  \No\ \cyr\cyrd\cyro\cyrk\cyru\cyrm.}
 на
\newcommand{\ESKDcolumnXVIname}{%
  \cyr\CYRL\cyri\cyrs\cyrt}
 Вторую строчку я взял из вышеприведенной в файле операции \newcommand.
\newcommand{\ESKDcolumnXVname}{%
  \cyr\CYRL\cyri\cyrs\cyrt}
\newcommand{\ESKDcolumnXVIname}{%
  \cyr\CYRL\cyri\cyrs\cyrt}
Как ни странно, но заработало. Разницы в документах я не заметил и лично у меня вопрос, почему проблема решилась? Да и вообще почему она возникла после обновления дистрибутива?
*******************************************************************************************************
Благодаря jamesjames7 я узнал, что причина в том, что поддержка \No (символ №) убрана из babel и вместо него теперь используется \textnumero.
По совету jamesjames7 посетил сайт, где описывается решение проблемы.
Вариант с глобальной заменой у меня почему-то не заработал. Но и файл оказался по другому адресу:
/usr/share/texlive/texmf-dist/tex/generic/babel-russian/russianb.ldf
Вставлял в конец файла строчку:
\DeclareRobustCommand{\No}{\ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi}
Зато вставка строчки:
\newcommand{\No}{\textnumero}
в eskdrussian.def помогла, за что jamesjames7 огромное человеческое спасибо. :)

3 комментария:

  1. Разница принципиальна! Во второй строчке нету \No, по этому и заработало.
    Предыстория: с выходом TexLive2013 мои документы перестали собираться, тогда откатился (в gentoo) на версию 2012, думал что ещё новая версия сырая, а зря!
    Оказалось всё просто, в новой версии babel-russian упразднили \No. Сам в шоке, но так и есть. Что ж, в данный момент есть два решения:
    — прописать глобально определение как предлагается в мануале babel-russian.pdf:
    http://www.linux.org.ru/forum/general/9583562?lastmod=1379242099037#comment-9583811
    — или же добавить в преамбулу каждого документа с \No:
    \newcommand{\No}{\textnumero}

    Для проверки моих слов, создай новый документ с \No, попробуй собрать, когда не получится, добавь в преамбулу: \newcommand{\No}{\textnumero}

    Всё это ради того, что кто-то посчитал, что удобней будет переучиваться и ставить знак номера „№“ с клавиатуры и применять \textnumero.

    ОтветитьУдалить
  2. Рад был помочь. Да и вообще, на том сайте частенько тусуются знатные уважаемые TeXники. После регистрации можно указать отслеживать тег „LaTeX“ в темах, и будут приходить уведомления как появятся обсуждения или новости. Как показывают дальнейшие события, эта проблема поморочила голову многим людям, а скольким новичкам отбила охоту разбираться с LaTeX — можно только догадываться.
    Вот и думаешь, саботаж или глупость?

    ОтветитьУдалить
    Ответы
    1. Я ЛаТеХ, только для курсовых использовал. :-) Только вот увы не все оказалось в соответствии с нашим вузом. :-) Поэтому диплом ручками форматировал, поленился разбираться. :-) А так штука классная. :-) Помогает автоматизировать создание курсовых. :-)
      По поводу глупость или саботаж понятия не имею. Но будем надеяться таких инцидентов больше не будет. :-)
      Еще раз вам спасибо. :-) Без вашей подсказки не факт бы, что выполнил заказы. :-) Про сайт учту. Всего вам самого наилучшего и с майскими праздниками вас. ;-)

      Удалить