我想将newenvironment
主体作为 的内联输入参数pgfplotstable
。是否可以在主体本身不使用括号的情况下做到这一点?
\documentclass{article}
\usepackage{pgfplotstable}
\newenvironment{customtabular}
{
\pgfplotstabletypeset[
col sep=tab,
row sep=\\,
string type,
]
}
{}
\begin{document}
\begin{customtabular}
{foo bar\\} %tab here
\end{customtabular}
\end{document}
答案1
这是一个简单的例子
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\makeatletter
\def\pgfplotstabletypeset@env{%
\pgfutil@ifnextchar[{%
\pgfplotstabletypeset@opt@env
}{%
\pgfplotstabletypeset@opt@env[]%
}%
}
\long\def\pgfplotstabletypeset@opt@env[#1]{%
\begingroup
\ifpgfplots@table@options@areset
\else
\pgfplotstableset{#1}%
\fi
\pgfplotstablecollectoneargwithpreparecatcodes{%
\pgfplotstabletypeset@opt@collectarg@env[#1]%
}%
}
\long\def\pgfplotstabletypeset@opt@collectarg@env[#1]#2\end{%
\pgfplotstable@isloadedtable{#2}%
{\pgfplotstabletypeset@opt@[#1]{#2}}%
{\pgfplotstabletypesetfile@opt@[#1]{#2}}%
\end
}
\begin{pgfplotstabletypeset@env}[col sep=space,row sep=\\,string type]
Lorem ipsum dolor sit amet, \\
consectetur adipiscing elit. Sed augue \\
sem, sollicitudin quis mauris sed, \\
mattis aliquet diam. Aenean ultricies \\
orci a ipsum imperdiet condimentum. \\
Vivamus hendrerit consequat maximus. Ut \\
auctor dignissim felis in faucibus. \\
Proin quis vulputate arcu. Praesent \\
iaculis consequat eros rutrum gravida. \\
Duis nec volutpat enim, at \\
fermentum quam. Pellentesque laoreet enim \\
et neque fermentum luctus. end\\
\end{pgfplotstabletypeset@env}
\end{document}
解释
在pgfplotstable.code.tex
1310-1331 行中:
\def\pgfplotstabletypeset{% \pgfutil@ifnextchar[{% \pgfplotstabletypeset@opt }{% \pgfplotstabletypeset@opt[]% }% } \long\def\pgfplotstabletypeset@opt[#1]{% \begingroup \ifpgfplots@table@options@areset \else \pgfplotstableset{#1}% \fi \pgfplotstablecollectoneargwithpreparecatcodes{% \pgfplotstabletypeset@opt@collectarg[#1]% }% } \long\def\pgfplotstabletypeset@opt@collectarg[#1]#2{% \pgfplotstable@isloadedtable{#2}% {\pgfplotstabletypeset@opt@[#1]{#2}}% {\pgfplotstabletypesetfile@opt@[#1]{#2}}% }
这表明括号{table & contents \\}
是必需的,因为它成为 的第二个参数\pgfplotstabletypeset@opt@collectarg
。但我们可以改变参数模式 ---[#1]#2\end
意思是第二个参数从]
到\end
。请注意, 之后\end
应该有{pgfplotstabletypeset@env}
。排版表格后,我们放回另一个表格\end
,以便 LaTeX 可以结束环境pgfplotstabletypeset@env
。