Новая среда в латексе с помощью других сред, компилятор не находит \end

Нет, но каждый раз, когда Вы делаете чрезвычайно сложные вещи как это, Вы могли бы хотеть заново продумать свое решение. Помните, что код должно быть легче считать, чем он должен был записать.

5
задан arsenbonbon 18 November 2009 в 08:16
поделиться

3 ответа

Замените \ begin {table} на \ @ float {table} и замените \ end {table} на \ end @ float .

\ @ float и \ end @ float - это внутренние команды LaTeX для запуска и завершения среды с плавающей запятой.

Вы также захотите последовать совету Алексея по поводу Параметр №2. Сохраните его в первой части вашей среды ( \ gdef \ mycaption {# 2} ), а затем вспомните его позже \ caption {\ mycaption} во второй части. Поместите \ def \ mycaption {\ relax} непосредственно перед строкой \ begin {defaultTable} .

Кроме того, поскольку \ @ float и \ end @ float содержат знаки @ , если этот код находится в преамбуле вашего файла документа (вместо, скажем, файла .sty ), вам нужно будет поставить \ makeatletter перед вашим \ begin {defaultTable} , а также \ makeatother после \ end {defaultTable} .

4
ответ дан 18 December 2019 в 14:47
поделиться

Вы можете использовать # 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}
}
4
ответ дан 18 December 2019 в 14:47
поделиться

Вы не можете использовать # 2 в последнем аргументе макроса \ newenvironment . Вы должны использовать # 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}
}
3
ответ дан 18 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: