Discussion:
Szerokie tabele
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Wojciech 'Wheart' Penar
2012-02-10 22:32:08 UTC
Permalink
Witam,
Z gorliwością godną neofity usiłuję co się da robić w LaTeXu, teraz
padło na dokumentację sieci komputerowej.
Generalnie jest tabelka, kolumn 24, wierszy parzyście w zależności
jakie pola są włączane (oczywiście .tex generowany jest przez skrypty
z bazy danych). Od biedy mieści się toto w ustawieniu "pejzaż" na
papierze A3.

Chciałbym uzyskać efekt znany z arkuszy kalkulacyjnych - w pewnym
momencie wszystkie tabelki na stronie się urywają i są kontynuowane na
następnej (zatem równiutko obcinam na gilotynie, smaruję klejem
i sklejam sobie wielką płachtę do powieszenia na drzwiach do biura).
Idealnie by było ustawić stałą szerokość kolumn (to potrafię) i wymusić
łamanie w tym właśnie miejscu (tak, wiem, chwila zabawy w AWKu i da się
to zrobić, ale ja chcę "łatwiej" :)

Do tej pory używałem któregoś z arkuszy kalkulacyjnych, ale w nim
trzymałem także dane. Teraz padło na przechowywanie w bazie
i "aplikację www" do edycji i wirtualnych oględzin. Importowanie
danych z bazy do arkusza jest nieporęczne przy przejściu z bazy danych
- eksport do csv, import csv (tłumacząc, ze numerki to nie stan konta,
a numerki z kreskami to nie daty) do arkusza, a następnie formatowanie
(wytłuszczenie numerów portów, obramowania, ewentualne kolorowanki).

Czego szukać?

Pozdrawiam
Wojtek Penar
Jarosław Sokołowski
2012-02-10 23:25:29 UTC
Permalink
Pan Wojciech 'Wheart' Penar z gorliwością godną neofity usiłuję co się da
teraz padło na dokumentację sieci komputerowej.
Generalnie jest tabelka, kolumn 24, wierszy parzyście w zależności
jakie pola są włączane (oczywiście .tex generowany jest przez skrypty
z bazy danych). Od biedy mieści się toto w ustawieniu "pejzaż" na
papierze A3.
Chciałbym uzyskać efekt znany z arkuszy kalkulacyjnych - w pewnym
momencie wszystkie tabelki na stronie się urywają i są kontynuowane na
następnej (zatem równiutko obcinam na gilotynie, smaruję klejem
i sklejam sobie wielką płachtę do powieszenia na drzwiach do biura).
Idealnie by było ustawić stałą szerokość kolumn (to potrafię) i wymusić
łamanie w tym właśnie miejscu (tak, wiem, chwila zabawy w AWKu i da się
to zrobić, ale ja chcę "łatwiej" :)
Do tej pory używałem któregoś z arkuszy kalkulacyjnych, ale w nim
trzymałem także dane. Teraz padło na przechowywanie w bazie
i "aplikację www" do edycji i wirtualnych oględzin. Importowanie
danych z bazy do arkusza jest nieporęczne przy przejściu z bazy danych
- eksport do csv, import csv (tłumacząc, ze numerki to nie stan konta,
a numerki z kreskami to nie daty) do arkusza, a następnie formatowanie
(wytłuszczenie numerów portów, obramowania, ewentualne kolorowanki).
Czego szukać?
Jest jakiś pakiet LaTeXowy dzielący tabele na strony. Można szukać
właśnie jego. Ale może lepiej, zwałaszcza w sytuacji gdy plik jest
generowany przez skrypty, odpuścić sobie LaTeXowe tabele i robić to
Knuthowymi metodami, jako osobne wiersze. Szkic rozwiązania może
wyglądac tak (definicje pomocnicze):

\def\Lc#1#2{\hbox to #1{\strut~#2\hss\vrule}}
\def\Rc#1#2{\hbox to #1{\strut\hss#2~\vrule}}
\def\Cc#1#2{\hbox to #1{\strut\hss#2\hss\vrule}}

