company_banner

Как писать книгу по физике в LaTeX. Cтатья 1

  • Tutorial
Это моя первая статья на Хабре.

Глава 1. Введение


1.1 Позвольте представиться и почему я это пишу

Я — научный сотрудник, физик. Недавно выпустил книгу по спектроскопии объемом 880 страниц и весом 1560 грамм. Эту книгу я писал 9 лет, параллельно читая лекции по ее содержимому. Она отняла у меня очень много времени, что естественно. Что не естественно — это то, что громадная часть потраченного времени ушла на оформление, то есть на изучение языка Латех. И это при том, что я на Латехе пишу всю жизнь, лично написал и опубликовал около 50 статей в разных издательствах.

В этой статье (планируется продолжение, но это как пойдёт) я хотел бы поделиться с читателями своими, с большими затратами полученными знаниями. Если читатель пишет только статьи, то моя статья ему не очень нужна — в ней собрано то, что требуется авторам больших книг.

После публикации книги (пока, увы, только на русском языке) у меня возникло громадное желание написать ещё книгу "Как написать книгу по физике в Латехе"

1.2 А почему на Хабре?

Если бы в России существовал некий Главный Форум для пользователей Латеха, я был бы там. Но его нет, увы. Есть ли в мире — не знаю. Есть очень достойные форумы, вроде latex.org/forum или tex.stackexchange.com, но там в основном вопросы и ответы.

Есть в России хорошие авторы, а большого общеизвестного форума нет. Жалко.

Знакомая студентка СПбГУ недавно сказала мне, что их заставляют писать текcты в Латехе, но не рекомендуют ни книг, ни хороших сайтов. При таком подходе наши крокодилы может и взлетят, но только очень низенько.

1.3 А почему Латех?

Да я просто не знаю других редакторов. Ни разу в жизни не написал ни одной серьёзной работы в Word или OpenOffice. Поэтому сравнивать редакторы я не могу. Латех — это как старая жена. Была любовь, были ссоры, всё было… Вот только без него я уже не смогу.

Часто встречается мнение, что Латех лучше, легче и красивее форматирует текст, чем любой другой редактор. Что он как-бы говорит автору: "Отойди в сторонку, ты все равно ничего не понимаешь в оформлении текста, дай поработать профессионалу".

Я думаю, что это так только частично. Я убил море времени на оформление текста, и это очень печально. Я не собираюсь описывать правила работы с Латехом, для этого есть хорошие книги,(*) как раз наоборот — я собираюсь писать о том, чего в этих книгах нет.

В деле оформления текста и создания рисунков есть очень много хитрых приемов, которые я хочу хотя бы кратко описать, если мой текст заинтересует кого-нибудь здесь, на Хабре.

1.4 Есть ли у меня цель

Я, разумеется, понимаю, что в Латехе пишет ничтожное количество людей. Как правило, математики и физики, да и то далеко не все. Из пишущих в Латехе авторов доля пишущих книги — очень и очень мала. Наконец, пишущих на русском языке — пренебрежимо мала.

Логика этой заметки состоит не в том, чтобы дать читателю широкий взгляд на применения Латеха для книгописательства. У меня нет для этого достаточного кругозора: я уверен, что тот, кто копает везде, копает неглубоко. Логика заметки такая: "я не знаю, какие тропинки куда ведут в нашем дремучем лесу. Я прошёл по густому лесу по одной тропинке, о ней я и собираюсь вам рассказать."

Если говорить о тенденциях, то повсеместное введение наукометрии в России, то есть индексов Хирша (и ему подобных) и количества цитирований, должно полностью уничтожить научную книгу. Я имею в виду прежде всего учёт этой наукометрии при назначении на должности, а также при распределении грантов и других видов финансирования. Напоминаю, что в индексе Хирша книги вообще не учитываются.

Если наши научные руководители будут во всем последовательными, они в будущем должны запретить русский язык, особенно письменный, за написание книг — наказывать, а за написание книг на русском языке — жестоко наказывать, вплоть до увольнения. За крайне неэффективное использование казёного рабочего времени.

Поэтому мой труд, эта книга, мне самому иногда кажется чем-то дурацким и ненужным. Но ведь без чудаков (дураков?) жить скучно…

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

1.5 Лучшие современные книги

