nudtproposal icon indicating copy to clipboard operation
nudtproposal copied to clipboard

\enabletablebib{no}编译一切正常,\enabletablebib{yes} 之后报错且表格显示有问题

Open xxs7130 opened this issue 2 years ago • 15 comments

\enabletablebib{no}时编译一切正常 但是改为yes之后,报错''Misplaced alignment tab character &. \printbib'' 且参考文献显示如下 image

求助大神/(ㄒoㄒ)/~~

xxs7130 avatar Oct 12 '22 09:10 xxs7130

你的参考文献里面有 & 符号,与表格的&符号混淆了,把参考文献中的&删除后再重试。

TomHeaven avatar Oct 18 '22 01:10 TomHeaven

相同问题:【求助大神】

请问你参考文献表格显示问题解决了么,我参考文献里没有&符号,但也出现这个报错 Misplaced alignment tab character &. \printbibtabular[title={~}] Misplaced \noalign. \printbibtabular[title={~}]

如果解决了 请楼主踢踢我

CaineGu avatar Oct 24 '22 06:10 CaineGu

你的参考文献里面有 & 符号,与表格的&符号混淆了,把参考文献中的&删除后再重试。

大神,请问\enabletablebib{no} 后还是出现本楼的报错,已经查看过,参考文献中没有&符号,求求大神帮忙解决

CaineGu avatar Oct 24 '22 06:10 CaineGu

排除参考文献中&符号后依然存在该问题,我也还没有解决

xxs7130 avatar Oct 24 '22 07:10 xxs7130

@TomHeaven 只能请房主大神出面给个好的思路了

CaineGu avatar Oct 24 '22 07:10 CaineGu

给我个出错的文档才好调试。 [email protected] @xxs7130 @CaineGu

TomHeaven avatar Nov 18 '22 09:11 TomHeaven

\enabletablebib{no}时编译一切正常 但是改为yes之后,报错''Misplaced alignment tab character &. \printbib'' 且参考文献显示如下 image

求助大神/(ㄒoㄒ)/~~

我fork了一下这个repo,修改了nudtstyle.sty,https://github.com/S0fr/nudtproposal 但对Latex也不是很精通,又引入了新的BUG,🤦‍♂️

nudtstyle.sty修改为了:

%% 正文需要的宏
\usepackage{mdframed} % 页面边框
\usepackage{titlesec}   %设置页眉页脚的宏包
\usepackage{fancyhdr} % 页眉页脚
\usepackage{tabularx}  % 表格宽度
\usepackage{multirow} % 表格单元格合并
\usepackage{caption}   % 图表标题
% demo new tabular bibliography format
\usepackage{csquotes}
\usepackage[american]{babel}
%\usepackage[backend=biber, bibstyle=numeric, citestyle=numeric]{biblatex} % 设定引用格式
%\usepackage[backend=biber, style=caspervector,utf8, sorting=nty]{biblatex} % 设定引用格式
%\usepackage[backend=biber, style=Biblio/nudtcaspervector,utf8, sorting=none]{biblatex} % 设定引用格式
%\usepackage[backend=biber, style=gbt77142005, utf8]{biblatex} % 设定引用格式
\usepackage{longtable}

\usepackage{biblatex-ext-tabular}

% 重定义图表标题
%\renewcommand{\figurename}{图 } 
%\renewcommand{\tablename}{表 } 
\captionsetup[figure]{labelfont={},name={图 },labelsep=space}
\captionsetup[table]{labelfont={},name={表 },labelsep=space}

