Ich möchte Tabelleninhalte(Zelleninhalte) mit einem Label versehen und diese an beliebiger Stelle im Text referenzieren. Dazu müssten als Wert des Labels "tablinecol" automatisch die konkreten Werte aus Tabellennummer, der Spaltennummer und der Zeilennummer erscheinen, in einer Form, die als Referenz abrufbar ist (z.B. \thetable.\thecol.\theline). Ansätze dazu sind in longtable vorhanden, aber wohl nicht in tabular. Hat jemand eine Idee?

Open in writeLaTeX
\documentclass{article}
    \usepackage[ngerman]{babel}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{longtable}
    \begin{document}
    Text Text Text Text Text Text Text Text Text Text Text Text Text 
    \begin{longtable}[l]{p{2cm}p{2cm}p{2cm}}\caption{First}\\
    Hauptzutat&Fleisch&Gemüse\\
    \\
    Kartoffeln&Frikadellen&Zwiebeln\\
    Kartoffeln&\label{tablinecol}Frikadellen&Rotkohl\\
    Kartoffeln&Bratwurst&Rotkohl\\
    \end{longtable}
    Wie in Tabelle \ref{tablinecol} erwähnt, sind Frikadellen die Fleischzutat.\\
    Text Text Text Text Text Text Text Text Text Text Text Text Text 
    \end{document}

gefragt 15 Mär '14, 18:21

ctansearch's gravatar image

ctansearch
(inaktiv)
Akzeptiert: 84%

bearbeitet 22 Mär '14, 17:14

esdd's gravatar image

esdd
14.2k53251


longtable macht einfach ein \refstepcounter{table} und darauf referenziert dein Label. Du musst einfach weitere \refstepcounter ausführen.

Open in writeLaTeX
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{longtable,array}
\newcounter{tabrow}
\newcounter{tabcol}
\renewcommand\thetabcol{\thetable.\thetabrow.\arabic{tabcol}}
\newcommand\inittable{\setcounter{tabcol}{0}%
                      \setcounter{tabrow}{0}} 
\newcommand\initrow{\setcounter{tabcol}{0}%
                    \refstepcounter{tabrow}%
                    \thetabrow~%zum sehen der Zeilennummer
                    }
\newcommand\countcol{\refstepcounter{tabcol}}                           
\begin{document}
Text Text Text Text Text Text Text Text Text Text Text Text Text

\inittable
\begin{longtable}[l]{>{\initrow\countcol}p{3cm}
                     >{\countcol}p{2cm}
                     >{\countcol}p{2cm}}
\caption{First}\\
Hauptzutat&Fleisch&Gemüse\\
\multicolumn{1}{c}{}\\
Kartoffeln&Frikadellen&Zwiebeln\\
Kartoffeln&\label{tablinecol}Frikadellen&Rotkohl\\
Kartoffeln&Bratwurst&Rotkohl\\
\end{longtable}
Wie in Tabelle \ref{tablinecol} erwähnt, sind Frikadellen die Fleischzutat.\\
Text Text Text Text Text Text Text Text Text Text Text Text Text
\end{document}

Natürllich musst du in \multicolumn selbst auf die korrekte Setzung des Zählers achten. Mit \multicolumn kannst du auch Zellen/Zeilen aus der Zählung rausnehmen. Das geht natürlich auch durch \addtocounter{..}{-1}. Und du musst entscheiden, wie der table-Zähler bei normalen Tabellen ohne \caption gesetzt werden soll.

Permanenter link

beantwortet 21 Mär '14, 05:07

Ulrike%20Fischer's gravatar image

Ulrike Fischer
2.2k13

bearbeitet 22 Mär '14, 17:12

esdd's gravatar image

esdd
14.2k53251

@Ulrike Fischer Sehr schön,danke

