我正在使用豪华型使用基于 Memoir 构建的自定义论文类文件在文档中打包。以下错误不断出现:
类回忆录错误:使用了非法前缀标记 (\string):`c'。请参阅回忆录类文档以了解解释。
l.179 \启动数据
错误总是由\startdata
deluxetable 的行引起的。替换或更改对齐参数的大小写(例如,从 'C' 更改为 'c',或将所有 'c' 对齐参数替换为 'r')并不能解决问题。
以下是 MNWE:
\documentclass{memoir}
\usepackage{deluxetable}
\begin{document}
\begin{deluxetable}{lrlll}
%\tabletypesize{\footnotesize}
%\rotate
\tablewidth{0pc}
\tablecaption{ Parameters \label{table:params}}
\tablehead{
\colhead{Parameter} & \colhead{Symbol} & \colhead{Value} & \colhead{1- $\sigma$ Error} & \colhead{Units}}
\startdata
Observable x & $x$ & 0.21 & $\pm$ 0.04\footnote{Some footnote} & \\
\\
\\
\multicolumn{5}{c}{\emph{Some other parameters}} \\
\\
Observable y & $y$ & 5.7 & $\pm$ 0.08 & units
\enddata
\tablecomments{Table comments here.}
\end{deluxetable}
\end{document}
我会注意到表确实可以编译,但是错误仍然需要修复。
答案1
我非常强烈推荐不是
deluxetable
与回忆录相结合。买者自负 ...
问题在于 将deluxetable
表格规范存储在以 为前缀的宏中\string
。不知何故,Memoir 会影响此宏稍后扩展或处理的方式。
建议的解决方案
忘记deluxetable
。改用与 Memoir 兼容的标准包。例如,
\documentclass{memoir}
\usepackage{booktabs}
\usepackage[referable]{threeparttablex}
\begin{document}
\begin{table}
\centering
\begin{threeparttable}
\caption{Parameters \label{table:params}}
\begin{tabular}{lrlll}
\toprule
Parameter & Symbol & Value & 1- $\sigma$ Error & Units\\
\midrule
Observable x & $x$ & 0.21 & $\pm$ 0.04\tnotex{tn:footnote} & \\
\\
\\
\multicolumn{5}{c}{\emph{Some other parameters}} \\
\\
Observable y & $y$ & 5.7 & $\pm$ 0.08 & units\\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item[a]\label{tn:footnote} Some footnote
\note{Table comments here.}
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
不推荐的黑客攻击
如果你只需要简单的表格规范,例如只有字母而没有任何花哨的东西,那么您可以消除它,\string
并且表格将按正常方式排版。
大概。
有可能。
至少就示例中的代码而言是如此。
我认为。
\documentclass{memoir}
\usepackage{deluxetable}
\makeatletter
\renewenvironment{deluxetable}[1]{%
\def\pt@format{#1}%
\let\@acol\pt@tabacol
\let\@tabularcr\@ptabularcr
\let\@tablenotetext\@ptablenotetext
\let\@tablenotes\@ptablenotes
\global\pt@ncol\z@
\global\pt@column\z@
\global\pt@page\@ne
\gdef\pt@addcol{\global\advance\pt@ncol\@ne}%
}{%
\spew@tblnotes
\typeout@deluxetable
\endcenter
\end@plano@float
}
\makeatother
\begin{document}
\begin{deluxetable}{lrlll}
\tablewidth{0pc}
\tablecaption{ Parameters \label{table:params}}
\tablehead{
\colhead{Parameter} & \colhead{Symbol} & \colhead{Value} & \colhead{1- $\sigma$ Error} & \colhead{Units}}
\startdata
Observable x & $x$ & 0.21 & $\pm$ 0.04\footnote{Some footnote} & \\
\\
\\
\multicolumn{5}{c}{\emph{Some other parameters}} \\
\\
Observable y & $y$ & 5.7 & $\pm$ 0.08 & units
\enddata
\tablecomments{Table comments here.}
\end{deluxetable}
\end{document}
答案2
抱歉,目前还不能发表评论,但在我看来,deluxetable 可能与您的论文类所基于的 memoir 不兼容。我已经在 sharelatex 上测试了您的代码,并得到了相同的错误。但是,如果您将 documentclass 更改为 \documentclass{article},错误应该会消失。Deluxetable 非常老旧,从 1995 年开始,可能与较新的类等存在许多问题。
下面的示例应该可以毫无问题地运行。
\documentclass{article}
\usepackage{deluxetable}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{deluxetable}{lcc}
\centering
\tabletypesize{\footnotesize}
\tablewidth{0pt}
\tablecolumns{3}
\tablecaption{THIS IS A TEST}
\tablehead{\colhead{First col.} & \colhead{Second col.} & \colhead{Third col.}}
\startdata
Some & text & here \\
for & the & sake \\
of & testing & this.
\enddata
\tablecomments{Did it work?}
\label{TESTTABLE}
\end{deluxetable}
\lipsum[2]
\end{document}