2009-11-18 7 views
5

मैं लगातार तालिकाओं के लिए मेरी लेटेक्स दस्तावेज़ के लिए एक नए माहौल सेट कर रहा हूं नहीं मिल रहा है। यह इस तरह दिखता है:नई पर्यावरण, संकलक अंत

\newenvironment{defaultTable}[2] { 
    \begin{table}[h] 
    \noindent 
    \tabularx{\textwidth}{#1} 
    \specialrule{0.5pt}{10pt}{0pt} \rowcolor[gray]{.9} 
} { 
    \bottomrule 
    \endtabularx 
    \caption{#2} 
    \end{table} 
} 

यह \ अंत {TABLE} को खोजने के लिए हालांकि नहीं लगता है:

! LaTeX त्रुटि: \ end {document} द्वारा समाप्त इनपुट लाइन 23 पर \ start {table}।

क्या इससे बचने का कोई तरीका है?

उत्तर

3

साथ \begin{table} बदलें और \[email protected] साथ \end{table} बदलें।

\@float और \[email protected] फ्लोट पर्यावरण को शुरू करने और समाप्त करने के लिए लाटेक्स के आंतरिक आदेश हैं।

आप # 2 पैरामीटर पर एलेक्सी की सलाह का भी पालन करना चाहेंगे। इसे अपने पर्यावरण के पहले भाग में स्टोर करें (\gdef\mycaption{#2}) और उसके बाद इसे बाद में \caption{\mycaption} दूसरे भाग में याद रखें। लाइन से पहले \def\mycaption{\relax} रखो।

इसके अतिरिक्त, क्योंकि \@float और \[email protected], उन में @ संकेत है, तो इस कोड को अपने दस्तावेज़ फ़ाइल (जैसे कि के बजाय, एक .sty फ़ाइल) की प्रस्तावना में है, तो आप अपने \begin{defaultTable} और भी \makeatother से पहले \makeatletter डालना होगा \end{defaultTable} के बाद।

3

आप \newenvironment मैक्रोज़ के अंतिम तर्क में #2 का उपयोग नहीं कर सकते। आपको केवल दूसरे तर्क में # 1 .. # 9 का उपयोग करना चाहिए।

अपने #2 से \tempa (या किसी भी मैक्रोज़) को सहेजें। और कैप्शन में \tempa का उपयोग करें।

\newenvironment{defaultTable}[2]{ 
    \begin{table}[h] 
    \def\tempa{#2} 
    \noindent  
    \tabularx{\textwidth}{#1} \specialrule{0.5pt}{10pt}{0pt} \rowcolor[gray]{.9} 
}{  
\bottomrule  
\endtabularx  
\caption{\tempa} 
\end{table} 
} 
+0

Thx, यह समस्या का समाधान नहीं करता है, हालांकि, मैं अभी भी त्रुटि है कि \ {} तालिका शुरू \ अंत {document} द्वारा समाप्त हो गया है – arsenbonbon

+0

के पूर्ण संस्करण लिखें मिल अपने preambule के साथ फ़ाइल। –

4

आप अंत में # 2 का उपयोग कर सकते है अगर आप xparse तंत्र का उपयोग करें:

\usepackage{xparse} 
\NewDocumentEnvironment{defaultTable}{+m+m}{% 
    \begin{table}[h] 
    \noindent 
    \tabularx{\textwidth}{#1} 
    \specialrule{0.5pt}{10pt}{0pt} \rowcolor[gray]{.9} 
} {% 
    \bottomrule 
    \endtabularx 
    \caption{#2} 
    \end{table} 
} 
2

मुझे एक ही समस्या है, और यह "\ end {tabularx}" की वजह से है। समाधान है:

\newenvironment{defaultTable}[3] {
\begin{table}[h]
\caption{#2}
\noindent
\begin{tabularx}{\textwidth}{#1}
\specialrule{0.5pt}{10pt}{0pt} \rowcolor[gray]{.9}
#3
\bottomrule
\end{tabularx}
} {
\end{table} }

तो आप पंक्तियों को पैरामीटर के रूप में परिभाषित करते हैं।

सादर, एरिक संकेत के लिए

संबंधित मुद्दे