LINUX.ORG.RU

Не знаю, что за ужас ты делаешь (в частности зачем тебе понадобился \par внутри \section{}), но простейший способ добиться работы такой:

\section{\protect\z}

TeopeTuK ★★★★
()
Ответ на: комментарий от TeopeTuK

Ну ужас, но не ужас-ужас :). Ваше предложение не работает. Выдает туже ошибку. А это «ужас» я где стибрил, у Львовского кажется.

rustamych ★★★
() автор топика
Ответ на: комментарий от TeopeTuK

А вот если удалить \par, то работает и без \protect. Спасибо, обратили внимание на \par. Проблема решена.

rustamych ★★★
() автор топика
Ответ на: комментарий от rustamych

Да, я ответил, не подумав как следует. Дело не в том, что команда \z хрупкая (это не страшно, оказывается). Дело в том, что где-то внутри пакета hyperref переопределяется \section и так переопределяется, что перестает воспринимать \par в аргументе. А без hyperref работает и изначальный вариант.

Теперь главное не вставить нигде \tableofcontents случайно. Результат может удивить.

TeopeTuK ★★★★
()

Чтобы в дальнейшем эту жесть не повторять, надо как минимум раза 4 прочитать дядюшку Кнута!!!

Без знаний теха в латехе делать нечего.

anonymous
()
Ответ на: комментарий от TeopeTuK

Действительно результат \tableofcontents дает прикольный результат без \par в счетчике \z. При первой компиляции появляется только название Содержание. Вторая компиляция дает правильную нумерацию счетчика 1,2,3 .... . После второй компиляции нумерация становится 11, 12, 13, ..., и далее уже не меняется. Причем это картина не зависит от того включен или нет hyperref. Если при отсутствии \par в счетчике вставить как вы советовали \protect, то все ок - сколько не компилируй результат один и тот же и правильный и не зависит от hyperref. Этот последний пакет довольно капризный, но оч удобный. Работает без конфликтов только, если вставить его последним в преамбуле. Спасибо за советы, проблема решена.

rustamych ★★★
() автор топика
Ответ на: комментарий от anonymous

«Без знаний теха в латехе делать нечего.» Вы знаете дорогой мой, я пользуюсь техом с 1992 года, тогда был еще пакет EmTex на 7-ми больших дискетах по 800Кб. Я не программист, а физик, и изучать язык tex я не намерен. Кнут великий человек, слов нет, его книгу я прочитал по диагонали и Лесли Лампорта тоже, но без углубления в сам язык. В Львовском много готовых удобных конструкций, которые я пользую и этого хватает. Здесь на форуме много знающих этот язык и готовых помочь. Есть даже Baldin Evgueni, и у него тоже много готовых конструкций. Ну есть еще и гугл. Поэтому ваша фраза безосновательна. Это скорее самолюбование :).

rustamych ★★★
() автор топика
Ответ на: комментарий от rustamych

Дык, я тоже не программист, а астрофизик.

и изучать язык tex я не намерен.

Тогда нечего на него пенять!

Подавляющее большинство пакетов латеха можно выкинуть на помойку, если владеть более-менее техом и сделать свой пакет на все случаи жизни.

anonymous
()
Ответ на: комментарий от anonymous

На все случаи жизни не выйдет, идеализм. Для статей одно, для методичек другое. Как то переводил книжку на русский 700 с лишним страниц, пришлось повозиться, пока добился нужного. Львовского вполне хватило. На мой взгляд как раз хорошо, что так много пакетов имеется, с десяток я точно использую. На язык я не пеняю, поскольку не знаю его, а пишу сюда, чтоб получить решение. Вот собственно и все, как говорил Хармс. Вместо этой бесполезной дискуссии дали бы лучше совет по моему вопросу, а для дискуссий есть раздел talk :). Но вопрос уже решен.

rustamych ★★★
() автор топика
Ответ на: комментарий от TeopeTuK

Я поторопился, проблема не решена. Оглавление получается нормальным 1, 2, ... , но в разделах нумерация неправильная 11, 12, 13, ... hyperref не влияет. Если отключить \tableofcontent, то нумерация в разделах правильная. Есть еще идеи?

rustamych ★★★
() автор топика
Ответ на: комментарий от TeopeTuK

Все, решил проблемку. Надо вставить обнуление счетчика до его использования

\section{Общий план}
\setcounter{num}{0}
\subsection{Лекция \protect\z}
Теперь все работает, и оглавление и нумерация правильная.

rustamych ★★★
() автор топика
Ответ на: комментарий от anonymous

Да вот понадобилось, см. выше. Можно было использовать счетчик самого \subsection , но я использую свой счетчик \z уже много лет и был очень удивлен, что в \section он не работает. Вот и захотелось разрешить проблемку.

rustamych ★★★
() автор топика
Ответ на: комментарий от rustamych

Ну неправильно же!

Ну объяви ты как-нибудь вроде:

