Выравнивание в LaTeX (Добавляет перед выравниваемым абзацем строку :()

Модератор: /dev/random

Ответить
vipermagi
Сообщения: 83
ОС: AgiliaLinux

Выравнивание в LaTeX

Сообщение vipermagi »

При использовании любого выравнивания(flushleft, center, flushright), между предыдущим абзацем и выравниваемым добавляется лишнее расстояние, равное примерно одной пустой строке. Как это можно вылечить?
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Выравнивание в LaTeX

Сообщение Hephaestus »

Если я ничего не путаю, окружения
flushleft
flushright
center
создают новый абзац.

Если это нежелательно, нужно использовать декларации
\raggedleft
\raggedright
\centering

А вообще, книг и статей по LaTeX полно, в том числе и свободно распространяемых. На русском языке.
Читайте. Там все уже давно расписано. А пересказывать их здесь вряд ли кто-то будет, ибо незачем.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
vipermagi
Сообщения: 83
ОС: AgiliaLinux

Re: Выравнивание в LaTeX

Сообщение vipermagi »

fflatx писал(а):
04.02.2011 08:46
Если я ничего не путаю, окружения
flushleft
flushright
center
создают новый абзац.

Если это нежелательно, нужно использовать декларации
\raggedleft
\raggedright
\centering


А у меня и так новый абзац. Я выравниваю не \\ а следующий абзац. Если не делать ему выравнивание, то расстояние между абзацами равно расстоянию между строками внутри каждого абзаца, визуально по крайней мере. А \raggedleft не понятно как использовать {\raggedleft paragraph} эффекта не даёт, а \raggedleft paragraph \raggedright убирает у всего последующего текста абзацные отступы.

fflatx писал(а):
04.02.2011 08:46
А вообще, книг и статей по LaTeX полно, в том числе и свободно распространяемых. На русском языке.
Читайте. Там все уже давно расписано. А пересказывать их здесь вряд ли кто-то будет, ибо незачем.

Не расписано, а коротко написано. И не во всех, а все читать времени нету. llang.pdf, это, кажется, Львовский, не содержит информации об выравнивании в абзацах. В lurs.pdf "LaTeX в России", Е.М. Балдин, этого тоже нету. Сколько же мне литературы нужно перелопатить, чтобы найти такую, казалось бы обыкновенную вещь?
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Выравнивание в LaTeX

Сообщение Hephaestus »

vipermagi писал(а):
04.02.2011 13:11
Не расписано, а коротко написано. И не во всех, а все читать времени нету. llang.pdf, это, кажется, Львовский, не содержит информации об выравнивании в абзацах. В lurs.pdf "LaTeX в России", Е.М. Балдин, этого тоже нету. Сколько же мне литературы нужно перелопатить, чтобы найти такую, казалось бы обыкновенную вещь?

У Котельникова и Чеботаева точно есть. И у кого-то еще видел, сразу не вспомню.
Я верстал диплом в LaTeX, а это порядка сотни страниц с таблицами, формулами и определенными требованиями нормоконтроля (что не всегда по ГОСТ).
Так вот, мне на все, про все хватило этой книги (Чеботаева). Другие источники смотрел так, по мелочи, если нужно было что-то нестандартное сделать (например, таблицу). Ну и еще заглядывал в блог "Записки дебианщика", там тоже есть материал. Так что, ничего я особенно не лопатил, обходился, в основном, одной книгой.

Цитата из Чеботаева
(Котельников, Чеботаев. На правах цитирования) писал(а):Процедуры позиционирования работают, используя определённые декларации, которые изменяют способ форматирования абзацев, причём имена соответствующих деклараций и процедур совпадают. Например, процедуре center соответствует декларация \center. Она, как и одноимённая процедура, вставляет вертикальный пробел, как перед началом абзаца. Однако иногда такой пробел не желателен. На этот случай припасены декларации \centering, \raggedright и \raggedleft.

Соответствие деклараций и процедур устанавливает следующая таблица:
процедура: center flushleft flushright
декларация: \center \flushleft \flushright
декларация: \centering \raggedright \raggedleft


\raggedright - выравнивает влево, т.е. создает невыровненный ("рваный") правый край
\raggedleft - выравнивает вправо, т.е. создает невыровненный ("рваный") левый край

любая из этих деклараций ставится один раз в конце абзаца, действие декларации ограничивается командными скобками.

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

ЗЫ: LaTeX - инструмент сложный, требует понимания механизмов его работы. С налету его не возьмешь.
Посему, если уж он нужен, то наберитесь терпения, вооружитесь книжками и вперед.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Контактная информация:

Re: Выравнивание в LaTeX

Сообщение eddy »

vipermagi писал(а):
04.02.2011 13:11
{\raggedleft paragraph} эффекта не даёт,

Вы забыли пустую строку в конце группы:

Код: Выделить всё

{\raggedleft какой-то текст

}

Действие \ragged[left|right] включается лишь при обнаружении окончания абзаца.
"Убить" лишнее расстояние можно при помощи \vspace*. Например, картинки я вставляю при помощи окружения pict, описанного так:

Код: Выделить всё

\newenvironment{pict}%
        {\begin{figure}[h]\vspace*{-6pt}\begin{center}\noindent}{\end{center}\vspace*{-18pt}\end{figure}}

Кстати, у меня при \ragged[left|right] никаких вертикальных промежутков не добавляется:

Код: Выделить всё

абзац

{\raggedright
второй

}

третий

четвертый

превращается в
Вложения
2011.02.04_14_03_29.jpg
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Выравнивание в LaTeX

Сообщение Hephaestus »

eddy писал(а):
04.02.2011 14:06
Кстати, у меня при \ragged[left|right] никаких вертикальных промежутков не добавляется:
Конечно, не добавляется. Потому о нем и говорим.
ТС жаловался на flush[left|right]. Там добавляется. Чтобы не добавлялось, надо \ragged[left|right]

eddy писал(а):
04.02.2011 14:06
"Убить" лишнее расстояние можно при помощи \vspace*.
Эх... Помню, я в свое время пытался \vspace поставить вертикальный отступ в начале страницы.
Нужно было точно 20см.
Но... То ли я не осилил, то ли LaTeX как-то по своему пересчитывал, но получалось все что угодно, кроме того, что мне нужно.
Пришлось подгонять. :)
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
vipermagi
Сообщения: 83
ОС: AgiliaLinux