В процессе написания своего учебника я перебрал громадное количество иностранных книг и учебников, и пришел к выводу, что самые лучшие учебники в моей области написаны Аткинсом (P. W. Atkins) из Оксфорда с разными соавторами. См., например, "Molecular Quantum Mechanics " (2005). Есть ещё очень хорошие книги Демтрёдера (W. Demtroder, "Laser spectroscopy: basic concepts and instrumentation", 2003; Electrodynamics and Optics ", 2019; ...)

Что интересно у Демтрёдера — он благодарит специальную службу, которая помогла ему оформить книгу в Латехе. В Германии такая служба есть, а в России — нет.

Причем эти книги являются лучшими не столько по содержанию, сколько по оформлению. Невооруженным глазом видно, что все они сделаны в Латехе с активным использованием пакета TikZ. В результате у меня сложилось чувство, что связка Латех--TikZ — наилучший способ создать книгу, оформленную на лучшем мировом уровне. Именно поэтому в моей книге активно использовался TikZ (даже там, где можно обойтись и без него).

1.6 Идеальная книга будущего

Хотелось бы порассуждать об идеальной книге будущего. То есть о том, куда неизбежно придёт (ну… должно прийти) научное издательское дело. То есть о том, к чему нам, учёным, надо стремиться для повышения своей конкурентноспособности и привлекательности.

Естественно, книга будущего существовать в двух вариантах: бумажном и электронном. Кроме того, она будет цветной. Причем цветом будут выделяться не только рисунки.

Чёткое современное разделение содержимого на текст, рисунки, таблицы и формулы уйдёт в прошлое. Например, есть потребность в стрелочках, которые связывают какие-то места в текстах, рисунках, таблицах и т.д. Почему надо разделять рисунки и таблицы? Почему я не могу разместить рисунки внутри таблицы или наоборот? Разве не удобнее иногда иметь смесь из них?

На рисунке 1 показаны две страницы моей книги (Интернет-версия), чтобы было понятно, что текст и рисунок могут плавно перетекать друг в друга.


Рис. 1. Пример оформления моей книги. Показано перетекание таблицы в рисунок

Другие идеи, навскидку.

  1. Ссылки на формулы, рисунки, таблицы, главы и т.д. выделяются шрифтом и цветом (и, естественно, должна быть гиперссылкой).
  2. Каждая глава имеет свой аватар. Аватары различаются цветом. На каждой странице на полях показан аватар и номер главы.
  3. Краешек страницы рядом с аватаром окрашен в цвет аватара — так читателю удобнее искать нужную главу. Эта идея используется во многих каталогах и справочниках.
  4. А, может быть, из Интернета в научные тексты переберутся спецсимволы. Например, смайлики — то есть символы, выражающие эмоции.
    Когда-то давно мои преподаватели-математики использовали чёрный квадратик в конце доказательств теорем вместо фразы "что и требовалось доказать". Почему бы не возродить?
  5. Наконец, очень отдалённое будущее: электронная версия книги может содержать картинки с анимацией. Причём это далеко не фантастика: эта возможность уже сейчас есть в том же TikZ.

Конечно, все эти мечты расцветали в моей голове только до встречи с живым редактором, который считает всё это дорогой и ненужной блажью, но это уже другая тема.

1.7 Про компиляторы, редакторы, диалекты Латеха
Это очень большая и больная тема.

Я использую связку Windows/MikTeX/WinEdt (=ОС/компилятор/редактор), но даже в рамках этой связки есть большой выбор версий.

Редактор WinEdt я считаю лучшим (хотя иногда пользуюсь и TexStudio), но и он после версии 5.6 стал эволюционировать в неприятную для меня сторону (взлом WinEdt я здесь не описываю, но это не проблема для любой версии).

Например, я консервативен и подслеповат, поэтому признаю только свою расцветку синтаксиса, а не ту, которую предлагает создатель WinEdt, см. рис. 2 и рис. 3.


Рис. 2. Расцветка синтаксиса в WinEdt v.10


Рис. 3. Моя расцветка синтаксиса в WinEdt v.5.6

Но главная неприятность — новые компиляторы делают вид, что умеют работать с восьмибитными шрифтами в кодировках типа UTF-8, для чего разработаны и активно внедряются диалекты типа LuaLatex, XeLatex, и др. Кажется прогрессом, что эти новые диалекты умеют создавать текст с любыми шрифтами, хоть со старославянскими. Но сколько тут издержек…

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

Для русскоязычного текста я признаю только семибитные шрифты и кодировку ANSI/Windows1251, а тексты из Интернета переношу не напрямую, а через какой-нибудь упрощённый редактор (например, Notepad++), в котором можно все кодировки настроить, как надо.

И только под самый конец, занимаясь окончательным форматированием текста, можно перейти на UTF-8. Это большая работа.

Единственное простое улучшение шрифта Латеха, никак не влияющее на форматирование текста, это переход с CM на CM-super.

Напоминаю, что всегда можно поиграть с настройками форматирования, например,
\clubpenalty=400   % Эти числа -- разрешение на запрет висячих строчек. Подразумеваемость = 300, абсолютный запрет = 10000.
\widowpenalty=400  %% Увеличиваем эти числа до тех пор, пока не начнет увеличиваться количество страниц.
\righthyphenmin=2 % Сколько букв можно переносить. Если используется Babel, то команда немного другая.
\tolerance=500   %max=10000, default=200 (Выбор между разрежением и переполнением).
% лучше разрядить, чем переполнить!
\looseness=-1 % иногда можно удлинять страницу на одну строку.
\hfuzz=2.5pt % иногда можно вылезти за край строки на 2.5 pt.

Глава 2. Свои стандарты


2.1 Советы начинающему автору

Вот список основных советов начинающему автору большого текста. Большой текст — это текст, который очень утомительно листать, его можно править только командами поиска и замены.
Как выразились бы военные люди, каждый совет «написан кровью». Ну ладно, не кровью… Но затраченное время, нервы, головная боль… Сначала кажется, что потом будет время всё поправить. А потом окажется, что работы по переделке книги под вкусы редакции — это очень времязатратное дело.

2.1.1 Узнайте формат страницы Вашей будущей книги и с самого начала внесите его в преамбулу. Это избавит Вас от мучительного переформатирования. С самого начала задайте в преамбуле конечный макет страницы (размеры колонтитулов, полей, и т.д.), а также размер и вид шрифта.

Например, формат моей книги 70x100 1/16, и поэтому в преамбуле стоят такие настройки:
\special{papersize=170mm,240mm}
\textheight 187mm % 200-(12+25)*0.35146 = 186.99598
\textwidth 130mm
\headheight13.6pt % = 0.48 mm
\oddsidemargin -5.4mm
\evensidemargin -5.4mm
\topmargin -5.4mm
\usepackage{setspace}
\singlespacing

здесь команда
\singlespacing
задаёт во всём документе одинарный интервал, а сама является частью пакета setspace.
Понимать это надо так. Поля, сверху и снизу, равны 20 мм. Поэтому доступна площадь 130*200 мм. Запись
\topmargin -5.4mm

означает, что расстояние от верхнего края колонтитула h до верхнего края страницы равно h= = 1 дюйм + topmargin = 2 см, что и требуется. Ширина текста равна 130 мм, а вот из высоты 200 мм надо вычесть высоту колонтитула (headheight) и расстояние от колонтитула до текста (headsep).
Подразумевается, что есть ещё три команды:
\voffset=0 \headheight12pt \headsep25pt % 1 pt = 0.3528 мм

и общая формула:
240= y-papersize = 2*(2.54 см + topmargin) + y-textheight + headheight + headsep = 40+ 186.99598 + (12+25)*0.35146 мм.

Всё, казалось бы, понятно. Но компилятор на каждой странице выдаёт сообщение:
Package Fancyhdr Warning: \headheight is too small (12.5pt):
Make it at least 13.59999pt.
We now make it that large for the rest of the document.
This may cause the page layout to be inconsistent, however.


Значит, переделываем. Теперь
\headheight13.6pt

Полезно помнить, что родные, то есть встроенные шрифты Латеха — это 10, 11 и 12 пт. Для получения других размеров нужно подключать специальные пакеты. Я хотел, чтобы шрифт был поменьше, чтобы на страницу влезло побольше текста. Но в в редакции мне сказали, что латеховский шрифт 11 пт смотрится как 10.5 пт в редакторе Microsoft Word. И поэтому я выбрал 11 пт. А зря. Надо было 10 пт, как делают в большинстве издательств за границей.

Большое серьезное издательство имеет свой стиль, и тогда автору не надо думать, но к России это (обычно) не относится.

Написал, и подумал, что это может быть хорошо, что наши редко выпендриваются со своим стилем. Совсем недавно посылал статью в журнал AIP Conference Proceedings, его стиль документа
\documentclass[aip,cp,amsmath,amssymb,reprint]{revtex4-2}

и получаю ответ: "… Ваше оформление не соответствует… Электронные адреса должны быть сразу после фамилий авторов, а не в сносках..."

А как он может не соответствовать, если и стиль, и шаблон документа я взял у них на сайте? В ходе переписке со службой поддержки выяснилось, что, как они считают, у меня какие-то пакеты устарели, и поэтому мне лучше компилировать свои статьи у них на сайте, служба www.overleaf.com/latex

Я, во-первых, терпеть не могу эти модные попытки упростить мой компьютер до интерфейса к программам, расположенным у них в Интернете, a во-вторых, каким надо быть креативным, чтобы привязать стиль статей к каким-то глубоко запрятанными настройками моего компилятора?

Меняйте стиль журнала (cp), меняйте стиль издательства (revtex4-2), но зачем делать их зависящими от компилятора?!

2.1.2 Выбор шрифта

Шрифт в редакторе обязательно должен быть моноширинный (Consolas, Lucida Console, Courier, Courier New,… ), а редактор текста должен легко переходить между блочным и строчным режимами. Это позволяет, переставлять колонки в таблицах, если они правильно приготовлены.

Другой пример. Когда мне нужно оставить для компиляции только один файл (одну главу из двадцати), я выделяю столбец из знаков % и переношу его в начало абзаца. Потом руками убираю знак % перед нужным мне файлом, и в результате все файлы оказываются комментариями, кроме нужного.

2.1.3 У человека хорошо работает зрительная память. Он узнает знакомые места в тексте и грех не пользоваться этой способностью. Поэтому мой стандарт: одно предложение = один абзац. Никакого автоматического выравнивания строк (отключить Wrap). В результате расположение текста в строке не изменится, если я что-то изменю в предшествующих предложениях.

2.1.4 Имя файла с рисунком должно совпадать с его меткой. Это удобно, и, кроме того, экономит одну переменную в макросе, вызывающим рисунок.

2.1.5 Имя статьи (метка) составляется по стандарту. Страшно удобно, но на вкус и цвет товарищей нет.
Мой стандарт: ссылка Purcell46_681 означает (автор)-(год публикации)-(номер страницы).

2.1.6 Раскраска синтаксиса. Для меня это почему-то очень важно. Пример моей раскраски и стандартной раскраски WinEdt показаны на рис. 2.
Раскраска синтаксиса от производителя WinEdt, по-моему, убога, и никак не соответствует моим вкусам.
Правильные (мои) принципы раскраски состоят в следующем:
— комментарии: бледный наклонный текст на сером фоне,
— текст ссылок (\ref, \cite): яркий фон, но разный для ссылок на литературу и уравнения,
— скобки: жирный шрифт, яркий фон, задняя скобка должна быть подчеркнута,
— латеховские команды (\begin ): светлый фон,
— служебные символы ($, _, ): жирные и выделяются в тексте цветом,
— конец строки в таблице (\\): жирный белый на черном фоне.
2.1.7 Простейшая "правильная" структура книги — это две директории: одна — для текста книги, другая — это мастерская для изготовления векторных рисунков в пакете TikZ.
Внутри каждой есть поддиректория \Figs для готовых рисунков.
Про мастерскую в этой статье я рассказывать не буду.

Глава 3. Свои обозначения


3.1 Малые замены
которые я привык называть макросами, хотя это, вероятно, неправильно.

Когда-то, лет 30 назад, я был сильно впечатлён тем, что я могу набивать математические формулы с пулемётной скоростью, не глядя на монитор. Мне и сейчас это нравится. Но особенно полюбил я набивать тексты, используя свои обозначения. Все они, само собой, собраны в файле с преамбулой.

Всегда ли можно ввести аббревиатуры? Да нет, к сожалению, не всегда. Многие из них компилятор понимать не хочет. Например, я пока не нашел аббревиатуры для страшно полезных окружений типа
\begin{split}--\end{split}, \begin{align}--\end{align}


Простейшие примеры.
\newcommand*{\BE}{\begin{equation}} %
\newcommand*{\EN}{\end{equation}} %
\newcommand*{\BEA}{\begin{subequations} \begin{eqnarray}} %
\newcommand*{\ENA}{\end{eqnarray} \end{subequations}} 

Набивать текст вроде
\begin{equation}

очень лень. Поэтому я давно ввел аббревиатуру — \BE. Почему с большими буквами? Да потому что лет 30 назад досовский Латех (=EmTex) с маленькими буквами работать не захотел.
В английском языке первый абзац начинается без красной строки. Чтобы отменить это правило, обычно используется команда \hs:
\newcommand*{\hs}{\hspace*{\parindent}}

Отмена автоматической нумерации формулы:
\newcommand*{\nn}{\nonumber}

Для списка авторов, аналог русского и др.:
\newcommand*{\ea}{{\it et al\/}\xspace}

Особенно полезно, если вам хочется аббревиатуру et al напечатать курсивом. Обратите внимание на команду \xspace, она разбирается, нужно ли делать пробел (если дальше идут слова) или не нужно (если дальше идут знаки препинания).

Если Вы часто пишите химические формулы, то подходят замены типа
\newcommand*{\1}{$_1$}
\newcommand*{\2}{$_2$}
\newcommand*{\3}{$_3$}
\newcommand*{\4}{$_4$}
\newcommand*{\5}{$_5$}
\newcommand*{\6}{$_6$}
\newcommand*{\7}{$_7$}
\newcommand*{\8}{$_8$}
\newcommand*{\9}{$_9$}

Например, вместо C$_2$H$_5$OH я пишу C\2H\5OH. Это чуть-чуть быстрее.

Для вставки текста в математические формулы я использую
\newcommand*{\T}[1]{\text{#1}}

В моей науке часто используются волновые числа (это единицы измерения частоты, они равны обратным сантиметрам),
\newcommand*{\ic}{cm $^{-1}$\xspace}

Были времена, когда я сокращал буквально всё. Например, если мне было лень писать слова типа "photodissociation", я вводил аббревиатуру \pd.
Если надо писать числа, то я понаделал сокращений типа
\newcommand*{\po}[1]{$\times \! $10$^{#1}$} % *10(-n)
\newcommand*{\vp}[2]{#1$ \times \! $10$^{#2}$\xspace} % v*10(n)
\newcommand*{\ve}[2]{#1$\pm$#2\xspace} % v+-e
\newcommand*{\vep}[3]{$(#1 \pm #2)\times \! 10^{#3}$\xspace} % (v+-e)*10^n

Например, \vep — это число v с погрешностью e, помноженное на 10 в степени p, т.е. \vep{v}{e}{p} $=(v \pm e)\times10^{p}$.

3.2 Обращение к таблицам и рисункам
Немножко о другом: латеховское обращение к ссылке \ref не различает рисунки, таблицы, разделы,… Когда их очень много, это раздражает и может приводить к путанице. Оказалось, что очень удобно оформлять ссылки в виде \fref{fig:name}, \fref{tab:name}, \fref{sec:name},… что можно сделать с помощью пакета fancyref.
Мало того, что Вами самим будет понятно, к чему относится ссылка, так ещё появляется появляется возможность оформить их по-разному (шрифтом и цветом).

3.3 Большие замены
Постепенно выработался стиль — для сложных манипуляций никогда не использовать латеховские стандарты напрямую, а только через макросы. Очень удобно, когда приходится всё править, чтобы угодить капризам редакции.
Вот макрос для создания рисунка, который обтекается текстом:
\newcommand*{\EpsWrapD}[7]{%
\begin{wrapfigure}[#5]{#3}{#2 \textwidth} % #3=l,r,L,R
\begin{center} \sffamily
\includegraphics*[width= #2 \textwidth ]{#1} % 1-имя файла и метка заодно,
% 2-ширина рисунка (доля от ширины страницы)
\vspace{-#7mm} % #7: сократить расстояние между подписью снизу и рисунком
\caption{\label{fig:#1}#4} % #4 - подпись под рисунком
\vspace{-#6pt}
\end{center}% #6: сократить расстояние между подписью снизу и текстом после таблицы \end{wrapfigure}}

Вот макрос для создания таблицы, который обтекается текстом:
\newcommand*{\TableBE}[5]{
\begin{table}[#1] %\captionabove
\vspace*{-#5mm}
\centering \sffamily \caption{\label{tab:#2}#3} \begin{tabular}{#4} \toprule }

\newcommand*{\TableEN}[3]{
\bottomrule \end{tabular}
\vspace{-#2mm} \small \begin{flushleft} #1 \end{flushleft}
\vspace{-#3mm}
\end{table}}

А вот текст простой таблицы
\TableBE{H}{RS_Ham_2pi}{\TableBE{H}{RS_Ham_2pi}{Гамильтониан линейной молекулы в состоянии $^2\Pi $}{G LL}{2} $^2\Pi $ }{G LL}{2}
\CR & |^2\Pi_{1/2} JM_J \pm \rangle & |^2\Pi_{3/2} JM_J \pm \rangle \\
\midrule
|^2\Pi_{1/2} JM_J \pm \rangle & B[J_{\perp}^2+1] -A/2 & -B J_{\perp} \\
|^2\Pi_{3/2} JM_J \pm \rangle & -B J_{\perp} & B[J_{\perp}^2-1] +A/2 \\
\TableEN{}{0}{0}

и ее откомпилированный вид:



Макрос \TableBE имеет 5 переменных:
#1) как и где поставить таблицу. Например, h="хотелось бы таблицу здесь",
h!="очень хочу таблицу здесь", H="хочу таблицу именно здесь и баста",
t!=поместить таблицу вверху страницы,
#2) ссылка на таблицу,
#3) заглавие таблицы.
#4) Описание столбцов. Например, {G LL} означает: выравнивание по левому краю, математическая мода, первый столбец подкрасить.
#5) Эстетство: иногда хочется уменьшить расстояние между заголовком и таблицей.
Макрос \TableEN имеет 3 переменные:
#1) текст под таблицей.
#2) Эстетство: иногда хочется уменьшить расстояние между текстом и таблицей.
#3) Эстетство: иногда хочется уменьшить расстояние между таблицей и последующим текстом.

Часто бывает удобно создавать семейства макросов. Например, у меня есть главный макрос для вставки рисунка в текст.
\newcommand*{\RisEpsLarge}[7]{
\begin{figure}[#5] \begin{center}
\includegraphics*[width= #2 \textwidth,#6]{#1} %#6: scale=2, bb=10 20 100 200
\vspace{-#3mm}
\sansmath
\caption{ \label{fig:#1}#4}
\vspace{-#7mm}
\end{center} \end{figure}
}

У него 7 параметров, для меня это много. Поэтому я создал семейство макросов, показанное ниже. Основная идея — уменьшить количество параметров, чтобы можно было как можно меньше думать при создании таблицы. Читатель легко догадается, что они отличаются правилом расположения рисунка и его поворотом на +-90 градусов (иногда это нужно, потому что эта умная бестолочь, Латех, имеет свои представления, как поворачивать рисунки).
\newcommand*{\RisEpsPos}[5]{\RisEpsLarge{#1}{#2}{#3}{#5}{#4}{angle=0}{0}}

\newcommand*{\RisEps}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!tbhp}{angle=0}{0}}
\newcommand*{\RisEpsTop}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!t}{angle=0}{0}}
\newcommand*{\RisEpsBot}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!b}{angle=0}{0}}
\newcommand*{\RisEpsPlace}[5]{\RisEpsLarge{#1}{#2}{#3}{#5}{#4}{angle=0}{0}}

\newcommand*{\RisEpsRot}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{tbhp}{angle=90}{0}}
\newcommand*{\RisEpsRotTop}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!t}{angle=90}{0}}
\newcommand*{\RisEpsRotBot}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!b}{angle=90}{0}}
\newcommand*{\RisEpsRotBotPlace}[5]{\RisEpsLarge{#1}{#2}{#3}{#5}{#4}{angle=90}{0}}

\newcommand*{\RisEpsRotClock}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{tbhp}{angle=-90}{0}}
\newcommand*{\RisEpsRotClockTop}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!t}{angle=-90}{0}}
\newcommand*{\RisEpsRotClockBot}[4]{\RisEpsLarge{#1}{#2}{#3}{#4}{!b}{angle=-90}{0}}
\newcommand*{\RisEpsRotClockBotPlace}[5]{\RisEpsLarge{#1}{#2}{#3}{#5}{#4}{angle=-90}{0}}

Наконец, в примере к этой статье используется макрос для вставления таблицы в текст
\WrapTableBE<\source>
<source lang="tex">\newcommand*{\WrapTableBE}[6]{
\renewcommand{\baselinestretch}{0.75}\small\normalsize
\begin{wraptable}{#1}{#5\textwidth} \sffamily
\begin{center} \vspace*{-#6mm}
\caption{\label{tab:#2}#3} \begin{tabular}{#4} \toprule }
% #1 : l, r #2 : label #3 : caption #4 : cc|cc|rr|ll #5 : 4 #6: 5% вставить в текст таблицу, окончание

\newcommand*{\WrapTableEN}[2]{
\bottomrule \end{tabular} \end{center} \vspace{-#2pt} \small #1 \end{wraptable}
\renewcommand{\baselinestretch}{1}\small\normalsize}


Глава 4. Экспорт текста в разные части книги или в другие книги


В конце каждой главы я помещаю список задач и список вопросов на экзамене. В конце книги размещены эти задачи с решениями, а также полный список экзаменационных вопросов.
Я также параллельно пишу вторую книгу — "решебник", в которой приведены решения задач из учебника. Это значит, что в процессе компиляции книги происходит добавление текста в "решебник".
Таким образом, одни и те же тексты должны появиться в двух совершенно разных местах. В дальнейшем для краткости будем обсуждать только задачи с решениями в конце книги. Я хочу, чтобы условие каждой задачи было напечатано дважды, в конце главы и в конце книги перед решением.
Но я категорически не хочу иметь две версии одного и того же текста в разных местах, потому что это источник бесконечного количества ошибок. И значит, компилятор должен сам дублировать фрагменты текста, копируя их в разные места разных книг.
Как я решаю эту задачу. В конце преамбулы у меня стоит команда:
\usepackage{newfile} % загрузить пакет newfile
\newoutputstream{ZO} % создать поток по имени ZO
\openoutputfile{Zadachi.tex}{ZO} % направить поток в файл по имени Zadachi.tex
\newcommand*{\PutNumberZO}{\addtostream{ZO}{$\{$\thechapter.\theenumi$\}$}} % в файл Zadachi.tex % добавить номер главы и номер задачи.

Она открывает файл Zadachi.tex и во время компиляции направляет туда текстовый поток. Файл Zadachi.tex до начала работы пустой, а еще есть файл Zadachi_Head.tex который потом будет компилироваться, и который выглядит, например, так:
\chapter{Задачи и решения}
\Epigraf{0.68}{Отплякиваясь от сурых пляк, каждый хамсик шмыряет на глын по 5 гнусиков. Сколько гнусиков шмырнут на глын 12 хамсиков, отплякивающихся от сурых пляк?}{"Задачи по математике", Г.Остер}
\bigskip
\input{Zadachi}
\endinput
   После компиляции всех глав идёт команда закрыть поток и начать компилировать  файл 
\closeoutputstream{ZO}  % закрыть поток ZO
\include{Zadachi_Head} % компилировать файл Zadachi_Head.tex 

Здесь появился новый пакет clipboard, который имеет всего четыре команды:
\newclipboard{myclipboard}
— открытие файла myclipboard.cpy для записи,
\openclipboard{myclipboard}
— открытие файла myclipboard.cpy для чтения,
\Copy{item_name}
— запись в файл myclipboard.cpy фрагмента с меткой item_name,
\Paste{item_name}
— чтение их файла myclipboard.cpy фрагмента с меткой item_name.
Важная особенность этого пакета — запоминая фрагмент текста во внешнем файле, он не забывает откомпилировать фрагмент в исходном файле. Так возникает процедура копирования. Большой недостаток этого решения состоит в том, что мы должны сначала открыть файл myclipboard.cpy для записи, записать в него условия задач, закрыть, и только потом открыть его для чтения. Я, к сожалению, не нашёл простого способа закрыть и открыть, поэтому использую более громоздкое решение: введена булевская переменная FR (FR= First Run) значение которой при первой компиляции равно FR=true, а при последующих — FR=false. И если FR=true, то файл myclipboard.cpy открывается для записи, а если FR=false, то файл myclipboard.cpy открывается для чтения.
К сожалению, перед первой и второй компиляциями надо вручную устанавливать значение переменной FR. Это неприятно, но не будет ничего страшного, если Вы забудете это делать. Если у Вас всегда будет FR=true или FR=false, то в задачнике просто не будет условия задач, что вполне допустимо при работе над текстами глав.
Мне было лень решать эту проблему, всё равно текст надо компилировать минимум трижды.

Глава 5. Работа со ссылками


5.1 Создание списка литературы
Допустим, я пишу большой обзор. Это значит, что я выдергиваю куски из своих текстов вместе с ссылками на литературу. В конце я прошу компилятор (BibTex) пересмотреть мои предыдущие списки литературы, разбросанные по файлам Bib_File1.bib, Bib_File2.bib..., используя, например, команду
\bibliography{Bib_File1,Bib_File2,...Bib_FileN}

Компилятор ссылок, конечно, сделает мне макет моего обзора, но мне этого мало.
При написании книг и обзоров очень полезно иметь продвинутый сортировщик библиографических ссылок. Для этого существует пакет bibMacros гражданина R. Schlicht. В результате установки этого пакета в меню WinEdt в разделе BibTex появятся куча команд для работы с ссылками.

В частности, я получаю возможность создать новый файл с ссылками из нового обзора, Bib_FileN+1.bib, причем по моему желанию ссылки могут быть расставлены в правильном порядке (например, в порядке упоминания в тексте, как принято в физике).

Напоминаю, что файлы типа bib содержат список литературы в виде записей вроде этой:
@article{Levchenko01_7485,year=2001,
 title={Electronic structure of halogen-substituted methyl radicals: excited states of {CH$_2$Cl and CH$_2$F}},
 author={S{ergey} V. Levchenko and A{nna} I. Krylov},
 journal=JCP,volume=115,pages=7485,numpages=10,
 abstract={Electronically excited states in CH2Cl and CH2F radicals are...}}


5.2 Змей Горыныч — ГОСТ
Дальше у англоязычных товарищей проблем, по-моему, не бывает. А у нас, русскоязычных, есть большая головная боль. Она называется ГОСТ.
Российский ГОСТ разрабатывал, несомненно, очень высокоэффективный диверсант какой-нибудь абсолютно враждебной России страны. Вот пример его творчества



Рис. 4. Змей Горыныч — ГОСТ (2008)

Как видим, русскоязычный автор должен писать фамилии по два раза, лихо переставлять инициалы и фамилии и использовать пять разных стилей оформления в зависимости от количества авторов. Потренеруйтесь переставить инициалы и фамилию, например, у господ H. Ford III и W. S. Stoner Jr.

И это только книги. В статьях диверсант ввёл разные наклонные и даже двойные палочки — чтобы стало так, как нету ни у кого в мире.

В диссертации, например, следование стандартам обязательно. Во всяком случае, многие соискатели так думают. В мое время, в 2008 году, пакет для форматирования по ГОСТу написал хороший человек Поляков, и я его использовал для форматирования списка литературы. Я молодец, но и белая ворона одновременно, потому что соискатели массово этот ГОСТ игнорировали. Но в стране все с тех пор только ужесточалось, так что я не знаю, как там сейчас.

А сейчас я закончил книгу, а в ней ссылки тоже должны быть отформатированы по ГОСТу. Но, как я понял, ГОСТы в диссертации и в книге — разные, в книге он менее уродский. Идем в Интернет, скачиваем пакет Котельникова gost, вставляем в преамбулу строчку
\bibliographystyle{gost2008}

после чего форматируем список литературы. Дело сделано, все ГОСТы соблюдены.
Но даже Котельников иногда ошибается. Так, в его пакете есть мелкие ошибочки.(**)
Например, пусть надо напечатать "Vol. 115". Правило хорошего тона состоит в том, чтобы не было разрыва строки между "Vol." и "115". А пакет Котельникова этот разрыв иногда допускает, см. рис. 5.


Рис. 5. Плохо отформатированная запись

5.3 Доработка напильником
Значит, надо доработать напильником… (Тем более, что не только в этом месте. Авторский указатель со смесью английских и русских имён тоже.) В процессе компиляции bib-файлов создается файл P_bibs.bbl, содержащий записи типа
\bibitem{Levchenko01_7485}
\selectlanguageifdefined{english}
\BibEmph{Levchenko~S.~V., Krylov~A.~I.} Electronic structure of
 halogen-substituted methyl radicals: excited states of {CH$_2$Cl and
 CH$_2$F}~// \BibEmph{J. Chem. Phys.} \BibDash
\newblock 2001. \BibDash
\newblock Vol. 115. \BibDash
\newblock P.~7485.

Находим все неправильности и исправляем их руками. В данном примере вместо "Vol. 115" делаем "Vol.~115". Этот исправленный файл прячем в укромном месте. Перед последней, окончательной компиляцией заменяем текущий файл P_bibs.bbl на исправленный, и все получится хорошо.

Глава 6. Минимальный работающий пример


6.1 Список файлов

Привожу минимальный шаблон книги, в котором можно найти перечисленные выше
идеи. В главной директории должны быть файлы:
  1. P_main.tex % главный в проекте
  2. P_preamble.tex % преамбула
  3. Ch1.tex % часть 1
  4. Ch2.tex % часть 2
  5. Figs\P_ABC.eps % В поддиректорию Figs положите свой рисунок P_ABC.eps.
  6. Zadachi.tex % до начала работы пустой
  7. Zadachi_Head.tex % заголовок части с задачами и решениями.


6.2 Файлы маленькой книги, можно компилировать
Скрытый текст

% Файл P_main.tex  % главный в проекте
\documentclass[10pt,twoside,openany]{book}
\usepackage{etoolbox}   % this package introduces operations: \newbool,...

\newbool{For_Internet}
\booltrue{For_Internet}    % % Цветная книга для Интерента
%\boolfalse{For_Internet}  % или черно-белая для бумаги

\newbool{FR} %FR= First Run
%\booltrue{FR}  %  --  make  FR = true
\boolfalse{FR}  %  --  make  FR = false

\input{P_Preamble}       % загрузить преамбулу
\includeonly{             % какие главы включаем в книгу
P_Ch1,        %%%
P_Ch2,        %%%
Zadachi_Head  %%%
}
\begin{document}         % начало документа
\tableofcontents         % Оглавление

\ifbool{FR}{\newclipboard{myclipboard}}{}
                          % какие главы компилируем
\include{P_Ch1}          %%%
\include{P_Ch2}          %%%

\closeoutputstream{ZO}  % закрыть поток в файл Zadachi.tex
\ifbool{FR}{}{\openclipboard{myclipboard}}

\include{Zadachi_Head} % загрузить Файл с задачами с решениями
%\bibliography{P_Bibs}  % создать список литературы, убираем простоты ради

\end{document}         % конец документа
\endinput              % конец текста, дальше только комментарии
%+++++++++++++++++

% Файл P_preamble.tex  % преамбула
\usepackage[warn]{mathtext} %(до задания inputenc, fontenc, babel)
% русские буквы в формулах, с предупреждением
%---- основной язык -- русский
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[english,russian]{babel}   % load Babel setup for English
                                      % and Russian languages;
                                      % the latter is the default.
% Поскольку опция russian стоит последней, основным языком документа будет russian.

%-- форматирование страницы
\textheight 187mm
\textwidth 130mm
\headheight13.6pt
\special{papersize=170mm,240mm}
\oddsidemargin -5.4mm
\evensidemargin -5.4mm
\topmargin -5.4mm

%--- стиль заполнения таблицы
\clubpenalty=400
\widowpenalty=400
\tolerance=500  %max=10000, default=200 (выбор между разрежением и переполнением).
\looseness=-1 %(можно удлинять страницу на одну строку)
\hfuzz=2.5pt % можно вылезти за край строки на 2.5

%--- полезные пакеты
\usepackage{amssymb,amsmath} % почти стандарт Латеха
\usepackage{xspace}
\usepackage{enumerate} % списки
\usepackage{booktabs}
\usepackage[dotinlabels]{titletoc}

%-- включение рисунков
\usepackage{graphicx}  % Пакет для включения рисунков
%\usepackage[dvips]{color} % есть цветные фотографии!
\graphicspath{{figs/}} % В этой директории хранятся все рисунки *.eps,
\usepackage[usenames,dvipsnames]{xcolor,colortbl}

%--- мой цвет для таблиц, и для ссылок на рисунки и формулы
\definecolor{lightcyan}{rgb}{0.88,1,1} % обычно: ( 0.88, 1, 1)
\ifbool{For_Internet}{\newcolumntype{g}{>{\columncolor{lightcyan}}c}}%
{\newcolumntype{g}{>{\columncolor{light-gray}}c}}
\newcommand*{\red}[1]{\textcolor[rgb]{1.00,0.00,0.00}{#1}}
\newcommand*{\blue}[1]{\textcolor[rgb]{0.00,0.00,1.00}{#1}}

\ifbool{For_Internet}%
{\renewcommand{\thetable}{\red{{\it\arabic{chapter}.\arabic{table}\,}\normalfont}}}%
{\renewcommand{\thetable}{{\it\arabic{chapter}.\arabic{table}\,}\normalfont}}

\ifbool{For_Internet}%
{\renewcommand{\thefigure}{{\blue{\bfseries{\arabic{chapter}.\arabic{figure}}\normalfont}}}}%
{\renewcommand{\thefigure}{{\bfseries{\arabic{chapter}.\arabic{figure}}\normalfont}}}

% Чтобы окрасить названия глав в оглавлении
 \ifbool{For_Internet}{
 \titlecontents{chapter}[1.8em] % distance to page margin
   {\vspace{3mm} \bfseries\color{blue}} % \sffamily
   {\contentslabel[\thecontentslabel. ]{1.5em}} % distance between 1. and Title of chapter
   {\hspace*{-2.3em}}{\color{blue}
   {\titlerule*[1pc]{}\contentspage}\color{blue}}[\vspace{0.5mm}]
 }{}

\definecolor{light-gray}{gray}{0.95}
\ifbool{For_Internet}{\newcommand*{\CR}{\rowcolor{lightcyan}}}%
{\newcommand*{\CR}{\rowcolor{light-gray}}}

%---- оформление ссылок в виде \label{fig:name} \fref{fig:name}
\usepackage[vario]{fancyref} % plain is also possible

\renewcommand*{\fancyrefdefaultspacing}{\fancyreftightspacing}

\frefformat{vario}{\fancyreffiglabelprefix}{\bfseries{#1}\normalfont }
\frefformat{vario}{\fancyreftablabelprefix}{\textit{#1}\normalfont}
\frefformat{vario}{\fancyrefenumlabelprefix}{\textrm{#1}\normalfont}
% Если это убрать, то пакет fancyref начинает вставлять много отсебятины.

%--- мои макросы
\newcommand*{\mb}[1]{\mbox{\boldmath$#1$}}  % жирный мат. курсив

\newcommand*{\BE}{\begin{equation}}        %
\newcommand*{\EN}{\end{equation}}          %

\newcommand*{\BEA}{\begin{subequations} \begin{eqnarray}} %
\newcommand*{\ENA}{\end{eqnarray} \end{subequations}}   %

\newcommand*{\hs}{\hspace*{\parindent}}    %
\newcommand*{\nn}{\nonumber}        %

\newcommand*{\1}{$_1$}
\newcommand*{\2}{$_2$}
\newcommand*{\3}{$_3$}
\newcommand*{\4}{$_4$}
\newcommand*{\5}{$_5$}
\newcommand*{\6}{$_6$}
\newcommand*{\7}{$_7$}
\newcommand*{\8}{$_8$}
\newcommand*{\9}{$_9$}
%
\newcommand*{\T}[1]{\text{#1}}
%
\newcommand*{\vep}[3]{$(#1 \pm #2) \times \! 10 ^{#3} $\xspace} % (v+-e)*10^n
%
\newcommand*{\ic}{см$^{-1}$\xspace}                 % inverse centimeters

%----  Переопределение математических символов в русских традициях
\renewcommand{\le}{\leqslant}
\renewcommand{\leq}{\leqslant}
\renewcommand{\ge}{\geqslant}
\renewcommand{\geq}{\geqslant}

%---- вставить простую таблицу
\newcommand*{\TableBE}[5]{
\begin{table}[#1] %\captionabove
\vspace*{-#5mm}
\centering \sffamily \caption{\label{tab:#2}#3} \begin{tabular}{#4} \toprule }

\newcommand*{\TableEN}[3]{
\bottomrule \end{tabular}
\vspace{-#2mm}  \small \begin{flushleft}  #1 \end{flushleft}
\vspace{-#3mm}
\end{table}}

%---- вставить в текст таблицу
%  начало
\newcommand*{\WrapTableBE}[6]{
\renewcommand{\baselinestretch}{0.75}\small\normalsize
\begin{wraptable}{#1}{#5\textwidth} \sffamily
\begin{center} \vspace*{-#6mm}
\caption{\label{tab:#2}#3} \begin{tabular}{#4} \toprule }
% #1 : l, r   #2 : label   #3 : caption  #4 : cc|cc|rr|ll  #5 : 40mm

% вставить в текст таблицу, окончание
\newcommand*{\WrapTableEN}[2]{
\bottomrule \end{tabular} \end{center} \vspace{-#2pt} \small #1  \end{wraptable}
\renewcommand{\baselinestretch}{1}\small\normalsize}

%---- вставить рисунок внутрь текста
\usepackage{wrapfig} % нужен для RisEpsRight

\newcommand*{\EpsWrapD}[7]{%
\begin{wrapfigure}[#5]{#3}{#2 \textwidth} %
\begin{center} \sffamily
\includegraphics*[width= #2 \textwidth ]{#1}
\vspace{-#7mm}
\caption{\label{fig:#1}#4}
\vspace{-#6pt}
\end{center}
\end{wrapfigure}}

%---- потоки в другие файлы
\usepackage{clipboard} % It is used to |copy and \HL\Paste the texts with tasks
\usepackage{newfile}
\newoutputstream{ZO}
\openoutputfile{Zadachi.tex}{ZO}
\newcommand*{\itemZO}[2]{\item  \label{enum:#1}%
\Copy{#1}{\emph{\ifbool{For_Internet}{\blue{ #2 }}{#2}}}%
\addtostream{ZO}{$\{$\thechapter.\theenumi $\}$}}

\endinput

%+++++++++++++++++
% Файл \Ch1.tex  % глава 1
\chapter{\label{ch:Chast1}Про сжатие текста}
\section{Маленькие рисунки}
\hs
   Латех охотно отдаёт под плавающий объект (рисунок, таблицу) целые строчки, но очень не любит обтекание плавающих объектов текстом.
   Печальный факт состоит в том, что вписать в текст рисунок с подписью
снизу или сверху в Латехе до сих пор проблема.
   Это делают пакеты wrapfig и floatflt, но оба капризны.
   Так что выбор есть, но он плохой.

   Если вы видите маленький красивый векторный рисунок и
подпись к нему расположена слева или справа,
так что рисунок и подпись занимают всю ширину страницы,
то знайте -- это фирменный стиль пакета TikZ.
%   Люблю его, как тёщу.  То есть совсем не очень.
   Одна из его поганых особенностей состоит в том, что получение pdf-файла
по схеме tex$\to$dvi$\to$ps$\to$pdf очень сильно отличается
от результатов, полученных по схеме tex$\to$dvi$\to$pdf.

\section{Как форматировать текст}
\hs
   Представим себе, что вам нужно ужать текст.
   Например, чтобы убрать висящую в начале страницы строку, после которой начинается новая глава.

   Пример внизу показывает один из полезных трюков -- разное размещение индексов в знаке суммы.
   Заодно показано введение текста в формулу в математической и в текстовой моде.
\BEA
   \sum_{\varkappa=0,...}(1/2)^{\varkappa} \leq {\mb 2}, & \T{скобка справа от text, $e^x$, \vep{2}{1}{3}   },\\
   \sum\nolimits_{\phi=0,...}(1/2)^{\phi} \le {\mb 2},   & {\text скобка слева от text, \tg(x) }.
\ENA

\section{Задачи к главе \thechapter}
\begin{enumerate}[$\{$\thechapter.1$\}$]
\begin{writeverbatim}{ZO}
\section{Задачи и решения к главе~\ref{ch:Chast1}}
\end{writeverbatim}
%---------------------
\itemZO{Zadacha11}{Докажите, как физик физику, что $f= \int_0^{\infty} \cos(x/a) \; dx =0$.}
\begin{writeverbatim}{ZO}
\Paste{Zadacha11}\smallskip\\
\hs
   Доказательство.
   Пусть математики думают, что $f = \lim_{R \to \infty} \sin(R/a) = ??$, это их дело.
   А мы добавим какую-нибудь физическую причину, меняющую определение:
\BE \nn
f = \int_0^{\infty} e^{-bx}\; \cos(x/a) \; dx = \frac{b}{b^2+1/a^2}.
\EN
   Теперь надо перейти к частным случаям.
   Например, пренебречь физической причиной, положив  $b=0$.
   Получим $f = 0$, что и требовалось доказать.

\end{writeverbatim}
\end{enumerate}

%+++++++++++++++++
% Файл \Ch2.tex  % глава 2
\chapter{\label{ch:Chast2}Про букву ё и кавычки}
\section{Передохнём или передохнем?}
\hs
   Для тех, кто протестует против ничем не заслуженной дискриминации буквы \emph{ё},
есть специальная программа Yo.
   Скачайте её и вы сможете ёфицировать свой текст!
   Долой дискриминацию буквы \emph{ё}!

\section{Русские кавычки}
\hs
   В английском языке приняты одинарные и двойные кавычки в виде ‘...’ и “...”.
   В России приняты французские («...») и немецкие („...“) кавычки, они называются «ёлочки» и «лапки» соответственно.

\WrapTableBE{r}{C2_parties}{Ответы политпартий на вопросы}{g llll}{0.3}{8}
\CR   & I  & II  & III  & IV   \\
\midrule
ЕдРо  & 0 & 0 & 1 & 1  \\
ЛДПР  & 1 & 1 & 0 & 1  \\
КПРФ  & 0 & 1 & 1 & 0  \\
\WrapTableEN{I, II, III, IV -- номера вопросов, 0 и 1 -- ответы (да, нет)}{5} %
%
   «Лапки» используются внутри «ёлочек» («Что тебе снится, крейсер „Аврора“»).

   Для набора «лапок» можно использовать команды \verb|\glqq|  и \verb|\grqq|,
а для «ёлочек» --– \verb|\flqq|  и \verb|\frqq|.
   Они определены в пакете babel.

   Но это не обязательно.
   Например, «лапок» на клавиатуре нет, а скопировать их откуда-нибудь можно и компилятор их понимает.

\section{Задачи к главе \thechapter}
\begin{enumerate}[$\{$\thechapter.1$\}$]
\begin{writeverbatim}{ZO}
\section{Задачи и решения к главе~\ref{ch:Chast2}}
\end{writeverbatim}
%---------------------
\itemZO{Zadacha21}{В табл.~\fref{tab:C2_parties} показаны ответы на важные вопросы трёх политических партий.
   По этим ответам можно вычислить коэффициенты антикорреляции (КА) между любыми двумя партиями, $0 \le$КА$\le 1$.
   Всегда ли можно нанести эти партии на плоскость в виде трёх точек, чтобы расстояние между любыми двумя партиями было пропорционально КА между ними? }
\begin{writeverbatim}{ZO}
\Paste{Zadacha21}\hs

\EpsWrapD{P_ABC}{0.28}{r}{Три партии}{8}{0}{6}

   Ответ.
   Для построения треугольника нужно, чтобы выполнялось неравенство треугольника $a+b \ge c$, где
($a,b,c$) -- любая выборка из трёх длин, см. рис. \fref{fig:P_ABC}.

   Представим себе крайний случай -- у одной партии все нули, а у другой все единицы.
   Расстояние между ними равно 1. Тогда у третьей партии сумма коэффициентов будет тоже равна 1, то есть она располагается на отрезке, соединяющем первые две партии.
   Все остальные ситуации проще.

\end{writeverbatim}
\end{enumerate}
\endinput
% Программа (TikZ) для этого рисунка:
\tikzsetnextfilename{P_ABC}
\begin{tikzpicture}
\coordinate(a) at (1,0);
\coordinate(b) at (-1.3,0);
\coordinate(c) at (0,1);
\draw[very thick] (a) --node[below]{$a$} (b)--node[above left]{$b$} (c)--node[above right]{$c$} (a);
\shade[ball color=blue] (a) circle(0.3) node[below=3mm]{ЛДПР};
\shade[ball color=red]  (b) circle(0.4) node[below=4mm]{КПРФ};
\shade[ball color=green](c) circle(0.5) node[above=5mm]{ЕдРо};
\end{tikzpicture}

%+++++++++++++++++
% Файл Figs\P_ABC.eps  % рисунок, поставьте какой-нибудь свой

%+++++++++++++++++
% Файл Zadachi.tex до начала работы пустой

%+++++++++++++++++
% Файл Zadachi_Head.tex % Заголовок части с задачами и решениями
\chapter{Решения задач}
\input{Zadachi}
\endinput



6.3 Результат компиляции этих файлов





Примечания
(*) Я считаю лучшим русскоязычным учебником по Латеху книгу Чеботаева и Котельникова «LaTeX по-русски», см., например, здесь: studlab.com/pdf/book/LaTeX-po-russki.pdf. Насколько я знаю, срок авторских прав на неё уже истёк, и теперь ничто не мешает читателям скачать бесплатную электронную версию.

(**) Я сообщил об этом И. Котельникову, он обещал исправить.

(Продолжение может быть, а может и не быть.)
RUVDS.com
VDS/VPS-хостинг. Скидка 10% по коду HABR

Комментарии 99

    +7
    Я в последнее время перешел на Atom для латеха, и это оказалось очень удобно:
    * Весит мало,
    * встроенный гит (прощай, paper_draft_183a_remarks_corrected.tex)
    * макросы! (при наборе fi… сразу выдается полное окружение figure со всеми обвесами, как я люблю, не обязательно определять newcommand — особенно удобно для совместной работы).

    Я как раз только что написал диссер на 300 с лишним страниц в латехе и кайфую, как же все красиво получилось.
      +2
      Интересно, а все же использовали гит только лично вы, или те кто вносил правки (руководитель например) тоже пользовались? Думаю использовать гит при написании статьи в соавторстве, но не факт что второй соавтор согласится использовать.
        +1
        Ну вот я писал как-то статью с соавтором, который был в курсе про гит, и это было прямо очень удобно. Каждый работает на разных ветках, потом мердж, все комментируется, и так далее. При этом статья сидит на гитхабе, так что отовсюду ее можно достать.

        Но если соавтор не в курсе гита, тогда overleaf гораздо-гораздо проще, пусть и не так удобно.
          0
          Спасибо, если с гит не получится, можно будет попробовать.
            +3
            Вообще, гит очень удобен и для написания в одиночку. Можно делать ветки, в которых переписываешь части текста, а потом сравнивать, как лучше звучит. Ну и версии решают.
        0
        Рад за Вас. Я тоже люблю латеховское оформление, хотя среди старых латехщиков много брюзжания на шрифты от Д. Кнута. Интересно, ГОСТ использовали? А шрифты какие, кнутовские (CM, CM-super) или что-нибудь современное?
          +1
          Я не в России, так что у меня полная свобода в выборе стиля была. Шрифты я взял sans serif Linux Biolinum для текста и к ним подходящие из newtx для математики (покрутил немного для пущей красоты).
        +1
        Ну, наконец-то. Радостно приветствую вас.

        «Современное разделение содержимого на текст, рисунки, таблицы и формулы» делает поток текста проще и помогает его понимать. Это разделение создаёт структуру. Если смешивать форматы, может образоваться путаница.

        Думая про идеальную книгу будущего, я никак не могу совместить хорошее старое и хорошее новое.

        Хорошее старое это навигация и эргономика. Это буквицы (для дробления текста на разделы), это постраничные справки (рядом с текстом), это узоры-заставки (оживляют стену букв), это шрифт (который не утомляет), это облик страницы и серебро набора.

        Хорошее новое это связность, семантическая разметка, извлечение смысла из текста, автоматические указатели, развитый поиск.

        Таким образом, надо всё-таки начать с вопроса, чем плоха была старая бумажная книга. Обозначив, чем она плоха была, мы и найдём, как улучшить её в новой электронной книге.
          +1
          Бюро Горбунова вот неплохо над этим поработали, у них целая концепция.
            +1
            Да если бы.

            ХТМЛ‑формат не обеспечивает передачу даже (!) списка, нумерованного кириллицей.

            А как они предлагаю сделать такую простую вещь, как указатель авторов цитированных работ?

            А как работает поиск в локальной копии, без интернета?
              +2
              Я за что купил, за то продаю:) У бюро вышло несколько книг, выглядит отлично на мой вкус. Но я не специалист, просто рассказал, что люди про это думают.
                0
                ХТМЛ‑формат не обеспечивает передачу даже (!) списка, нумерованного кириллицей.

                Встроенным механизмом обделили, да, но через CSS можно сделать любую нумерацию, хоть картинками. Как вариант, см. так (явными классами) или так (через уровни вложенности), или через SСSS вот так (аналог предыдущего).

                  0
                  Когда-нибудь в светлом будущем браузеры будут поддерживать CSS Counter Styles Level 3 и проблема будет решаться в пару строк кода. А пока что частичная поддержка есть только в Firefox (см. пример jsfiddle.net/dvb7a8wo).
                  0
                  epub — это тот же html пожатый zip-ом.
                  списка, нумерованного кириллицей.

                  Цель?
                  как указатель авторов цитированных работ

                  Элементарно, список с нумерацией и url на нужную работу, в тексте url на этот список с нумерацией (что тоже делается довольно просто для epub).
                    0
                    Покойный автор записал в своём труде список, нумерованный кириллицей. Следовательно, в издании необходимо сделать такой список.

                    Вы написали, что в результате получается список с нумерацией и ссылками на нужные работы. А как построить этот список? Каким инструментом вы можете, имея сноски по тексту, получить из них указатель авторов цитированных работ?

                    В латехе для этого есть бибтех и его стили. Этот способ более-менее работает для PDF файлов, однако он весьма устарел. Может быть, вы знаете другое решение?

                    Спасибо.
              0

              А можно саму книгу посмотреть? Сам листаю William W. Parson Modern Optical Spectroscopy — недавно осознал, что лучше всего погружает в тему добротная монография, а на русском мало чего удается найти.


              В качестве редактора еще хорош Sublime text: там и цветовые схемы, и макросы, и автозаполнения, и формулы с картинками отображаются сразу во время набора. Но в последнее время подсел на Overleaf (да и научника подсадил). Для начинающих и углубляющихся он хорош обильной документацией и рекомендациями, и при компиляции удобно отлавливать ошибки и варнинги

                +2
                Ага, sublime text и atom — по сути одно и то же, просто от разных производителей:) Однозначно, маст.

                Overleaf все же для совсем серьезной верстки сложновато, не хватает вот этих всех макросов и прочего удобства.
                  0
                  Мы живём в волчьем мире капитализма, увы. Права на печатную версию имеет издатель, на электронную — торговая контора, с которой издатель заключил контракт на торговлю электронной версией. Были случаи, когда торговля судилась с автором за то, что он кому-то передал электронную версию своей книги.
                  А про книгу смотрите, например, здесь:
                  expose.gpntbsib.ru/expose/vnp-206d4c08/book/%D0%942019-4751*992619810
                    +2
                    А если бы издатель не имел прав на электронную версию, что бы изменилось? Автор получил бы вдвое меньше денег? Или автор нашёл бы другого издателя?

                    Тот же вопрос другими словами: почему автор обязан соглашаться с таким требованием издателя?

                    Дело в том, что от других авторов я слышал, что бывают другие условия. Один доктор наук рассказал, что продал издательству права на учебник на три года, всего лишь на три года.
                  +1
                  Я делал перевод The NURBS book — она как раз сделана на TeX, но я делал перевод на html'е — не так весело, но зато с VR
                    0
                    Круто, очень круто
                    У меня в начале работы с Латех тоже много раз чесались руки наделать велосипедов настроить все под себя через \newcommand и \renewcommand. Но потом однажды заменил в \documentclass {book} на {memoir}, докинул {fontspec}, {microtype}, {polyglossia}, {longtable}, {booktabs}, {tocloft}, покурил соответствующие мануалы и понял, что собственно все устраивает на 95%, а на остальные 5 можно и забить.
                      0
                      Свой пакет быстрее, чем подключение готовых пакетов.
                        0
                        Вполне возможно, но я больше про порог вхождения и кривую обучения.
                        Можно пилить свой CRUD на чистом SQL, а можно взять готовый фреймворк с ORM и прочими батарейками в комплекте.
                        Вполне реально свою пагинацию таблиц запилить, только зачем, если есть {longtable} и {booktabs}. Особенно, учитывая никакую информативность стандартных логов ошибок, и то, что отладка фактически возможна только в формате bisect/comment out -> compile -> repeat.
                        Но конечно, как всегда с пакетами/библиотеками, в LaTeX тоже можно устроить свой dependency hell
                          0
                          Да, вы правы. Большой пакет лучше готовым брать. Речь про маленькие вроде microtype.
                        0
                        Я, кстати, тоже выбрал memoir и что-то из вашего списка, когда пытался оформлять большие тексты. Дало большой скачок в качестве.
                        +2
                        Спасибо за статью! Жду вторую часть!
                        Сам вожусь с книжкой в Латехе, буду изучать ваши находки.
                        Свои выложил здесь:
                        dxdy.ru/topic94437.html
                        Обнаружил следующую проблему — у меня много графиков экспериментальных данных, и надо как-то привести к единообразному виду шкалы, надписи, и т.п… Многие графики перерисовывать уже нереально, а даже если и перерисовывать — то это будут просто кривые нарисованные скажем в Visio (там достаточно удобно обрисовывать растровый рисунок).
                        Вот и думаю как — надо что-то чтоб указать шкалы, пределы, и т.п… — и дальше туда шлепнуть картинку (растр или вектор) собственно с телом графика. Можно ли в TikZ что-то такое сделать?
                          0

                          О, это однозначно в закладки! Сам использую в качестве справочника методичку Воронцова, но ей уже 15 лет и конкретных фишечек для диссера тоже не хватает

                            0
                            Мой подход. Если графики достаточно простые, я использую программу Graph2Digit, в которой я руками оцифровываю графики. (Автоматическая оцифровка работает обычно плохо.) Это довольно быстро получается. Полученные координаты точек я обычно использую либо в LaTex-TikZ, либо в Origin, в зависимости от вида картинки.
                            Простые графики они оба строят отлично.
                            TikZ, на мой взгляд, лучше и гораздо универсальнее, но к нему надо долго привыкать. Он прост на первый взгляд, жутко глюкавый — на второй взгляд, очень нетривиально устроенный — на третий. Но это если речь идёт о сложных графиках, типа трёхмерных поверхностей.
                              0
                              Ну это вы зря об автоматической оцифровке. Программы хорошо справляются со сложными графиками, если много зависимостей (черные линии) на графике — то да, надо часть стереть. А что кстати, является сложным графиком?
                              Я использую GetData, она хорошо справляется. А Tracer от Marcus Karolewski у меня оцифровал старый график со слабокрасными чернилами на голубой миллиметровке. В принципе можно подобрать и другую программу под ваши графики.
                                0
                                Не пробовали для построения графиков Asymptote?
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0

                                Software Foundations, например. Правда, это не совсем по физике.

                                  0
                                  Можно взять документацию к какому-нито большому пакету, типа того же {memoir} (PDF TEX). Там обычно кроме самой документации еще много комментариев прямо в коде — что почему, какие подводные камни и тп.
                                    +2
                                    ru.overleaf.com/gallery/tagged/book
                                    Вот здесь много, но надо скачивать pdf целиком, чтоб посмотреть на дизайн страниц.
                                    Некоторые вещи забавные, например вот:
                                    v1.overleaf.com/latex/templates/d-and-d-5e-latex-template/vmfdkjfhfynv.pdf
                                      0
                                      Ну нормальная заготовка книги для AD&D мастеров. Очень стильно.
                                    +2

                                    А я поделюсь своим видением идеального учебника будущего. Начну с того, что, как мне кажется, необходим пересмотр концепции учебной книги. Вот у автора, к примеру, есть задачи в книге и их решения где-то. Но как же много существует книг с задачами и без ответов! Как читатель может проверить себя в таком случае? Кроме этого, часто книги вообще никак не мотивируют учащегося читать что-то дальше. Как итог — существуют два типа книг — для чайников, где пытаются всячески заинтересовать и разжевать, и академические, где идёт теория, часто даже без рисунков. В этом плане мне, к примеру, понравилась книга Anton — Calculus Early Transcendentals 10th edition — там автор пытается и доступно показать интерпретацию материала с помощью графиков, даёт дополнительно интересный материал из жизни ученых, там есть задачи и есть решения задач в отдельном Solution Manual.


                                    Коротко об этом же

                                    Несмотря на то, что мы живем в 21 веке и можем
                                    использовать все доступные средства для того, чтобы ученик лучше усвоил
                                    что-то, к примеру, мы можем использовать gif-картинки с анимацией
                                    процесса, аудио и видео для иллюстрации процесса, задания с
                                    автопроверкой, нейронные сети, которые бы оценивали степень усвоенности
                                    материала читателем, очень часто учебные материалы строятся по схеме — теория+примеры+задачи. При этом очень часто в учебниках бывает, что к
                                    задачам может не быть ответов (отсутствует возможность самопроверки).
                                    Кроме этого, мы очень часто забываем про мотивацию учащегося. К примеру,
                                    в курсе алгоритмов может даваться какое-нибудь сбалансированное дерево,
                                    но ученик может не знать где его применять, в чем его "крутость" для
                                    повседневной программистской жизни, "зачем оно вообще нужно фронтендеру".


                                    Я подумал, что возможно было бы круто создать учебник, который бы
                                    строился по следующему принципу (структура для каждого раздела/главы):


                                    Мотивация (попытаться заинтересовать человека, показать для чего нужен
                                    материал, какие проблемы решает)


                                    Неформальное описание (простым языком показать, что делает формула, её
                                    интерпретацию, показать увлекательные и доступные материалы в виде
                                    анимаций/видео/аудио)
                                    +
                                    Неформальное доказательство


                                    Формальное описание (теорема, гипотеза, формула)


                                    Формальное доказательство


                                    Другие формальные доказательства (свёрнуто)


                                    Пример решения задач (как обычных, так и из тех, что приведены в
                                    мотивационной части), возможно, показ ограниченности решения


                                    Задачи для решения (с формами автопроверки, если возможно)


                                    Подсказки к задачам (свёрнуто)


                                    Ответ к задаче (свёрнуто)


                                    Решение (свёрнуто)


                                    В дополнение к этому можно давать доп. информацию в свёрнутом виде, типа
                                    биографий ученых, связанных с темой, другие подходы к решению проблем,
                                    доп. литературу с кратким её обзором.


                                    "(свернуто)" — я обозначал то, что может быть свёрнуто, чтобы учащийся
                                    открывал материал только при желании с ним ознакомиться.


                                    Я описал систему для книг по разным начальным высшим математикам (матан, алгебра, комплан), которые даются на первых курсах фактически школьникам, когда последние слабо понимают, что происходит вокруг, и зачем всё это вообще нужно. Было бы круто сделать такие учебники в open-source.

                                      +1

                                      Для меня пока эталонная книга это Lucjan Piela IDEAS OF QUANTUM CHEMISTRY. Автор пишет настолько эмоционально и заразительно, что не полюбить его предмет просто невозможно. Там кстати тоже много вкладок с биографиями, причем, обязательно указываются интересные, а то и забавные аспекты жизней именитых людей, а также иллюстрации, выводы формул, исторические факты, а карта КХ представлена древом познания



                                      А если брать во внимание повсеместную игрофикацию, то идеальный учебник это юпитерский блокнот или вообще, сайт — с анимациями, видео-роликами, кнопочками, ползунками, ссылками, спойлерами и всеми прочими радостями

                                        0

                                        Согласен про юпитер-ноутбук, как раз собираюсь в ближайшие месяцы сделать одну главу учебника про питон. Единственное, что мне ещё хотелось бы дать возможность людям делать заметки в своих ноутбуках, чтобы эти заметки были заметны.

                                      +1
                                      Со времён университета пишу в Texmaker. Кроссплатформенное «установил и работает» решение.
                                        +3
                                        автор похоже 9 лет пребывал в анабиозе, пока писал свою «книгу». Лет так 25 назад я подрабатывал в издательстве УРСС (urss.ru), где как раз редактировал книжки в латехе. Ещё немного и автор узнает о существования линупса, редактора какого нибудь получше (страшно сказать: vim/emacs) и появится ещё одна заметка, как написать скриптец для сборки книжки в латехе.

                                        А почти 20 лет назад я и диссер в латехе писал, где отлично всё работало и шрифты, и ГОСТЫ, и картинки, и даже автореферат легко сложился.

                                        как считать хирш — это вообще отдельная история и книжки туда легко попадают, если это скажем гугл сколар. Кроме того, есть книги, которые выпускают большие издательства а ля Эльсивер. Такие книги попадают в промежуточный статус между книгой и публикацией.

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

                                        тяжело читать технические находки автора, которые перемежаются какими то его воспоминаниями о том, какие все кругом плохие, а автор — Дартаньян. Всё было бы значительнее удобнее, если все яркие примеры были показаны: как было, как стало и разобраны на насколько уровней, как то: сокращения, окружения, картинки, стили и тд.
                                        Если сама книга написана в таком же стиле — у меня печальные новости.

                                        Аналогия с тропинкой через лес смешная, правда в контексте сломаного (сворованного) винедита, должна звучать как: я спёр немного кабеля и знаю неприметную тропику через чащу, чтобы не спалиться.
                                          +1

                                          Справедливо замечание, у меня было такое же ощущение. Я не думаю, что люди, работающие в LaTeX, найдут для себя что-то новое.

                                            0
                                            Ну… Идеальных статей не существует, а Латех безбрежен. Что-то новое найти можно всегда. Есть же куча пакетов, разной степени удобства и совместимости между собой, увы — есть глюки этих пакетов, и это всё требует изучения. Можно не изучать, а остановиться на том что знаешь, но потом вот кто-нибудь скажет — да вы в анабиозе, батенька, пролежали видать.
                                              +1

                                              Скажите, пожалуйста, нашли ли вы для себя что-то новое в этой статье? На мой взгляд и мой опыт, содержимое статьи либо относится к условному hello world мира LaTeX, типа геометрии страниц, либо (по моему оценоночному суждению!) к bad practice типа макросов для замены стандартных окружений.

                                                0
                                                Вот это:
                                                вместо C$_2$H$_5$OH я пишу C\2H\5OH
                                                я не знал, что можно делать макросы для цифр.
                                                Также рассматриваю другие макросы и смотрю что можно взять себе на вооружение. У меня вот сделан файл со всякой векторной алгеброй.
                                                Насчет bad practice… ну спорно — по-моему первое же, что хочется сделать это заменить \begin{equation} на \be, хотя в общем не особо актуально например в TexMaker — можно выбрать из меню.
                                                В далеком детстве мне Си понравился большей компактностью чем Паскаль ). {} вместо begin/end.
                                                  +1

                                                  По поводу bad practice — это всё удобно до тех пор, пока не окажется, что ваш соавтор у себя переопределил \be для enumerate, например.
                                                  В моём редакторе это решается созданием пользовательских хоткеев: Я нажимаю shift+F1 и в текст в месте курсора вставляется \begin{equation} \label{eq:} \end{equation} со всеми отсутпами и форматированием.

                                                    0
                                                    Именно! Редактировать чужой текст, в котором полно переопределенных команд — просто ад, врагу не пожелаешь. Автор-то помнит все эти \be, а тебе каждый раз пытаться разобраться. Короче, для любой серьезной работы только макросы в IDE и хоткеи, иначе bad practice становится помехой и себе и всем вокруг.
                                                  +1
                                                  Да. Я услышал очень радостную для себя мысль, и вот какую.

                                                  Сначала были плохие бумажные книги. Потом люди научились делать превосходные бумажные книги. Теперь латех позволяет нам имитировать превосходные бумажные книги в виде PDF файлов. Но при этом мы остаёмся на всё том же уровне бумажных книг с их страницами.

                                                  Пора делать следующий шаг и переходить к системе, которая позволяет не только давать поток текста. Не только имитировать белую страницу и символы на ней.

                                                  Латех — как система семантической вёрстки — подталкивает к тому, чтобы разумно размечать текст и разумно обрабатывать его, сохраняя все эргономические достоинства бумажных книг. И каждый раз, когда я замечаю эту мысль у других людей, я весьма радуюсь.
                                                    +1

                                                    Я раза три перечитал, но так и не уверен, что понял.
                                                    Свиток это свиток, книга это книга, а текст (поток информации) это текст (поток информации). LaTeX это инструмент для превращения текста в вёрстку для физического носителя, в этом качестве он и существует до сих пор. Если изначально отказываться от физического носителя, то зачем LaTeX? Ничего, кроме устоявшегося языка набора формул, от него, наверное, и не нужно. Как только вы уходите от физического носителя в виде бумаги определенного размера, вы можете свой текст оформлять в достаточно произвольном виде, вас практически ничего не ограничевает. Часто выбирают html с MathJax, но есть и другие решения.
                                                    Есть хорошие примеры преноса книг/учебников в формат wiki. К чисто цифровым форматам я бы отнес, например, виртуальные лаборатории для студентов, сочетающие текст, видео, интерактивные эксперменты, инструменты оценки знаний и обратной связи. Здесь же наверное и всякие интерактивные блокноты Python/Julia/Matlab/Wolfram, позволяющие выполнять и модифицировать код по ходу чтения.
                                                    Но всё это многократно пережёвано и обсуждено всеми заинтересоваными лицами, регулярно проводятся семинары и круглые столы. Что тут нового или интересного?

                                                      +1
                                                      В первых строках я напишу откровение. Нет, я не верстаю формул. Я не работаю с формулами. Я работаю с научными текстами, в которых нет математики.

                                                      Латех позволяет делать текст очень удобным для чтения. Позволяет размечать его так, чтобы его было удобно читать и воспринимать. Позволяет применить к тексту все те эргономические находки, которые создало типографическое искусство за много веков — сноски автора, сноски редактора, сноски комментаторов, различные указатели, множественные библиографии, маргиналии, буквицы, заставки, микротипографику, висячую пунктуацию, двуязычный текст и многое другое. Латех собрал в себе громадный запас тонкостей и приёмов, которые упрощают работу с книгой.

                                                      К сожалению, на этом его достоинства и заканчиваются. Он по-прежнему пародирует бумажную книгу, то есть остаётся на уровне XII века.

                                                      Удобная книга — это не html (в котором нельзя сделать нумерованный список с кириллическими пунктами, нельзя сделать микротипографику, нельзя сделать половинные пробелы, нельзя сделать библиографию, нельзя сделать витую скобку на пять строк).

                                                      На каких семинарах говорят о книге, которая сделана не для чтения, а для работы? О книге, которая позволяет анализировать текст? О книге, которая позволяет собрать ключевые слова из трёх томов и сделать вывод о том, как менялась позиция автора на протяжении тридцати лет? О книге, которая умеет приближать и удалять иллюстрации, меняя их детальность?

                                                      Прошу вас, подскажите мне эти семинары и круглые столы.

                                                      Большое спасибо.
                                                        +1
                                                        1. Не уверен, что понимаю, что вы имеете ввиду под книгой. Такое ощущение, что у вас книга не равно бумажная книга. Для меня книга это то, что может быть издано в форме бумажной книги, даже если сейчас оно находтся в виде pdf. Это как раз область LaTeX. Если вы про что-то другое, то мне, к сожалению, не удалось вас понять.
                                                        2. Я говорю про те семинары и кргулые столы, где обсуждают современные цифровые способы предоставления информации, ориентированные, главным образом, на преподавание. Не про книги в традиционном понимании этого слова. В силу моей профессии — на преподавание stEm.
                                                        3. Вот так с наскоку, я бы прдеположил, что собрать ключевые слова позволяет система поиска по тексту (мы же про оцифрованные тексты говорим).
                                                        4. Менять детализацию на графиках позволяют, например, интерактивные блокноты Python/Julia/Matlab/Wolfram. Но если исходные данные — пережатый jpg, то не позволяют.

                                                        Мне соврешенно не понятно, что вы понимаете под книгой? Идёт ли речь о носителе, о содержании, о представлении?

                                                0

                                                Ненене, я вот смотрю код автора и хмыкаю себе о том, что «о, надо это попробовать».

                                                  0

                                                  О! Так это отлично тогда.

                                              +1
                                              Добрый день! Поправьте, пожалуйста:
                                              «Потренеруйтесь переставить, корректно расставив знаки препинания, инициалы и фамилию, например, у господ H. Ford III и W. S. Stoner Jr.»
                                              За статью — спасибо! Даже недолгое погружение в науку набора текста уже полезно, а знакомство с книгой, сверстанной по всем принципам, полезно вдвойне.
                                                +2

                                                Я могу себя отнести к несколько более молодому поколению пользователей latex и в противопоставление автору могу сказать что lualatex/polyglossia/biblatex формируют вполне хорошее рабочее окружение с UTF-8 и любыми TTF шрифтами. Реализация biblatex-gost заслуживает отдельного внимания.


                                                P.s. несколько пугает обилие макросов на переопределение окружений.

                                                  0
                                                  Я диссертацию набирал с теплом, ламповом TEXе (буква Х произносится, кстати, по-русски!) в 90е годы. Размером шрифтов там не было проблем, он менялся одной командой (magnification — если меня память не подвела, а книга по ТЕХу мне сейчас недоступна) без подключения пакетов, хоть 18.42 pt. Это пригодилось, когда надо было подогнать автореферат под максимальный размер.
                                                  И жуткого ГОСТа на список литературы тогда не было.
                                                    0
                                                    Еще можно в VS Code работать, с расширением Latex Workshop.
                                                      0
                                                      Я, во-первых, терпеть не могу эти модные попытки упростить мой компьютер до интерфейса к программам, расположенным у них в Интернете, a во-вторых, каким надо быть креативным, чтобы привязать стиль статей к каким-то глубоко запрятанными настройками моего компилятора?

                                                      Меняйте стиль журнала (cp), меняйте стиль издательства (revtex4-2), но зачем делать их зависящими от компилятора?!

                                                      Вероятно, вы не обновляли пакеты все 9 лет написания книги. Я тоже не обновлял, пока писал свою работу (точнее, обновлял до первой серьёзной проблемы на ровном месте), но вины издательства тут особой не видно :}

                                                        0
                                                        Я был бы счастлив ничего не менять 9 лет. К сожалению, приходится менять, и довольно часто. MikTex у меня от 24.09.2019, не такой уж и старый. Так что глюк на стороне издательства. А может это и не глюк, а умысел. Загнать пользователь в он-лайн сервисы — современный тренд. Программисты это понимают и могут делать подножки специально. А могут и без умысла. Просто они оттачивают свой Интернет-сервис, а как там будет работать на компе у пользователя, их волнует во вторую очередь.
                                                          0
                                                          MikTex у меня от 24.09.2019, не такой уж и старый

                                                          Сейчас есть версия версия 20.7, т.е. 24.09.2019 устарел примерно (версии точно от 24.09.2019 нет) на 10 релизов. Если у вас один miktex устарел так сильно, то что насчет всех остальных пакетов? Их около сотни может быть. И, я так понимаю, вы там на винде без пакетного менеджера все это вручную (не) обновляете?


                                                          Так что это не злой тренд, а банальная усталось вот с таким вот бороться.

                                                            0
                                                            Я использую miktex 2.8 (Version 3.1415926-1.40.10), то есть версию 2011 года.

                                                            Зачем надо обновлять латех?

                                                            Спасибо.
                                                              +1

                                                              Это прекрасно, продолжайте использовать, никаких проблем само по себе это не создает.


                                                              Ситуация, которая обсуждается — это когда издательство ожидает, что вы компилируете с определенным набором версий библиотек (которая у издательства), а вы компилируете с другим.


                                                              Из-за этой проблемы указанное издательство сделало онлайн-сервис для компиляции (хотя могло альтернативно указать все версии всех пакетов, или предоставить docker-контейнер), из-за чего автор несправедливо (по моему мнению) негодует.

                                                                0
                                                                Теперь разобрался, понятно, спасибо.
                                                              +1
                                                              И, я так понимаю, вы там на винде без пакетного менеджера все это вручную (не) обновляете?

                                                              Справочно, у miktex в винде есть пакетный менеджер.

                                                                +1
                                                                Последний раз когда я пытался ЭТИМ пользоваться, половина пакетов не устанавливалась. Overleaf ван лав.
                                                                  0

                                                                  только что сходил и обновил пакеты, пока нормально. :)
                                                                  У overleaf, на вкус моих фломастеров, неудобный редактор. Мне кажется излишним, что при редактировании plain text мне надо работать через браузер, да ещё и свои хоткеи не настроить. Впрочем, у меня есть знакомые, для которых знакомство с LaTeX началось с overleaf, им норм.
                                                                  Это не считая станартных аргументов против тонкого клиента о хранении моих текстов на каких-то чужих серверах и работе офлайн.

                                                                    0
                                                                    У Overleaf можно делать синхронизацию с гитхабом и дропбоксом. Так что для совместной работы это прямо хорошо: хочешь, работаешь в браузере, хочешь — в любимом IDE.
                                                                      +1

                                                                      Так и работаем — я у себя, коллеги, кто хочет, в overleaf, комиты на гитхаб. Но тут у overleaf нет никаких преимуществ для совместной работы по сравнению с любым другим редактором.

                                                                        0
                                                                        Есть комментарии, и это в целом довольно удобно для редактуры и вычитки, чтобы не писать в коде. Иногда (в зависимости от стиля кода) история в нем удобнее, чем в IDE/гите.
                                                          +1

                                                          Спасибо за статью, очень интересно! Я хотел бы поделиться ссылкой на страницу, которую написал мой бывший коллега о микротипографике в латехе (кернинг, висячие символы и т.п.): http://www.khirevich.com/latex/microtype/. Возможно, вы все это используете. С микротипографикой верстка становится действительно почти неотличима от работы профессиональных издательств.

                                                            0
                                                            Спасибо большое за ваш комментарий, он для меня самый ценный из всех. И, конечно, передайте от меня большое спасибо Сергею Хиревичу, создавшего очень полезное описание своей диссертации. Мы с ним похожи во всем, включая любимый софт.
                                                            0
                                                            Вопрос автору. А как вы победили проблемы при обтекание картинок текстом?
                                                            Я пытался разместить на странице автореферата четыре картинки — две справа, две слева — картинка под спойлером, используя wrapfigure, но у меня всё расползалось. Пришлось автореферат делать в Wordе, что как-то не канонично.
                                                            размещение картинок

                                                              0
                                                              Здравствуйте, спасибо за статью! Будучи студентом, когда я писал разные РГЗ и курсовики в Word всегда задавался вопросом, что я пишу формулу в редакторе формул, но не могу по ней в этом же редакторе произвести расчет т.е. формулу приходится вбивать два раза — первый в ворде для проверяющего, второй в некой вычислительной системе. А что может предложить LaTeX на этот случай?
                                                                0
                                                                Здравствуйте. Я не знаток Word и противник обновления программ, поэтому работаю в Word 2003 с кучей надстроек. Одна из них MathType. Очень надеюсь, что её можно встроить и в более поздние версии Word. Поэтому мой путь может быть не лучшим.
                                                                Работая в Word, я набираю сложные формулы по правилам Латеха. Потом копирую их, куда надо. Потом подменю MathType -> Toggle MathType/TeX и латеховская формула становится родной для Вёрда. Есть и другие способы работы с MathType.
                                                                  0
                                                                  Ох! Не надо MathType.
                                                                  В Word 2007 с формулами всё очень хорошо! Там совершенно новый редактор формул.
                                                                  docplayer.ru/52231382-Word-2007-dlya-matematika.html
                                                                  В маленькой статье/книге Баландина «WORD 2007 ДЛЯ МАТЕМАТИКА» всё расписано.
                                                                    0
                                                                    К сожалению, когда я закончил университет в 2005 еще не было Word 2007)
                                                                      0
                                                                      В Ворде 2018, кстати, отлично работает распознавание рукописного ввода в редакторе формул. Причём даже каракули мышкой вполне себе получаются, как-то ради интереса попробовал. В комбинации с простеньким графическим планшетом должно быть совсем приятно.
                                                                        0
                                                                        Прикольно, не знал. Спасибо!
                                                                          0

                                                                          Есть такая штука Mathpix — переводит скрин на латех и ворд тоже на днях добавили. Что радует, ему можно скормить и скан рукописей

                                                                            0
                                                                            Что-то он у меня капризничает — зарегился, поставил… Ctrl-Alt-M — предлагает создать эккаунт, хотя я уже это сделал.
                                                                        0
                                                                        Про MathType знаю — замечательная вещь для своего времени. Но мне интересно именно единый редактор для ввода текста, формул и расчетов по ним. Например нашел опечатку, исправил и все сразу пересчиталось прямо в текстовом редакторе, или вдруг поступили новые исходные данные
                                                                          0

                                                                          Вам нужно тогда какой-нибудь символьный солвер сдружить с латех, что-то типа такого, ну или SymPy посмотреть — думаю его догадались с латехом сдружить

                                                                            0
                                                                            Ну вообще Wolfram Mathematica можно на это дело навострить, типа такого или такого.
                                                                            0

                                                                            У меня MathType 6. Там есть прекрасная функция экспорта формул в Latex. У меня часть статей написана в Word, часть в Tex, и эта функция здорово помогает.

                                                                            +1

                                                                            Latex может строить графики из математических выражений, как пример можно привести пакет Tikz. Можно пользоваться внешними инструментами такими как GNUPlot встраивая в свой процесс разработки или добавляя как бекэнд для существующих пакетов.


                                                                            Однако строить красивые формулы и сразу же их вычислять latex я как знаю не может.
                                                                            Можно придумать извращения в lualatex используя lua и систему макросов для того чтобы что-то такое сделать, но это скорее всего будет в топе хаба ненормальное программирование.


                                                                            Написать хоть как-то красиво и потом посчитать может PTC MathCAD и Jupiter Notebook. Но они далеко не претендуют на типографский формат документа.

                                                                            0
                                                                            Я, разумеется, понимаю, что в Латехе пишет ничтожное количество людей. Как правило, математики и физики, да и то далеко не все.

                                                                            Знаю кучу фирм у которых в латехе пишется документация. Ну ок, не кучу, а всего десяток, но с другой стороны я в принципе не то чтобы 100500 фирм изнутри видел. Но в любом случае программисты тоже пишут в латехе :)
                                                                              +1
                                                                              Знаю кучу фирм у которых в латехе пишется документация.

                                                                              Мне кажется таких исчезающе мало. Сейчас наверное стандарт де-факто для документации выглядит как то так:
                                                                              Markdown -> Pandoc -> все остальное
                                                                                0

                                                                                Может "региональные особенности", но у нас что в универе все на латехе сидели, что сейчас куча фирм им пользуется.

                                                                              0
                                                                              Кстати, а что по поводу книжки Ельяшевича скажете? Нам в свое время по ней читали семестровый курс спектроскопии, и она нам очень нравилась.
                                                                                +1

                                                                                "В индексе Хирша книги вообще не учитываются."


                                                                                Не все так печально. Тут все как с журналами — публикуйтесь у хорошего издателя, который озаботился о добавлении своих книг в базы, и все будет учтено. Писать книги для прокачки хирша как раз имеет смысл, поскольку они хорошо цитируются.

                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    +1
                                                                                    Спасибо за статью, жду вторую часть! Периодически приходится работать с латехом, все-таки со временем пришло понимание, что лучше один раз настроить латех, чем 100500 раз поправить что-то в ворде)
                                                                                      –2
                                                                                      Может я чего-то не понимаю, но по-моему лучше писать книги в InDesign, и потратить время на адаптацию добавления математических формул в InDesign.
                                                                                        0

                                                                                        Вообще нет.
                                                                                        Индезайн бесспорно хорош и делать в нем книги хорошо, но вот научные тексты — нет, совсем нет.
                                                                                        Затраты на верстку будут очень большими.
                                                                                        Все эти TeX и LaTeX специально создавались чтобы такие тексты удобно "просто писать" отдавая верстку программе. И она справляется на отлично в большинстве случаев.
                                                                                        В меньшинстве случаев приходится искать решения в документации.
                                                                                        Просто представьте как, например, сверстать трехязыкий словарь Indesign.

                                                                                          0
                                                                                          Вы просто не умеете пользоваться Indesign-ом, в нём прекрасно верстаются формульные издания, просто надо уметь его «готовить» (скриптами втягивать eps-сы формул, которые готовятся в правильном редакторе формул или купить пакет от movemen для втягивания формул из Word непосредственно в вёрстку).
                                                                                            +2

                                                                                            Что-ж вполне может быть.
                                                                                            Действительно мой опыт общения с этим продуктом маловат да и устарел весьма.
                                                                                            Никогда не ставил себе цели использовать Indesign для верстки книг с формулами. Буклеты и брошюры мой потолок.
                                                                                            Но в LaTeX сотоварищи все эти формулы вшиты изначально и существуют наравне с любым другим видом верстки.
                                                                                            Нет нужды в "специальной" конфигурации в большинстве случаев.
                                                                                            Ну или я предвзят.

                                                                                              0
                                                                                              В индизайне, несомненно, можно делать всё то же, что и в техе, скриптинг в индизайне тем более открывает очень много возможностей, но это вопрос как трудозатрат, так и личного опыта конкретного пользователя (впрочем, это работает почти так же и в обратную сторону). Ну и вопрос денег, конечно.
                                                                                            0
                                                                                            Книги очень разные случаются и под конкретные задачи бывает удобно использовать и латех и индизайн. При условии, что владеешь и тем и тем.
                                                                                            +1
                                                                                            Уважаемый автор, хочу сильно вас покритиковать.
                                                                                            Для начала изучите Гиленсона, который «правила набора текста» написал. Там книга небольшая, но очень полезная, вам она нужна для того, чтобы понимать, что ваша «вёрстка» — «это вырви глаз» и полная «нечитабельность» текста.
                                                                                            Вот вам ваш пример с разбором того, что тут сделано не правильно:
                                                                                            image

                                                                                            Далее, у вас все формулы в «разнобой» набраны:
                                                                                            image
                                                                                            Вы в следующий раз обратитесь к профи, издательства ведь не просто так существуют, просто помните работа автора — это где-то 20—25% от затрачиваемого труда для производства любой книги. А когда автор остался в прошлом, да ещё понятия не имеет зачем нужна профессия «верстальщик-дизайнер», то его книги не будут редактировать так, как нужно. Ваш пример очень показателен: вы понятия не имеете зачем используются шрифтовые и цветовые выделения текста, вы понятия не имеете, как сейчас производится набор и вёрстка формульных изданий и чем эти самые формульные издания отличаются от обычных книжно-журнальных.
                                                                                            Да и, книгу вашу редактор в издательстве даже не открывал и не смотрел, просто выгнали в CMYK да скинули на цифровую печатную машину в виде пдф-ки (навряд ли у вас тираж более 500 шт.)
                                                                                              0
                                                                                              «Почему во всех формулах разная ширина пробела?»
                                                                                              Отвечаю. Посмотрите исходный код. Он написан по всем правилам Латеха (впрочем нет, Вы правы в том, что в формуле 0< КА<1 стандарт нарушен, здесь я не прав). Поэтому Ваши претензии надо адресовать к создателям Теха Дональду Кнуту и Лесли Лампорту. Идея Латеха, которую я уже упомянул:
                                                                                              Латех лучше, легче и красивее форматирует текст, чем любой другой редактор. Что он как-бы говорит автору: «Отойди в сторонку, ты все равно ничего не понимаешь в оформлении текста, дай поработать профессионалу».
                                                                                              Вам не нравится дизайн Латеха? А Вы знаете альтернативу? У меня есть выбор?

                                                                                              И для сведения: Латех является стандартом в американских физических и математических журналах последние 35 лет. Я прежде всего имею ввиду AIP (Американское физическое общество). Я думаю, что это самое значительное издательство планеты текстов по физике за последние 60 лет.
                                                                                              Это не значит, что текст у меня на компьютере и конечный текст в журнале одинаковы — они разные. Но не очень. Главное различие — у издательства больше выбор шрифтов. А вот расположение текста в строке и на странице — совпадают. Так что указанные Вами недостатки, возможно, являются американскими стандартами научных текстов по физике.

                                                                                              "… вы понятия не имеете, как сейчас производится набор и вёрстка формульных изданий и чем эти самые формульные издания отличаются от обычных книжно-журнальных...."
                                                                                              Ну да, не имею. Конечно. Просто процитирую самого себя:

                                                                                              В процессе написания своего учебника я перебрал громадное количество иностранных книг и учебников, и пришел к выводу, что самые лучшие учебники в моей области написаны Аткинсом (P. W. Atkins) из Оксфорда с разными соавторами. См., например, «Molecular Quantum Mechanics » (2005). Есть ещё очень хорошие книги Демтрёдера (W. Demtroder, «Laser spectroscopy: basic concepts and instrumentation», 2003; Electrodynamics and Optics ", 2019; ...)

                                                                                              Что интересно у Демтрёдера — он благодарит специальную службу, которая помогла ему оформить книгу в Латехе. В Германии такая служба есть, а в России — нет.

                                                                                              Причем эти книги являются лучшими не столько по содержанию, сколько по оформлению. Невооруженным глазом видно, что все они сделаны в Латехе с активным использованием пакета TikZ. В результате у меня сложилось чувство, что связка Латех--TikZ — наилучший способ создать книгу, оформленную на лучшем мировом уровне.


                                                                                              А вот дизайн моих рисунков — да, это мое дело. Я не утверждаю, что они идеально нарисованы.

                                                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                              Самое читаемое