tabulky ASCII to *.tex

Hans Ginzel hans at matfyz.cz
Tue Oct 15 13:07:24 CEST 2002


> Zdravim,
>
> Chcel by som sa spytat ci neexistuje nejaka utilita na prevod dat v
> ASCII tabulke (oddelene medzerou, alebo tabulatorom) na LaTeX kod. Ide
> mi o to aby som nemusel dpoisovat vsetky "&" rucne. Caption si doplnim

    Ja jsem naopak rad, ze tam mam tabelatry a tabulka vypada zarovnane
i ve zdrojovem textu. Aby tomu (plain)TeX rozumel, vyskolim ho
nasledujicimy makry

\let\ea=\expandafter
\def\storeatcatcode{%
	\edef\restoreatcatcode{\catcode`\noexpand\@=\the\catcode`\@\noexpand\space}%
	\catcode`\@=\catcode`A }
\storeatcatcode

\message{table macros,}
\def\ampdelim{&}
\def\^^I{\omit\hfill}
\def\tabbequad   {\let\not at b=\quad \let\ist at b\not at b}
\def\tabsbequad  {\let\not at b=\quad \let\ist at b\relax}
\def\tabbedelim  {\let\not at b\ampdelim \let\ist at b\ampdelim}
\def\tabsbedelim {\let\not at b\ampdelim \let\ist at b\relax}
\def\tabbeignored{\let\not at b\relax \let\ist at b\relax}
\let\tabsbeignored=\tabbeignored
\def\ignoretabsdelim{\let\@st at b\ist at b \let\n at t@b\not at b
	\def\ist at b{\let\ist at b\@st at b \def\not at b{\let\not at b\n at t@b}}%
	\def\not at b{\let\ist at b\@st at b \let\not at b\n at t@b}\activetab}
\tabsbequad
\def\activetabs{\catcode`\^^I=\active}
\def\activetab{\futurelet\n at xt\whethertab}
{\activetabs
  \gdef\whethertab{\ifx \n at xt ^^I\ea \ist at b \else \ea \not at b \fi}
  \global\let^^I=\activetab
  \gdef\tilltab#1#2#3^^I{#1{#3}#2\activetab}
}
\restoreatcatcode

   Zalezi jestli jsou sloupce oddeleny prave jednim tabelatorem, nebo vice
tabelatory, aby tabulka vypadala zarovnane. Pak ale potrebujeme
nejak definovat prazdnou bunku -- pouzivam samotny backlash v bunce
tabulky, tj. vznikne sekvence \<TAB> (\^^I). Prvni pripad by sel
trivialne resit pouhym nastavenim kategorie:

	\catcode`\^^I=\catcode`\&

   Tabulka pak vypda:
{\par \let\par\cr \obeylines \activetabs \tabsbedelim%
 \halign{#\hfil& \quad \hfil #\cr
jablka			5
meloun			1
\			0
hroznové víno		2
}}

Odsazenim vznikne prazdny sloupec.
{\par \let\par\cr \obeylines \activetabs \tabsbedelim%
 \halign{#& #\hfil& \quad \hfil #\cr
	jablka			5
	meloun			1
	\			0
	hroznové víno		2
}}

{\par \let\par\cr \obeylines \activetabs \tabbedelim%
 \halign{#& #\hfil& \quad \hfil #\cr
	jablka	5
	meloun	1
	\		0
	hroznové víno	2
}}

\bye

				Hans Ginzel






More information about the csTeX mailing list