LINUX.ORG.RU

LaTeX две нумерации формул в одном тексте

 


0

2

Перевожу книжку и вставляю собственные коментарии. Для выделения своего текста использую тривиальный оператор, который выводит текст в другом цвете. Теперь в моих коментариях появились формулы. Нумерацию основного текста менять не могу, надо делать, как в исходнике. Как сделать отдельную нумерацию внутри моих коментариев? В основном тексте нумерация формул - (номер параграфа.номер формулы). Как сделать независимую нумерацию внутри моих коментариев типа, например (Буква А.номер параграфа.номер формулы)? Подходящих стилей для решения проблемы не нашел, гугление тоже ничего не дало. Видимо надо соорудить оператор с новым счетчиком внутри, но не понимаю как это сделать.

★★★★

Ну типа.

\newcounter{myformulacnt}
\def\myformula#1#2{#1 \addtocounter{myformulacnt}{1} (#2 .\theparagraph .\themyformulacnt)}

\myformula{$\frac{x}{y}}{А}
\myformula{$\SIGMA_0^\infty x}{А}

Если нумерацию надо начинать в каждом параграфе сначала, нужно ещё titlesec прикрутить, или кто там на \paragraph цепляться умеет, и прикрутить им \setcounter{myformulacnt}{0}.

b-adblack-
()
Ответ на: комментарий от b-adblack-

Если использовать ваше предложение для выделенной нумерованной формулы, окружение equation то появляются два номера, один номер соответствует основному тексту, а другой с буквой A, но почему-то на новой строке. Надо как то отключить основную нумерацию основного текста.

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

Простейший способ: скопировать определение equation, переименовать его в myequation и заменить счетчик на свой.

Вуаля!

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

Логично, но тогда нужно переделывать и eqnarray и gather. А где найти опредление окружения equation?

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

Тогда можно так:

\newcounter{myformulacnt}
\def\myformula#1#2{
 \addtocounter{myformulacnt}{1}
 \begin{equation}
  #1
  \tag{#2 .\theparagraph .\themyformulacnt)}
 \end{equation}
}
\myformula{\frac{x}{y}}{А}
\myformula{\SIGMA_0^\infty x}{А}

Если на формулы потом ссылаться надо будет, нужно ещё \label определить, помимо \tag.

b-adblack-
()
Ответ на: комментарий от b-adblack-

Спасибо, так работает, я немного изменил, см. ниже. После каждого \section обнуляю счетчик \setcounter{myformulacnt}{0}, поскольку надо начинать заново нумерацию. \ref на формулу работает. Мне все же кажется, что можно сделать такое на все окружения, переопределяя переменные и счетчики окружения, но на этом, более глубоком, уровне ТеХа я пасую.

\newcounter{myformulacnt}
\def\myformula#1#2#3{
 \addtocounter{myformulacnt}{1}
 \begin{equation}\label{#3}
  #1
  \tag{#2\thesection .\themyformulacnt}
 \end{equation}
}

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

Обнуление можно автоматизировать через titlesec:

\titleformat{\section}{}{}{}{\setcounter{myformulacnt}{0}}{}
А с окружениями надо их взаимозависимость смотреть. Впрочем, такую мелочь проще накопипастить, их же всего три?

b-adblack-
()
Ответ на: комментарий от b-adblack-

Да, точно, можно и так. Конечно я копипастом сделаю для тех окружений, что мне нужны, но как-то верилось в решение на более глубоком уровне. Но решение есть и работает, остальное от лукаваго :).

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

А решения подобных проблем в общем случае только два: 1) классическое — выдрать стоковые макрухи в свой стиль и попереопределять; 2) обмазаться etoolbox и прочими пакетами, юзающими новые возможности LaTeX 2e по их патчению на лету. В данном случае повезло, ибо в equation предусмотрена кастомизация подписей и ссылок.

b-adblack-
()

А как ты в исходном коде указываешь собственный комментарий? Каким-нибудь собственноручно написанным окружением? Тогда можно в начале этого окружения сохранить счетчик equation и подменить его на свой. А в конце вернуть все обратно. Как-то так:

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{color}
\usepackage{lipsum}

\newcounter{saveequation}
\newcounter{myequation}[section]

\newenvironment{mycomment}{%
\color{blue}%
\setcounter{saveequation}{\value{equation}}%
\setcounter{equation}{\value{myequation}}%
\def\theequation{\thesection.\roman{equation}}%
}{%
\setcounter{myequation}{\value{equation}}%
\setcounter{equation}{\value{saveequation}}%
}

\begin{document}
\section{One}
\lipsum[1]
\begin{equation}
1+1=2.
\end{equation}
\lipsum[2]
\begin{equation}
1+1=2.
\end{equation}
\begin{mycomment}
\lipsum[3]
\begin{align}
1+1&=2,\\
1+1&=2.
\end{align}
\lipsum[4]
\end{mycomment}

\section{Two}
\lipsum[1]
\begin{equation}
1+1=2.
\end{equation}
\lipsum[2]
\begin{equation}
1+1=2.
\end{equation}
\begin{mycomment}
\lipsum[3]
\begin{equation}
1+1=2.
\end{equation}
\lipsum[4]
\end{mycomment}
\lipsum[2]
\end{document}

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

Это я понимаю, все так с техом уже с 1992 кажется года (был еще EmTeX на пяти 5ти дюймовых дисках по 800кб) :). Как переопределить есть во многих книжках, например у Львовского. В последнее время появилась куча новых техов типа luatex, xetex и т.д., но не хочу туда лезть. Но вот сам язык теха я так и не освоил, чтоб сделать какой нить скрипт самому. Я просто юзер.

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

Очень изящное решение. Я только передал одну строку, как мне хотелось:

\def\theequation{A\thesection.\arabic{equation}}
Спасибо.

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

Так их бояться нечего, это не принципиально другие ветки, как ConTeXt или AMS-TeX, а доработки LaTeX, совместимые с ним. XeTeX лишь в плане работы со шрифтами отличается; в выгодную сторону, но приходится маппинги прикручивать для вещей, которые в LaTeX костылялись на уровне шрифтов, и компилятор строже с юникодом, к примеру, с LaTeX можно после макры писать кириллицу без пробела, а компилятор XeTeX на такое ругнётся, потому что кириллицу можно использовать в именах макр. LuaTeX вообще отличается лишь возможностью опционально использовать Lua там, где предпочтителен императивный ЯП, а не костыли на тьюринг-полных макрах.

b-adblack-
()
Ответ на: комментарий от b-adblack-

Я неправильно выразился. Боязни нет, просто нет времени на все это. Как замечательно написал М.М. Жванецкий «Жизнь коротка. И надо уметь. Надо уметь уходить с плохого фильма. Бросать плохую книгу. Уходить от плохого человека. Их много. Дела не идущие бросать. Даже от посредственности уходить. Их много. Время дороже.» Да, собственно, «нам хватит» и того, что есть :).

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

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

У тебя есть опыт работы с LuaTeX? Как там сравнительная надёжность с pdflatex? Совместимость пакетов? Он также как и XeLaTeX жрёт на порядки больше ресурсов по сравнению с pdflatex?

Как у него с поддержкой PGF расширений? Чисто любопытствую, т.к. в последнее время мне удачно удаётся избегать использования монструозного pgf.

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

У тебя есть опыт работы с LuaTeX?

Нет, я просто потыкавший кукаретик.

Он также как и XeLaTeX жрёт на порядки больше ресурсов

Не замечал за ним такого, у меня и pdflatex жрал памяти прилично.

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