% 重定义标题格式
%\titleformat{command}[shape]{format}{label}{sep}{before-code}{after-code}
\titleformat{\section}{\heiti \zihao{-4}}{\thesection .}{5 pt}{}
\titlespacing*{\section} {0pt}{0ex}{.2ex} % 设置标题前后间距
\titleformat{\subsection}{\kaishu \zihao{5} \bfseries}{\thesubsection}{5 pt}{}
\titlespacing*{\subsection} {0pt}{0ex}{.2ex}
\titleformat{\subsubsection}{\kaishu \zihao{5}}{\thesubsubsection}{5 pt}{}
\titlespacing*{\subsubsection} {0pt}{0ex}{.2ex}
% 定义upcite
\newcommand{\upcite}[1]{\textsuperscript{ [\cite{#1}]  }} % 中文引用
%\newcommand{\upcite}[6]{\textsuperscript{ [\cite{#1,#2,#3,#4,#5,#6}] }} % 中文引用

\newcommand{\tabincell}[2]{\begin{tabular}{@{}#1@{}}#2\end{tabular}} % 单元格换行
% 首页图案
\schoollogo{scale=0.13}{nudt_logo_new}% university logo
\schooltext{scale=0.35}{nudt_text_new}% university text
% 定义字符串比较函数
\makeatletter
\def\instring#1#2{TT\fi\begingroup
	\edef\x{\endgroup\noexpand\in@{#1}{#2}}\x\ifin@}
\makeatother


\defbibtabular{bibtabular}
{\setlength{\LTpre}{0pt}%
	\setlength{\LTpost}{0pt}%
	\renewcommand*{\arraystretch}{1}%
	\begin{longtable}{%
			@{}
			|p{0.10\textwidth} < {\centering}|
			p{0.85\textwidth}|
			@{}}
		\hline
			{\songti 序号}  & \multicolumn{1}{c|}{\songti 文献目录(作者、题目、刊物名、出版时间、页次)} \\
		\hline
		\endfirsthead}
	{\end{longtable}}
{\anchor{\mkgbnumlabel{\printfield{labelnumber}}}
	& \driver{} \\\hline}

\addbibresource{Biblio/ref.bib}


\newcommand\enabletablebib[1]{%	
	\ifstrequal{#1}{yes}{\newcommand\printbib{\printbibtabular[title={~}]}	}{	\newcommand\printbib{\printbibliography[title={~}]}}
}

这样是可以的,但是又引入一个新BUG 用\enabletablebib{yes} 编译第一次的时候,会出现如下结果: 再次编译就会好了

S0fr avatar Dec 03 '22 09:12 S0fr

请尝试 v1.0版本,关于参考文献格式的问题应该彻底解决了。

TomHeaven avatar Mar 08 '23 03:03 TomHeaven

@TomHeaven 我这边直接编译现有的 repo 还是报 Misplaced alignment tab character &. \printbib,Ubuntu 环境,Texlive 2020,xelatex + biber + xelatex (这步报错)

wogong avatar Mar 09 '23 07:03 wogong

其实这个printbib函数是写了个循环将参考文献逐个放入表格中,&符号就是表格的分隔符。因此要求参考文献的内容中不能含有&符号,否则会引起表格格式语法解析错误。从原理上说,只要参考文献中没有&符号,或者将&替换为转义字符&,就不会报这个错。

之前有同学给我发来报错的项目,我在texlive 2019本地编译没有问题;但是他说用texlive 2022编译会报 ”Misplaced alignment tab character &.“ 我不确定是他发给我的项目已经对参考文献做了精简,还是texlive新版本导致的问题。

请遇到此问题的同学将报错项目原原本本发送给我,以便于定位报错原因。

@wogong

TomHeaven avatar Apr 08 '23 05:04 TomHeaven

经过排查,这个issue确实是texlive版本更新导致的兼容性问题。目前的临时解决方案是降低texlive版本: texlive 2015-2019应该都是可以的;2020、2021等新版本就会报这个异常。

Texlive 2019 ISO镜像文件下载地址:https://pi.kwarc.info/historic/systems/texlive/2019/texlive2019.iso.

TomHeaven avatar May 23 '23 08:05 TomHeaven

我现在用的1.1的版本,表格引用一样是bug啊

wang88256187 avatar Aug 23 '23 14:08 wang88256187

Texlive版本是多少? @wang88256187

TomHeaven avatar Aug 29 '23 03:08 TomHeaven

我直接在overleaf上编译的

wang88256187 avatar Aug 29 '23 07:08 wang88256187

这是我目前尝试的解决方案(环境TexLive2023):

\defbibtabular{bibtabular}
{\noindent
\begin{longtable}{|m{0.10\textwidth} < {\centering}| m{0.85\textwidth}|  }
		\hline
		{\songti 序号}  & \multicolumn{1}{c|}{\songti 文献目录(作者、题目、刊物名、出版时间、页次)} \\
		\endfirsthead
		\hline
		{\songti 序号}  & \multicolumn{1}{c|}{\songti 文献目录(作者、题目、刊物名、出版时间、页次)} \\
		\endhead
		\hline
}
{\end{longtable}}
{\anchorlang{%
  \printtext[labelnumberwidth]{%
    \printfield{labelprefix}%
    \printfield{labelnumber}}}
& \driver{\usebibmacro{omitsortname}} \\\hline}

另需要在 \usepackage[backend=biber, bibstyle=gb7714-2015,citestyle=gb7714-2015,...]{biblatex} 下添加包\usepackage{biblatex-ext-tabular}references.tex中引用命令改为\printbibtabular[title={~}],还有一些nudtstyle.sty\printbibtabular重复定义的情况,将原来\printbibtabular相关的命令注释了就好了。 目前存在的问题是引用中会有一些斜杠,不过应该问题不大,如果作者大神有空可以测试一下。

EDIT: 加入每页表头,更贴合doc模板 空行可以在reference\printbibtabular之后加入\vspace{-24pt}再添加新的longtable获得。

GoenitzYs avatar Sep 06 '23 09:09 GoenitzYs