2009-09-07 3 views
5

\ newenvironment로 정의 된 사용자 정의 테이블 환경이 있습니다. 나는이 환경에서 캡션을 가지고 있지만, 결국 그것을 갖고 싶다. 이 같은 (약간 단순화 된)LaTeX을 사용하여 표의 끝 부분에 캡션이있는 자체 정의 된 테이블 환경을 만드는 방법은 무엇입니까?

내 환경 외모 : 이런 내가 마지막에 자막을 넣을

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

:

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

하지만 그건 작동하지 않습니다, 때문에 환경의 끝에서 매개 변수를 사용할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

4

캡션 및 레이블 매개 변수를 저장하고 나중에 사용하는 것이 좋습니다. (또한, \ 레이블은 \ 캡션 이후에 나타납니다.)

는 이 같은

뭔가 작업을해야합니다 :

\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}% 
} 

사용과 같은 환경 :

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

을 나는 이것을 테스트하지 않았습니다 암호.

+0

고마워요. 그러나 \ gdef가 작동하지 않는다는 것이 밝혀졌습니다. 대신 \ renewcommand를 사용했고 원하는대로 모든 작업을 수행했습니다. 고맙습니다. – Mnementh

+0

아, 나는 그것을 망쳤다. gdef 명령을 둘러싼 중괄호는 없어야합니다. \ gdef \ templabel {# 1} \ gdef \ tempcaption {# 2} 죄송합니다. 그게 내 코드를 먼저 테스트하지 않은 것입니다. – godbyk

+0

센터 환경 대신'\ centering'을 사용하십시오. 후자는 불필요한 추가 수직 공간을 추가합니다. –

-2

새로운 환경 대신 잘라 내기 및 붙여 넣기를 사용 하시겠습니까? 나는 fairy 특정 \ newenv입니다. 그 방식으로 사용하기위한 것이 아닙니다. 이것의 요점은 무엇입니까? 매번 타이핑하지 않으시겠습니까?

+2

항상 입력하지 마십시오. 한 번에 전체 책에 걸쳐 표의 모양을 변경하려면. 모든 테이블에서 똑같은 스타일을 유지하는 것. DRY의 전형적인 이유. 환경을 정의 할 때 또는 새로운 명령이 무엇인지 물어볼 수 있습니다. – Mnementh

+0

글쎄, 새로운 환경을 정의하는 요점은 테이블이나 그림으로 계산되는 대신 자체 카운터를 가질 수 있기 때문입니다.하지만 이것은 상당히 무의미한 것으로 보입니다. – Mica

관련 문제