2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 07:23 
У меня не получается легко верстать сложные таблицы в ЛаТеХе: полнейший геморой:
Особенно если места мало, да ещё надо объединять ячейки по вертикали и по горизонтали.

Если места мало: строки налезают на соседние ячейки. Если по вертикали объединять (пакет multirow), то вообще никакого переноса строк нет и в помине...

В общем подскажите пожалуйста какие-нибудь удобные пакеты для этого. Ну или хотя-бы как вставить рисунок, но чтобы подпись была вверху, как у таблицы, и при ссылке на него, ссылалась по номеру таблицы.

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 08:20 
Аватара пользователя
AK347 в сообщении #626720 писал(а):
У меня не получается легко верстать сложные таблицы в ЛаТеХе:
Ну никто и не обещал лёкгости.
AK347 в сообщении #626720 писал(а):
полнейший геморой:
Но и не полнейший это геморрой, главное понять и разобраться.
AK347 в сообщении #626720 писал(а):
Если места мало: строки налезают на соседние ячейки.
\LaTeX действительно не делает переносов слов в 1-ом абзаце в узких колонках, но это можно поправить, если вначале добавить \hspace{0pt}:
\begin{tabular}{|p{15mm}|}
\hline
Характеристики \\
\hline
\end{tabular}\quad\quad\quad
\begin{tabular}{|p{15mm}|}
\hline
\hspace{0pt}Характеристики \\
\hline
\end{tabular}
AK347 в сообщении #626720 писал(а):
Если по вертикали объединять (пакет multirow), то вообще никакого переноса строк нет и в помине...
Переносы строк вообще-то есть, так что в чём-то другом у Вас проблема. Вот попробуйте пример из Гуссен, Миттельбах, Самарин - Путеводитель по пакету \LaTeX
Используется синтаксис LaTeX
\begin{tabular}{|*{4}{l|}}
\hline
\multirow{4}{14mm}{Текст в колонке 1} & C2a & \multirow{4}{14mm}{Текст в колонке 3} & C4a \\
& C2b & & C4b \\
& C2c & & C4c \\
& C2d & & C4d \\
\hline
\end{tabular}
(возможно где-то не поставили "\&")
Приведите Ваш пример, где наблюдаются проблемы.
AK347 в сообщении #626720 писал(а):
В общем подскажите пожалуйста какие-нибудь удобные пакеты для этого.
Пакеты все те же самые: tabularx, multirow, longtable, array, delarray, dcolumn, hhline.
AK347 в сообщении #626720 писал(а):
Ну или хотя-бы как вставить рисунок, но чтобы подпись была вверху, как у таблицы, и при ссылке на него, ссылалась по номеру таблицы.
Не совсем понятно, что означает фраза "при ссылке на него, ссылалась по номеру таблицы" - при чём здесь номер таблицы, если мы рисунок вставляем, как ссылка на рисунок будет ссылаться на таблицу?

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 08:26 
AK347 в сообщении #626720 писал(а):
но чтобы подпись была вверху
\begin{table}\caption{Заголовок таблицы}\label{tab:main}\centering\fbox{Таблица}\end{table}

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 08:55 
Цитата:
(возможно где-то не поставили "\&")
Приведите Ваш пример, где наблюдаются проблемы.


Затрудняюсь привести этот пример прямо сейчас.

Цитата:
но это можно поправить, если вначале добавить \hspace{0pt}


Костыли...

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 09:12 
Аватара пользователя
AK347 в сообщении #626734 писал(а):
Затрудняюсь привести этот пример прямо сейчас.
Ну тогда о чём речь? Вы утверждаете в общем (без примеров), что у Вас не получается. Я почему-то уверен, что именно проблема с "\&". Когда я приводил пример с \multirow, то забыл там тоже пару [maht]\&[/math] поставить, и в итоге тоже одна колонка залезла на другую.
AK347 в сообщении #626734 писал(а):
Костыли...
Не очень согласен, что это костыль. Алгоритм вёрстки (и таблиц в том числе) \LaTeX'ом не прост, но вполне понятен и в итоге становится ясным некоторые "костыли". Тем более данный "костыль" при переносе слов, а не строк.
Советую почитать книгу Д. Э. Кнута Всё про \TeX.

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 14:50 
Цитата:
Ну тогда о чём речь? Вы утверждаете в общем (без примеров), что у Вас не получается.


