\enabletablebib{no}编译一切正常,\enabletablebib{yes} 之后报错且表格显示有问题
Opened this issue · 15 comments
你的参考文献里面有 & 符号,与表格的&符号混淆了,把参考文献中的&删除后再重试。
相同问题:【求助大神】
请问你参考文献表格显示问题解决了么,我参考文献里没有&符号,但也出现这个报错
Misplaced alignment tab character &. \printbibtabular[title={}]}]
Misplaced \noalign. \printbibtabular[title={
如果解决了 请楼主踢踢我
你的参考文献里面有 & 符号,与表格的&符号混淆了,把参考文献中的&删除后再重试。
大神,请问\enabletablebib{no} 后还是出现本楼的报错,已经查看过,参考文献中没有&符号,求求大神帮忙解决
排除参考文献中&符号后依然存在该问题,我也还没有解决
@TomHeaven 只能请房主大神出面给个好的思路了
给我个出错的文档才好调试。 hanlin_tan@nudt.edu.cn @xxs7130 @CaineGu
\enabletablebib{no}时编译一切正常 但是改为yes之后,报错''Misplaced alignment tab character &. \printbib'' 且参考文献显示如下
求助大神/(ㄒ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} 编译第一次的时候,会出现如下结果:
再次编译就会好了
@TomHeaven 我这边直接编译现有的 repo 还是报 Misplaced alignment tab character &. \printbib,Ubuntu 环境,Texlive 2020,xelatex + biber + xelatex (这步报错)
其实这个printbib函数是写了个循环将参考文献逐个放入表格中,&符号就是表格的分隔符。因此要求参考文献的内容中不能含有&符号,否则会引起表格格式语法解析错误。从原理上说,只要参考文献中没有&符号,或者将&替换为转义字符&,就不会报这个错。
之前有同学给我发来报错的项目,我在texlive 2019本地编译没有问题;但是他说用texlive 2022编译会报 ”Misplaced alignment tab character &.“ 我不确定是他发给我的项目已经对参考文献做了精简,还是texlive新版本导致的问题。
请遇到此问题的同学将报错项目原原本本发送给我,以便于定位报错原因。
经过排查,这个issue确实是texlive版本更新导致的兼容性问题。目前的临时解决方案是降低texlive版本:
texlive 2015-2019应该都是可以的;2020、2021等新版本就会报这个异常。
Texlive 2019 ISO镜像文件下载地址:https://pi.kwarc.info/historic/systems/texlive/2019/texlive2019.iso.
我现在用的1.1的版本,表格引用一样是bug啊
Texlive版本是多少? @wang88256187
我直接在overleaf上编译的
这是我目前尝试的解决方案(环境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
获得。