\newcounter{sect}[section]
\newcounter{subsect}[sect]
\newcounter{subsubsect}[subsect]
\renewcommand{\thesect}{\arabic{sect}.}
\renewcommand{\thesubsect}{\thesect\arabic{subsect}.}
\renewcommand{\thesubsubsect}{\thesubsect\arabic{subsubsect}.}
\newcommand{\sect}[1]{\refstepcounter{sect}\par\vspace{1.5cm plus 1cm minus .5cm}
        {\Huge\bf\begin{center}\thesect #1\end{center}}%
        \addcontentsline{toc}{headtoc}{\thesect #1}\markboth{\thesect #1}{\thesect #1}%
        \nopagebreak\bigskip\par}
\newcommand{\subsect}[1]{\refstepcounter{subsect} \par\vspace{.9cm plus .5cm minus .2cm}\noindent%
        {\Large\bf\thesubsect\hspace{.5cm}#1}\par%
        \addcontentsline{toc}{mytoc}{\hspace{1cm}\thesubsect \, #1}%
        \markright{\thesubsect #1}
        \nopagebreak\medskip\par\nopagebreak}
\newcommand{\subsubsect}[1]{\refstepcounter{subsubsect}\par\vspace{.5cm plus .3cm minus .2cm}\noindent%
        {\large\bf\thesubsubsect #1}\par%
        \addcontentsline{toc}{mytoc}{\hspace{2.5cm}\thesubsubsect #1}%
%       \markright{\thesubsect #1}
        \nopagebreak\par\nopagebreak}
(но этот ужас я делал очень давно, сейчас бы так криво не делал, всякие левые \newcommand[\inline] заменил бы на нормальные \def[\inline], да и еще кое-чего сделал совсем по-другому.

Если надо писать слово "лекция" перед номером, добавь это в определение соответствующего раздела.

anonymous
()
Ответ на: комментарий от rustamych

Вот, что тебе надо было, оказывается. А не хочешь как-то вот так сделать?

\documentclass[a4paper,12pt]{book}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}

\usepackage{titlesec}
\usepackage[showframe]{geometry}

\titleformat{\chapter}[display]
{\normalfont\Large\filcenter}
{\Large\scshape\chaptername\ \thechapter}
{1pc}
{\vspace{1pc}\Large\bfseries}

\AtBeginDocument{%
  \renewcommand{\chaptername}{Лекция}%
}

\begin{document}
\tableofcontents

\chapter{Тема первой лекции}
Текст первой лекции.

\chapter{Тема второй лекции}
Текст второй лекции.

\chapter{Тема третьей лекции}
Текст третьей лекции.
\end{document}

Лекция это же по сути глава в книге. Так пусть и будет глава. А нумеровать, пусть сам латех и нумерует.

TeopeTuK ★★★★
()
Последнее исправление: TeopeTuK (всего исправлений: 1)
Ответ на: комментарий от anonymous

Все понятно, что написано, но зачем все это? Достаточно же одного оператора \setcounter{num}{0} и три строчки счетчика и все работает! Зачем перелопачивать все, от \section до Нидерландов? Принцип наименьшего действия в действии :) Счетчик \z я использую дальше для листов заданий, поэтому он мне нужен в таком виде как есть. Но, anyway, спасибо за участие.

rustamych ★★★
() автор топика
Ответ на: комментарий от TeopeTuK

Можно наверное и так, попробую попозже. Тут есть один новый для меня оператор \AtBeginDocument, поэтому надо потыкать. Спасибо. Нумеровать латех умеет оч хорошо, это точно. Но мне нужен мой счетчик для дальнейшего, всякие там самостоятельные задания, контрольные. Я собственно использовать его только для последнего, но вот попробовал ткнуть в \section и не работает. А дальше просто интерес появился в чем дело и как решить.

rustamych ★★★
() автор топика
Ответ на: комментарий от anonymous

Правильный однако попался парень. Через задницу, как вы изволите говорить, часто быстрее получается :). Мне нужен результат, а не правильный код. Еще раз повторюсь, что язык теха изучать не собираюсь, за 25 лет использования ни разу не понадобилось. Использовать вашу преамбулу тоже могу, но не буду. Проще то что уже написал.

rustamych ★★★
() автор топика
Ответ на: комментарий от anonymous

Спасибо, посмотрю, попробую, только сразу вопрос - подо что заточен? Тут на лоре кто-то выкладывал описание всех известных написанных стилей (огромный труд). Каждый стиль решает какие то проблемы, а у вас?

rustamych ★★★
() автор топика
Ответ на: комментарий от rustamych

Что значит «подо что заточен»? Это — мой общий стиль, который во всем используется (тех. отчеты, наброски статей, презентации, документация и т.п.).

Для диссера у меня есть отдельный стиль, для других частичных вещей тоже кое-что есть. И для «электронных таблиц» с внутритекстовыми вычислениями... Кое-что из этого описано у меня в ЖЖ под тегом latex.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.