Да, не очень корректно с моей стороны то, что я не привожу пример, но файл тот я стёр. И проблемы там совсем не такие, как если бы там не хватало <<&>>, как вы это написали. Я воспроизведу ситуацию и покажу пример.

Касательно метода:

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

Какой метод был бы лучше:
Что-то написать в преамбуле, чтобы перенос корректно работал везде, или подключить какой-л. пакет, который бы решал данную проблему.

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 18:44 
Аватара пользователя
chessar
А существует в LaTeX возможность, аналогичная Microsoft Word, сделать таблицу с переносами в нескольких столбцах, чтобы ширины этих столбцов подбирались автоматически с учётом количества текста в них?

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 20:00 
Аватара пользователя
Munin в сообщении #626947 писал(а):
А существует в LaTeX возможность, аналогичная Microsoft Word, сделать таблицу с переносами в нескольких столбцах, чтобы ширины этих столбцов подбирались автоматически с учётом количества текста в них?
Эта та "возможность" когда у таблицы в Microsoft Word выбирается "выровнять ширину столбцов"? Тогда очевидно, что и в \LaTeX такая есть. А так вообще вопрос не очень корректен - невозможно подбирать ширину каждого столбца с текстом (в котором есть переносы) "с учётом количества текста в них". Не хватает дополнительного условия, например, чтобы высота текста в каждой из колонок была примерно одинаковой, или еще что-нибудь.

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 20:54 
Аватара пользователя
chessar в сообщении #626969 писал(а):
Тогда очевидно, что и в LaTeX такая есть.

Мне не надо "теорему о существовании", мне надо конкретный пример :-) Пока я читал только о таких возможностях, в которых это было нереализуемо.

chessar в сообщении #626969 писал(а):
А так вообще вопрос не очень корректен - невозможно подбирать ширину каждого столбца с текстом (в котором есть переносы) "с учётом количества текста в них". Не хватает дополнительного условия, например, чтобы высота текста в каждой из колонок была примерно одинаковой, или еще что-нибудь.

Это и есть "с учётом". Просто это не единственный вариант, и может быть точно не достижим, поэтому я назвал это более общим словом.

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 21:32 
Аватара пользователя
Munin в сообщении #626998 писал(а):
Мне не надо "теорему о существовании", мне надо конкретный пример :-)
Т.е. нужен пример аналогичный возможности Microsoft Word "выровнять ширину столбцов"? Если так, то эта возможность в Microsoft делает все колонки одинаковой ширины и в каждой из колонок текст переносится нужным образом. Я думаю Вы и сами прекрасно знаете как это сделать в \LaTeX:
Используется синтаксис LaTeX
\begin{tabularx}{\textwidth}{|*{5}{X|}}
\hline
Бла бла бла бла бла бла бла &
Бла бла бла бла бла бла бла бла бла бла &
Бла бла бла бла бла  &
Бла бла бла бла бла бла бла бла бла &
Бла бла бла бла бла бла бла \\
\hline
\end{tabularx}

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 22:15 
Аватара пользователя
chessar в сообщении #627019 писал(а):
Если так, то эта возможность в Microsoft делает все колонки одинаковой ширины и в каждой из колонок текст переносится нужным образом.

Нет, кроме "все колонки одинаковой ширины", там есть режим "автоподбор по содержимому". Я про него.

И я не знал про X. Где про него почитать, что он делает? Во Львовском только p.

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 22:18 
Аватара пользователя
AK347 в сообщении #626880 писал(а):
Метод понятен, но плох (не в том плане, что он не работает, а в том, что он увеличит работу, которую мне надо сделать). Лучше было бы если бы не нужно было писать ничего лишнего, и получать норм. результат. Для этого мне Латех и нужен...
По поводу переносов. Я неточно написал. Точнее так - \LaTeX не делает переносов в 1-ом слове абзаца:
\begin{tabular}{|p{15mm}|}
\hline
Характеристики \\
\hline
\end{tabular}\quad\quad\quad
\begin{tabular}{|p{15mm}|}
\hline
\hspace{0pt}Характеристики \\
\hline
\end{tabular}
\begin{tabular}{|p{15mm}|}
\hline
Характеристики Характеристики \\
\hline
\end{tabular}
Как это единожды поправить, не используя \hspace{0pt}, я сказать не могу (возможно пока).
AK347 в сообщении #626880 писал(а):
Какой метод был бы лучше:
Что-то написать в преамбуле, чтобы перенос корректно работал везде, или подключить какой-л. пакет, который бы решал данную проблему.
Оба хороши.

