2009-09-07 10 views
5

Mam niestandardowe środowisko tabel zdefiniowane przy użyciu \ newenvironment. Mam podpis w tym środowisku, ale chcę go mieć na końcu.Jak stworzyć samookreślone środowisko tabeli z podpisem na końcu tabeli przy pomocy LaTeX?

Moje wygląda środowiska (nieco uproszczone) jak to:

\newenvironment{mytable}[2]{\begin{table}[hbtp]\caption{#1}\label{#1}\begin{center}\begin{tabular}{#2}}{\end{tabular}\end{center}\end{table}} 

chcę umieścić podpis na końcu, tak:

\newenvironment{mytable}[2]{\begin{table}[hbtp]\label{#1}\begin{center}\begin{tabular}{#2}}{\caption{#1}\end{tabular}\end{center}\end{table}} 

Ale to nie działa, ponieważ Nie mogę używać parametrów na końcu środowiska. Jak mogę rozwiązać ten problem?

Odpowiedz

4

Będziesz chciał przechowywać parametry napisów i etykiet i używać ich później. (Również \ label powinien pojawić się po \ podpisie).

Coś jak to powinno działać:

\newcommand{\templabel}{}% stores the label 
\newcommand{\tempcaption}{}% stores the caption 

\newenvironment{mytable}[3]{% 
    \gdef\templabel{#1}% store the label so we can use it later 
    \gdef\tempcaption{#2}% store the caption so we can use it later 
    \begin{table}[hbtp]% 
    \begin{center}% 
     \begin{tabular}{#3}% 
}{% 
     \caption{\tempcaption}% use the stored caption 
     \label{\templabel}% use the stored label (*after* the caption) 
     \end{tabular}% 
    \end{center}% 
    \end{table}% 
} 

korzystanie ze środowiska tak:

\begin{mytable}{tab:example}{This is the caption for my example table.}{cc} 
    Row 1 & First \\ 
    Row 2 & Second \\ 
    Row 3 & Third \\ 
\end{mytable} 

Nie testowałem tego kod.

+0

Wielkie dzięki. Okazało się jednak, że \ gdef nie działa. Zamiast tego użyłem \ renewcommand i wszystkie działają tak, jak chcę. Dziękuję Ci. – Mnementh

+0

Ah, zawaliłem to. Nie można znaleźć nawiasów wokół polecenia gdef: \ gdef \ templabel {# 1} \ gdef \ tempcaption {# 2} Przepraszamy. To właśnie dostaję za nie testowanie mojego kodu. – godbyk

+0

Użyj '\ centering' zamiast środowiska centrum. Ten ostatni dodaje w niepotrzebnej dodatkowej pionowej przestrzeni. –

-2

używać wycinania i wklejania zamiast nowego środowiska? Jestem wróżka pewna \ newenv. nie ma być używany w ten sposób. Jaki jest sens tego? nie wpisywać wszystkiego za każdym razem?

+2

Aby nie wpisywać go cały czas. Aby zmienić wygląd tabel na całą książkę w jednym przebiegu. Aby mieć wyraźnie taki sam styl na wszystkich stołach. Typowe przyczyny suszy. Możesz zapytać, o co w ogóle chodzi w definiowaniu środowisk lub nowych poleceń. – Mnementh

+0

Cóż, punktem definiowania nowego środowiska jest to, że ma własne liczniki, zamiast być liczone jako tabela lub figura ... ale wydaje się to dość bezcelowe. – Mica