\def\LN#1{\setbox0\hbox{\vrule#1}
{\hrule width \wd0\penalty10000\noindent\copy0\hrule width
\wd0\vskip-0.4pt}}


A później skrypt generuje każdy wiersz jako wywołanie \LN{.....}
gdzie w miejsce kropek są komórki opisane wywołaniami w rodzaju
\Lc{8mm}{Abc}\Cc{10mm}{0}\Rc{12mm}{Xyz}, czyli:

\LN{\Lc{8mm}{Abc}\Cc{10mm}{0}\Rc{12mm}{Xyz}}
\LN{\Lc{8mm}{Abc}\Cc{10mm}{0}\Rc{12mm}{Xyz}}
\LN{\Lc{8mm}{Abc}\Cc{10mm}{0}\Rc{12mm}{Xyz}}
\LN{\Lc{8mm}{Abc}\Cc{10mm}{0}\Rc{12mm}{Xyz}}


Taka konstrukcja wygląda jak tabela, ale łamie się na strony jak tekst.
--
Jarek
Wojciech 'Wheart' Penar
2012-02-11 11:46:28 UTC
Permalink
Post by Jarosław Sokołowski
Jest jakiś pakiet LaTeXowy dzielący tabele na strony. Można szukać
właśnie jego. Ale może lepiej, zwałaszcza w sytuacji gdy plik jest
generowany przez skrypty, odpuścić sobie LaTeXowe tabele i robić to
Knuthowymi metodami, jako osobne wiersze. Szkic rozwiązania [...]
Chyba nie do końca się jasno wyraziłem.
Wiersze są (dajmy na to) 4, kolumn 24. Ilość wierszy może się wahać od
2 (nagłówkowy i etykieta) po kilkanaście (wielorzędowa krosownica, poza
etykietami dodatkowe informacje o rodzaju kabla, z czym to połączyć
itp).
Aby się jakoś próbować zmieścić z tradycyjną tabelą, przestawiam papier
na A3 i obracam tabelkę (pakiet lscape).
Chciałbym drukować to na A4 na kilku kartkach, tak, by sobie posklejać
tabelkę "po szerokości".

Tutaj szybki przykład, "o co mnie właściwie chodzi":

-------------------------------------------------
\documentclass{article}
\usepackage{fullpage}
\usepackage{lscape}
\usepackage[a3paper, margin=.5cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}

\begin{document}

\begin{landscape}
\begin{table}
\centering
\begin{tabular}{|c|c|c|c||c|c|c|c||c|c|c|c||c|c|c|c||c|c|c|c||c|c|c|c|}
\hline
\textbf{1} & \textbf{2} & \textbf{3} & \textbf{4} & \textbf{5} &
\textbf{6} &
\textbf{7} & \textbf{8} & \textbf{9} & \textbf{10} & \textbf{11} &
\textbf{12} &
\textbf{13} & \textbf{14} & \textbf{15} & \textbf{16} & \textbf{17} &
\textbf{18} & \textbf{19} & \textbf{20} & \textbf{21} & \textbf{22} &
\textbf{23} & \textbf{24} \\
\hline
104-01 & 104-02 & 104-03 & 104-04 & 104-05 & 104-06 & 104-07 & 104-08 &
104-09 &
104-10 & 104-11 & 104-12 & 104-13 & 104-14 & 104-15 & 104-16 & & & &
& & &
07 & 010 \\
\hline
\textbf{25} & \textbf{26} & \textbf{27} & \textbf{28} & \textbf{29} &
\textbf{30} & \textbf{31} & \textbf{32} & \textbf{33} & \textbf{34} &
\textbf{35} & \textbf{36} & \textbf{37} & \textbf{38} & \textbf{39} &
\textbf{40} & \textbf{41} & \textbf{42} & \textbf{43} & \textbf{44} &
\textbf{45} & \textbf{46} & \textbf{47} & \textbf{48} \\
\hline
103-01 & 103-02 & 103-03 & 103-04 & 103-05 & 103-06 & 103-07 & 103-08 &
103-09 &
103-10 & 103-11 & 103-12 & 103-13 & 103-14 & 103-15 & 103-16 & 103-17 &
& & &
Dziek & 327-1 & 327-2 & 327-3 \\
\hline
\end{tabular}
\end{table}
\end{landscape}