-- Чт окт 04, 2012 23:29:49 --

Munin в сообщении #627042 писал(а):
И я не знал про X. Где про него почитать, что он делает? Во Львовском только p.
Пакет tabularx. Котельников И. А., Чеботаев П. З. \LaTeX по-русски (стр. 298). Гуссенс М., Миттельбах Ф., Самарин А. Путеводитель по пакету \LaTeX и его расширению \LaTeXe (стр. 133).
Munin в сообщении #627042 писал(а):
там есть режим "автоподбор по содержимому".
К сожалению я не знаю как это работает у Microsoft (в том плане какой алгоритм там и чисто визуально, что должно получиться), поэтому и не могу представить, что нужно сделать в \LaTeX для этого. Хотя может и догадываюсь. И учитывая, что есть такой пакет tabularx со спецификацией колонок X, возможно и есть способ сделать также.

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение08.10.2012, 07:45 
Проверил ваш способ с ашспэйс...

Отчего-то он не работает с мультиколонкой (там не переносит). Вот код таблицы:
Код:
\begin{table}[h]
\caption{Исходные величины на схеме на рис.~\ref{scheme}~а.}
\label{tab:usl}
\begin{center}
%\renewcommand*{\arraystretch}{1.2}
\begin{tabularx}{\textwidth}{|*{16}{X|}}
   \hline
   \multicolumn{3}{|c|}{\hspace{0pt}Индуктивность, мГн}&
   \multicolumn{3}{c|}{\hspace{0pt}Ёмкость, мкФ}&
   \multicolumn{3}{c|}{\hspace{0pt}Сопротивление, Ом}&
   \hspace{0pt}Частота, Гц&
   \multicolumn{3}{c|}{\hspace{0pt}Амплитуда i-го ЭДС ($E_{mi}$), В и его фаза ($\psi_i$), ${}^\circ$}\\
   \hline
   $L_1.$&$L_2.$&$L_3.$&   $C_1.$&$C_2.$&$C_3.$&   $R_1.$&$R_2.$&$R_3.$&
   $\nu$&   $E_{m1}.$&$\psi_1.$&   $E_{m2}.$&$\psi_2.$&   $E_{m3}.$&$\psi_3.$\\
   \hline
   ---&---&63,5&         25&---&100&            ---&65&---&
   100&   141&-15&            ---&---&            282&-335\\
   \hline
\end{tabularx}
\end{center}
\end{table}


В преамбулу внести \usepackage{tabularx}.

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

Как заставить его и с мультиколонкой работать?

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение08.10.2012, 11:29 
Аватара пользователя
chessar в сообщении #627043 писал(а):
Пакет tabularx.

Спасибо.

 
 
 
 Re: Лёгкая вёрстка таблиц.
Сообщение08.10.2012, 15:33 
Аватара пользователя
AK347 в сообщении #628230 писал(а):
Как заставить его и с мультиколонкой работать?
К сожалению сейчас нет под рукой \LaTeX, вечером попробую.
Munin в сообщении #628276 писал(а):
Спасибо.
Пожалуйста. Вот по-поводу
Munin в сообщении #627042 писал(а):
"автоподбор по содержимому"
есть такой пакет tabulary. Вроде бы он как раз для этого (?) Сам я им никогда не пользовался, да и документацию еще не изучал особо, а только бегло глянул и увидел на 4-ой странице доков по ссылке примеры.

Еще хотел добавить по теме в общем. Есть довольно интересный и свежий пакет spreadtab, "эмулирующий" в некоторой степени табличные процессоры наподобие Microsoft Excel и OpenOffice.org Calc.

 
 
 [ Сообщений: 25 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group