LINUX.ORG.RU
решено ФорумTalks

Заголовок таблицы в LaTeX


1

2

Уважаемые гуру, подскажите, можно ли в латехе (использую стиль scrreprt) сделать такое оформление заголовка:

                                Таблица 1
           Название таблицы
_________________________________________
|      |       |        |        |      |

Что-то по этому вопросу нагуглить ничего не получилось :(

★★★★★

Можно: объедините все ячейки в одну без оформления. Чтобы подпись была справа, придется немножко \@makecaption «подрихтовать».

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от static_lab

Вам нужно только название таблицы так оформить, или еще какой-то текст где-нибудь внутри таблицы без обрамления размещать?

Если только заголовок - достаточно переопределить по-своему \@makecaption. Например, чтобы заголовки таблиц/рисунков были по ГОСТу, можно сделать так:

\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1.~-- #2}%
  \ifdim \wd\@tempboxa >\hsize
    #1.~-- #2\par
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
А вам нужно что-то вроде
\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#2}%
  \hfill #1\par
  \ifdim \wd\@tempboxa >\hsize
    #2\par
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}

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

Да, это как раз то, что нужно. Спасибо. Речь шла только о размещении фрагмента «Таблица 1», как это принято у нас.

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

Пробовал уже, но происходит странный эффект: если расставлять принудительные переносы \newline, то правильно центруется только последняя строчка, а все остальные сдвинуты влево.

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

Странно, у меня и с \newline все центруется:

\makeatletter
\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#2}%
  \hfill #1\par
  \ifdim \wd\@tempboxa >\hsize
    \begin{center}#2\end{center}
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
\makeatother

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

Да вот это и странно. Вот мой тестовый пример:

\documentclass[a4paper, 14pt, headings=small, numbers=enddot]{scrreprt}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}

\makeatletter
\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#2}%
  \hfill #1\par
  \ifdim \wd\@tempboxa >\hsize
    \begin{center}#2\end{center}
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
\makeatother

\begin{document}

\begin{table}[h]
	\caption{Засветка неба ничтожно выслеживает астероидный болид,\newline и в этом вопросе достигнута такая точность расчетов}
	\begin{center}
		\begin{tabular}{|c|c|c|c|c|c|c|}
			\hline
			Группа & Первая & Вторая & Третья & Четвёртая & Пятая & Шестая \\
			I   &  1  &  1  &  1  &  1  &  1  &  1  \\
			II  &  2  &  2  &  2  &  2  &  2  &  2  \\
			III &  3  &  3  &  3  &  3  &  3  &  3  \\
			IV  &  4  &  4  &  4  &  4  &  4  &  4  \\
			V   &  5  &  5  &  5  &  5  &  5  &  5  \\
			\hline
		\end{tabular}
	\end{center}
\end{table}

\end{document}

Первая строчка заголовка сдвинута от центра влево.

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

Огромное спасибо за помощь. Похоже, не только scrreprt переопределяет \newline - у меня баг проявлялся и в «стандартных» report и article.

Решил проблему по-другому:

\newcommand{\tcaption}[1]{%
	\addtocounter{table}{1}
	\hfill\tableformat\par
	\centering{#1}\par
	}

Всё равно мне список таблиц не нужен. А фиксить \@makecaption для различного поведения в окружениях table и figure по-моему ещё сложнее. Но, что интересно, даже в этом случае \\ работает правильно (даже протектить не надо), а \newline снова косячит.

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