\end{document}
-------------------------------------------------

W tej konfiguracji mieści się toto na A3, szerokość kolumn póki co
"z automatu" - tam gdzie są puste podpisy - są węższe.
W sumie, rzeczywiście, jeśli się nie uda lepiej, przetransponuję
tabelę, ale do tej pory tak robione obrazki były wygodne i poręczne
(w przeciwieństwie do list jakimi się posługiwałem początkowo).
Patrząc na tabelkę, interesujący mnie obiekt ma podobne relacje
przestrzenne do całości jak na rzeczywistej krosownicy czy przełączniku,
stąd np. podwójne obramowania między niektórymi komórkami tabeli - co
cztery porty jest niewielka przerwa.

Chciałbym, zrobić sobie np. 3 takie tabelki na stronie tak, by urywały
się po 12 kolumnie i od 13 kolumny były kontynuowane na następnej. Tak,
bym obciął jeden margines i mógł to skleić.

Jeśli coś takiego uda się się osiągnąć, to więcej szczęścia w tym
temacie dałoby mi posiadanie narzędzia, które zachowa relacje potrzebne
do sklejania, nawet jeśli między "szerokimi" tabelami znajdzie się
jedna krótsza... W sumie to potrafią arkusze kalkulacyjne, ale z pracą
wsadową jest już różnie, o automatycznym wygenerowaniu dokumentacji
gotowej do pobrania z serwera można zapomnieć.

Pozdrawiam
Wojtek
Jarosław Sokołowski
2012-02-11 14:38:29 UTC
Permalink
Post by Wojciech 'Wheart' Penar
Post by Jarosław Sokołowski
Jest jakiś pakiet LaTeXowy dzielący tabele na strony. Można szukać
właśnie jego. Ale może lepiej, zwałaszcza w sytuacji gdy plik jest
generowany przez skrypty, odpuścić sobie LaTeXowe tabele i robić to
Knuthowymi metodami, jako osobne wiersze. Szkic rozwiązania [...]
Chyba nie do końca się jasno wyraziłem.
Albo ja źle zrozumiałem. Jeśli chodzi o to, że skład jest szerszy niż
dostępny papier w drukarce, to radzić można sobie rozmaicie.

1. Zupełnie nieTeXowo, czyli uniwersalnie. Programy wyświetlające PDF
potrafią przy wydruku podzielic stronę na kilka kartek, które potem
sie skleja.

2. Podobnie jak powyżej, tylko na niskim poziomie TeXa -- zmieniając
przy kolejnych wydrukach \hoffest.

3. Znów podobnie, ale zaprzęgając do tego TeXowe \output (routine) --
wtedy TeX sam wyprowadzi kilka kartek, jeśli będzie trzeba. To jest
technika wyrafinowana, wymagająca głębokiej wiedzy. Ale może jest
do tego jakiś styl LaTeXa (ja bym szukał po słowie "poster").

4. Jak dane lecą z bazy, to składać kilka tabel z przeznaczeniem do
ustawienia ich obok siebie. Z mechanizmem LaTeXowym może byc trudno,
ale stosując przedstawioną wcześniej metodę z pudełkami, nie jest
problemem zaprogramować to tak, by linie i komórki na siebie trafiały.
--
Jarek
Paweł Rumian
2012-02-14 09:23:08 UTC
Permalink
Jak zawsze chylę czoła przed umiejętnościami współpiszącego w tym
wątku, ale nieśmiało zasugeruję że możesz ewentualnie poszukać pakietu
longtable i może uda się nie uciekać do czystego TeXa.

pozdrawiam,
Paweł
Paweł Rumian
2012-02-14 09:36:52 UTC
Permalink
Można zignorować powyższego posta - myślałem o podziale tabel na strony
a potem uświadomiłem sobie że to nie o to chodziło...

Loading...