Re: Выравнивание в LaTeX

Сообщение vipermagi »

eddy писал(а):
04.02.2011 14:06
vipermagi писал(а):
04.02.2011 13:11
{\raggedleft paragraph} эффекта не даёт,

Вы забыли пустую строку в конце группы:

Код: Выделить всё

{\raggedleft какой-то текст

}

Действие \ragged[left|right] включается лишь при обнаружении окончания абзаца.

Ну вот ни в жизни бы не догадался об этом костыле, Благодарствую. Этот бы момент не помешало бы во всех книгах по латеху описать.

eddy писал(а):
04.02.2011 14:06
Кстати, у меня при \ragged[left|right] никаких вертикальных промежутков не добавляется:

Код: Выделить всё

абзац

{\raggedright
второй

}

третий

четвертый

превращается в

У меня тоже не добавляется.

Всем спасибо, проблема решена.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Контактная информация:

Re: Выравнивание в LaTeX

Сообщение eddy »

vipermagi писал(а):
04.02.2011 15:16
Этот бы момент не помешало бы во всех книгах по латеху описать.

У Львовского этот момент очень четко оговаривается. Читайте внимательнее.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Контактная информация:

Re: Выравнивание в LaTeX

Сообщение eddy »

Кстати, если бы вы посмотрели на определение \flushright, то поняли бы, почему добавляется вертикальная отбивка:

Код: Выделить всё

\def\flushright{\trivlist \raggedleft\item\relax}

А в \trivlist'е вверху вставляется \topsep. Если она вам не нужна, достаточно где-нибудь в начале (или в преамбуле после всех определений) написать

Код: Выделить всё

\topsep=0mm



// если вам непонятно, откуда "вылезает" какая-то проблема в латеховской команде, потратьте пару минут на просмотр ее исходника.

fflatx писал(а):
04.02.2011 14:48
Эх... Помню, я в свое время пытался \vspace поставить вертикальный отступ в начале страницы.
Нужно было точно 20см.

Достаточно было использовать команду "со звездочкой", или же воспользоваться более "низкоуровневыми" теховскими командами для "клея".
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
vipermagi
Сообщения: 83
ОС: AgiliaLinux

Re: Выравнивание в LaTeX

Сообщение vipermagi »

eddy писал(а):
04.02.2011 16:04
vipermagi писал(а):
04.02.2011 15:16
Этот бы момент не помешало бы во всех книгах по латеху описать.

У Львовского этот момент очень четко оговаривается. Читайте внимательнее.

Может быть у вас какой-то другой львовский? В моём точно нету. У моего нет первой страницы с названием книги и автором, так что мне пришлось искать автора по имени файла. Короче поиск по "raged" и по "flush" ни чего не дал.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Контактная информация:

Re: Выравнивание в LaTeX

Сообщение eddy »

vipermagi писал(а):
04.02.2011 17:16
Может быть у вас какой-то другой львовский? В моём точно нету. У моего нет первой страницы с названием книги и автором, так что мне пришлось искать автора по имени файла. Короче поиск по "raged" и по "flush" ни чего не дал.

Страница 123, издание М.:МЦНМО, 2003. - 448с. (3-е изд., испр. и доп.)
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Выравнивание в LaTeX

Сообщение Hephaestus »

eddy писал(а):
04.02.2011 16:10
Достаточно было использовать команду "со звездочкой", или же воспользоваться более "низкоуровневыми" теховскими командами для "клея".
Суть в том, что отступ вставлялся, но не того размера.
Команду "со звездочкой" тоже пробовал. А разбираться с низкоуровневыми средствами не было времени. Поскольку задача была разовая, проще оказалось подогнать размер.

vipermagi писал(а):
04.02.2011 17:16
Может быть у вас какой-то другой львовский? В моём точно нету. У моего нет первой страницы с названием книги и автором, так что мне пришлось искать автора по имени файла. Короче поиск по "raged" и по "flush" ни чего не дал.


Львовский раздел 6.5 Абзацы без выравнивания и переносов (стр. 123).
Можно перевести TEX в режим, при котором он вообще не будет пы-
таться выравнивать текст по правому краю и не будет (почти никогда)
делать переносов. Для этого служит команда \raggedright. Ее можно
дать как в преамбуле, так и внутри документа; в любом случае, чтобы
она подействовала на абзац, необходимо, чтобы ее действие не прекра-
тилось до того, как TEX’ом будет прочтена пустая строка, завершающая
абзац...
А также см. раздел 7.2. Центрирование, выравнивание текста по краю (стр. 129).

eddy , опередил немножко :)
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
vipermagi
Сообщения: 83
ОС: AgiliaLinux

Re: Выравнивание в LaTeX

Сообщение vipermagi »

Чё-то я с ним затупил, там же вообще поиск не возможен.
Скачал 3-е издание, в нём есть текстовый слой.
Спасибо сказали:
Ответить