2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 07:23 


01/05/12
21
У меня не получается легко верстать сложные таблицы в ЛаТеХе: полнейший геморой:
Особенно если места мало, да ещё надо объединять ячейки по вертикали и по горизонтали.

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

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

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 08:20 
Аватара пользователя


03/12/08
351
Букачача
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 


29/09/06
4552
AK347 в сообщении #626720 писал(а):
но чтобы подпись была вверху
\begin{table}\caption{Заголовок таблицы}\label{tab:main}\centering\fbox{Таблица}\end{table}

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 08:55 


01/05/12
21
Цитата:
(возможно где-то не поставили "\&")
Приведите Ваш пример, где наблюдаются проблемы.


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

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


Костыли...

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 09:12 
Аватара пользователя


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

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 14:50 


01/05/12
21
Цитата:
Ну тогда о чём речь? Вы утверждаете в общем (без примеров), что у Вас не получается.


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

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

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

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

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 18:44 
Заслуженный участник
Аватара пользователя


30/01/06
72407
chessar
А существует в LaTeX возможность, аналогичная Microsoft Word, сделать таблицу с переносами в нескольких столбцах, чтобы ширины этих столбцов подбирались автоматически с учётом количества текста в них?

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 20:00 
Аватара пользователя


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

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 20:54 
Заслуженный участник
Аватара пользователя


30/01/06
72407
chessar в сообщении #626969 писал(а):
Тогда очевидно, что и в LaTeX такая есть.

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

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

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

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 21:32 
Аватара пользователя


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

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 22:15 
Заслуженный участник
Аватара пользователя


30/01/06
72407
chessar в сообщении #627019 писал(а):
Если так, то эта возможность в Microsoft делает все колонки одинаковой ширины и в каждой из колонок текст переносится нужным образом.

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

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

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение04.10.2012, 22:18 
Аватара пользователя


03/12/08
351
Букачача
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 


01/05/12
21
Проверил ваш способ с ашспэйс...

Отчего-то он не работает с мультиколонкой (там не переносит). Вот код таблицы:
Код:
\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 
Заслуженный участник
Аватара пользователя


30/01/06
72407
chessar в сообщении #627043 писал(а):
Пакет tabularx.

Спасибо.

 Профиль  
                  
 
 Re: Лёгкая вёрстка таблиц.
Сообщение08.10.2012, 15:33 
Аватара пользователя


03/12/08
351
Букачача
AK347 в сообщении #628230 писал(а):
Как заставить его и с мультиколонкой работать?
К сожалению сейчас нет под рукой \LaTeX, вечером попробую.
Munin в сообщении #628276 писал(а):
Спасибо.
Пожалуйста. Вот по-поводу
Munin в сообщении #627042 писал(а):
"автоподбор по содержимому"
есть такой пакет tabulary. Вроде бы он как раз для этого (?) Сам я им никогда не пользовался, да и документацию еще не изучал особо, а только бегло глянул и увидел на 4-ой странице доков по ссылке примеры.

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group