买者自负 ...

买者自负 ...

我正在使用豪华型使用基于 Memoir 构建的自定义论文类文件在文档中打包。以下错误不断出现:

类回忆录错误:使用了非法前缀标记 (\string):`c'。请参阅回忆录类文档以了解解释。

l.179 \启动数据

错误总是由\startdatadeluxetable 的行引起的。替换或更改对齐参数的大小写(例如,从 '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}

相关内容