(21 Mär '14, 15:44) ctansearch

Aktualisiert 21.03.2014

Habe nun eine tabrefnote.sty erstellt, welche die Zählung der Spalten und Zeilen ermöglicht und die referenzierten Inhalte der Tabelle als Liste mit der Nummer der Anmerkung, der Zeilen - und Spaltennummer versieht. Die Referenzen werden als Liste (\thetabrefnotes[]) ausgegeben, die die Nummer der Anmerkung, die Zeilen und Spaltennummer in Klammern aufführt und den Inhalt anhängt. Falls sich jemand auf dieses Code-Monster einläßt: Die relevanten Zeilen der .sty-Datei sind mit %relevant gekennzeichnet. Soweit sogut. Der nächste Schritt wäre, die Anmerkungen nicht als Liste, sondern im Fließtext verfügbar zu machen und die \stepcounter-Anweisungen zu optimieren.

tabrefnote.sty

Open in writeLaTeX
  %       ****************************************
%       *              tabrefnotes  
%       ****************************************
%
%  Date of this version: 2014-03-19
%  Matthias Borck-Elsner
%
%% Based on endnotes.sty Copyright 2002 John Lavagnino
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.2
%% of this license or (at your option) any later version.
%% The lambe version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%%       ****************************************
%%       *       tabrefnote MACROS             *
%%       ****************************************

\newcounter{tabcols}%relevant
\newcounter{tabrows}%relevant
\@definecounter{tabrefnote}%
\newcommand{\trfl}{\\\stepcounter{tabrows}\setcounter{tabcols}{0}}
\def\thetabrefnote{\@arabic\c@tabrefnote}%
\def\@maketabrefmark{\hbox{{{\textsuperscript{\tiny(\@thetabrefmark)}}}}}%
\def\maketabrefmark{\@maketabrefmark}%
\def\thetabrefmark{\@thetabrefmark}%
\newdimen\tabrefnotesep%
\def\tabrefnote{\@ifnextchar[\@xtabrefnote{\stepcounter{tabrefnote}%
     \protected@xdef\@thetabrefmark{\thetabrefnote}%
     \@tabrefnotemark\@tabrefnotetext}}%
\def\@xtabrefnote[#1]{%
   \begingroup%
     \c@tabrefnote=#1\relax%
     \unrestored@protected@xdef\@thetabrefmark{\thetabrefnote}%
   \endgroup%
   \@tabrefnotemark\@tabrefnotetext}%
\let\@doantabrefnote=0%
\let\@endantabrefnote=0%
\newwrite\@tabrefnotes%
\newif\if@tabrefnotesopen\global\@tabrefnotesopenfalse%
\def\@opentabrefnotes{\immediate\openout\@tabrefnotes=\jobname.tabref\relax%
      \global\@tabrefnotesopentrue}%
\long\def\@tabrefnotetext#1{% %relevant #2 um tabcols heraufzusetzen
\stepcounter{tabcols}%
\if@tabrefnotesopen \else\@opentabrefnotes\fi%
\immediate\write\@tabrefnotes{\@doantabrefnote{(\@thetabrefmark)%
\thetable.\thetabrows.\thetabcols }}%%relevant zur Ausgabe der rows und cols
\begingroup%
\def\tabrefnote{#1\ }%
%%%%%%%%%%%%%%
%bezug definieren?
\xdef\test{\noexpand\textsl{test
    \thetable.\thetabrows.\thetabcols}\ }%relevant zur defintion des Bezugs
%bezug definieren?
%%%%%%%%%%%%%%%
\newlinechar='40%
\immediate\write\@tabrefnotes{\meaning\tabrefnote}%
\endgroup%
\immediate\write\@tabrefnotes{\@endantabrefnote}}%
\long\def\addtotabrefnotes#1{%
\if@tabrefenotesopen\else\@opentabrefnotes\fi%
\begingroup%
\newlinechar='40%
\let\protect\string%
\immediate\write\@tabrefnotes{#1}%
\endgroup}%
\def\tabrefnotemark{%
\@ifnextchar[\@xtabrefnotemark%
{\stepcounter{tabrefnote}%
\protected@xdef\@thetabrefmark{\thetabrefnote}%
\@tabrefnotemark}}%
\def\@xtabrefnotemark[#1]{%
\begingroup%
      \c@tabrefnote #1\relax%
      \unrestored@protected@xdef\@thetabrefmark{\thetabrefnote}%
   \endgroup%
   \@tabrefnotemark}%
%
\def\@tabrefnotemark{%
  \leavevmode%
  \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi%
  \maketabrefmark%
  \ifhmode\spacefactor\@x@sf\fi%
  \relax}%
%
\def\tabrefnotetext{%
     \@ifnextchar [\@xtabrefnotenext%
       {\protected@xdef\@thetabrefmark{\thetabrefnote}%
    \@tabrefnotetext}}%
%
\def\@xtabrefnotenext[#1]{\begingroup \c@tabrefnote=#1\relax%
   \xdef\@thetabrefmark{\thetabrefnote}\endgroup\@tabrefnotetext}%
%
\def\@xtabrefnotenext[#1]{%
  \begingroup%
     \c@tabrefnote=#1\relax%
     \unrestored@protected@xdef\@thetabrefmark{\thetabrefnote}%
  \endgroup%
  \@tabrefnotetext}%
\def\tabrefnotesname{tabrefnotes} %
\def\tabrefnoteheading{\subsection*{\footnotesize{\tabrefnotesname} \@mkboth{\MakeUppercase{\tabrefnotesname}}{\MakeUppercase{\tabrefnotesname}}}%
  }%
\def\tabrefnoteformat{%
  \leavevmode\llap{\maketabrefmark}}%%
\def\tabrefnotesize{\scriptsize}%%relevant für Größe der tabrefnote in \thetabrefnotes
\def\thetabrefnotes[#1]{\def\tabrefnotesname{#1}\immediate\closeout\@tabrefnotes \global\@tabrefnotesopenfalse%
  \begingroup%
    \makeatletter%
    \edef\@tempa{`\string >}%
    \ifnum\catcode\@tempa=12%
      \let\@ResetGT\relax%
    \else%
      \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
      \@makeother\>%
    \fi%
    \def\@doantabrefnote##1##2>{\def\@thetabrefmark{##1}\begingroup%
        \@ResetGT%
        \edef\@currentlabel{\csname p@tabrefnote\endcsname\@thetabrefmark}%
        \tabrefnoteformat}%
    \def\@endantabrefnote{\endgroup}%
     \tabrefnoteheading %
    \tabrefnotesize%
    \input{\jobname.tabref}%
    \setcounter{tabrefnote}{0} %
\setcounter{tabrows}{0} %
\setcounter{tabcols}{0} %
\endgroup}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

tabref.tex

Open in writeLaTeX
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx,longtable,tabrefnote}
\usepackage{xcolor}
\parindent=0pt
\begin{document}
\section{Dummy}
Ein Text vor dem Problem.
\section{longtable}
\begin{longtable}[l]{p{2cm}p{2cm}p{2cm}}\caption{First}\\
Zähler&Nenner&Bruch\trfl
1\tabrefnote{null}&2&$\frac{1}{2}$\trfl
1\tabrefnote{Atest}&2\tabrefnote{Btest}&$\frac{1}{2}$\tabrefnote{Ctest}\trfl
1\tabrefnote{Dtest}&2\tabrefnote{Etest}&$\frac{1}{2}$\tabrefnote{Ftest}\trfl
1&2&$\frac{1}{2}$\trfl
\thetabrefnotes[]
\end{longtable}
\begin{longtable}[l]{p{2cm}p{2cm}p{2cm}}\caption{First}\\
Zähler&Nenner&Bruch\trfl
1\tabrefnote{null}&2&$\frac{1}{2}$\trfl
1\tabrefnote{Atest}&2\tabrefnote{Btest}&$\frac{1}{2}$\tabrefnote{Ctest}\trfl
1\tabrefnote{Dtest}&2\tabrefnote{Etest}&$\frac{1}{2}$\tabrefnote{Ftest}\trfl
1&2&$\frac{1}{2}$\trfl
\thetabrefnotes[]
\end{longtable}
\section{Dummy}
Ein Text \test nach dem Problem.
\end{document}
Permanenter link

beantwortet 16 Mär '14, 20:47

ctansearch's gravatar image

ctansearch
(inaktiv)

bearbeitet 22 Mär '14, 06:46

esdd's gravatar image

esdd
14.2k53251

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×185
×31
×25

Frage gestellt: 15 Mär '14, 18:21

Frage wurde angeschaut: 3,157 Mal

Zuletzt aktualisiert: 22 Mär '14, 17:14