Books:Советы по вёрстке

Материал из ALT Linux Wiki
Версия от 12:15, 4 сентября 2008; KirillMaslinsky (обсуждение | вклад) (Новая: == Советы по вёрстке в LaTeX == '''Центровка иллюстраций''' <pre> > > Кстати, на будущее: не стоит использовать \c...)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Советы по вёрстке в LaTeX

Центровка иллюстраций

> > Кстати, на будущее: не стоит использовать \centerline{ }
> > внутри figure для центровки иллюстраций. В таких случаях
> > следует использовать декларацию \centering
> 
> Причины можно назвать? А то я весьма к \centerline{} привык :)

\centerline{} помещает материал в \hbox с клеем внутри(*), а \centering настраивает параметры абзаца на центрованную печать материала(**). Т.е. используя \centerline вы центруете только аргумент (причём туда нельзя поместить ничего, что не лезет в \hbox, например, абзац), а используя \centering -- центруете весь материал внутри данной группы. Применительно к иллюстрациям (внутри окружения figure) в общем случае требуется именно центрировать весь материал внутри окружения, поэтому уместнее использовать \centering. Кроме того, это позволит избежать ошибок, если \centerline окажется случайно не в отдельном абзаце, а к нему "прилипнет" какой-то другой материал.


Ниже выдержки из latex.ltx (стандартные LaTeX'овские определения):

(*)
    4811 \def\centerline#1{\@@line{\hss#1\hss}}

    4808 \def\@@line{\hb@xt@\hsize}

    557 \def\hb@xt@{\hbox to}

(**)
    3924 \def\centering{%
    3925   \let\\\@centercr
    3926   \rightskip\@flushglue\leftskip\@flushglue
    3927   \parindent\z@\parfillskip\z@skip}

    3917 \def\@centercr{\ifhmode \unskip\else \@nolnerr\fi
    3918        \par\@ifstar{\nobreak\@xcentercr}\@xcentercr}
    3919 \def\@xcentercr{\addvspace{-\parskip}\@ifnextchar
    3920     [\@icentercr\ignorespaces}
    3921 \def\@icentercr[#1]{\vskip #1\ignorespaces}

    833 \newskip\@flushglue \@flushglue = 0pt plus 1fil