继昨天的一个问题之后,已经给出了成功的答案(`biblatex` 和 `\includestandalone` 导致 `tikzpicture` 节点印刷书目中出现意外缩进),遇到了一个小问题,其中引用的悬挂缩进是“关闭的”,tikzpicture
如我的主要文档中所示:
我已将代码缩减为最小示例来重现此处看到的问题:
我从文档和 Ulrike 在链接问题中提供的答案中看到,您可以locallabelwidth=true
在\printbibliography[...]
选项中进行本地设置,我已经为参考书目进行了设置tikzpicture
,因此缩进在我的主要参考书目中是正确的numeric-comp
- 我如何控制节点内的悬挂缩进tikzpicture
以使其不会更改我的主要参考书目的缩进?我不确定需要更改什么才能设置缩进。不使用似乎locallabelwidth=true
不是一个选项,因为它破坏了整个tikzpicture
参考书目的缩进(从链接的问题来看),但我不确定如何正确设置缩进。我的参考文献从tikzpicture
两位数和三位数不等,因此手动设置两位数值可能会破坏三位数缩进。
\documentclass[oneside]{book}
\usepackage{tikz}
\usepackage[backend=biber,style=numeric-comp]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareBibliographyCategory{flowchart}
\newcommand\ccite[1]{\cite{#1}\addtocategory{flowchart}{#1}}
\newcounter{num}
\newcommand{\increase}[1]{\setcounter{num}{#1}\addtocounter{num}{+98}\thenum}
\begin{document}
\begin{figure}[t]
\DeclareFieldFormat{labelnumber}{\increase{#1}}
\begin{tikzpicture}
\node at (2,0) {\ccite{baez/article}, \ccite{bertram}};
\node[align=left,text width=20cm] (refmenu) at (15,2) {\textbf{References}};
\node[align=left,text width=20cm] (refs) at (15,1) {\printbibliography[heading=none,category=flowchart,locallabelwidth=true]};
\end{tikzpicture}
\caption{Test figure}
\end{figure}
\end{document}
答案1
这里的主要问题是,通常的标签宽度测量和标签宽度测量之间的设置略有不同,locallabelwidth
这意味着在此设置中,所有标签都被视为 0。显然,这不会产生好的结果。错误报告位于https://github.com/plk/biblatex/issues/1306并且该问题已在 v3.20 中得到解决biblatex
。
在最新的系统上您应该不再会遇到这个问题。
旧答案
目前,您可以通过将中间的位放入\makeatletter...\makeatother
前导码中来复制修复。但请记住在biblatex
更新后将其删除。这是一个高度内部的宏,其定义可能随时更改。
\documentclass[oneside]{book}
\usepackage{tikz}
\usepackage[backend=biber,style=numeric-comp]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareBibliographyCategory{flowchart}
\newcommand\ccite[1]{\cite{#1}\addtocategory{flowchart}{#1}}
\newcounter{num}
\newcommand{\increase}[1]{\setcounter{num}{#1}\addtocounter{num}{+98}\thenum}
\makeatletter
\def\blx@bbl@labelnumber{%
% Used at endentry, when reading .bbl
% only do this for the global sorting list otherwise we increment
% the labelnumbers for each sortlist
\ifdefempty\abx@field@localnumber
{}% only if omitnumbers=true
{\ifundef\abx@field@shorthand
{\iftoggle{blx@defernumbers}
% only if defernumbers=true, we have to define localnumber to
% something to stop labelnumberwidth def complaining on first
% post-backend run since there will be nothing in the .aux yet
% for defernums localnumbers. On the second post-backend run,
% it will have a value correct for generating labelnumberwidth
% We also have to define a dummy value for labelnumber here for
% first post-backend runs otherwise references to labelnumber
% in cite styles like numeric-comp will die.
{\ifundef\abx@field@localnumber
{\numdef\abx@field@localnumber{0}%
\blx@bbl@fielddef{labelnumber}{0}}%
{}}
{\csnumgdef{blx@labelnumber@\the\c@refsection}{%
\csuse{blx@labelnumber@\the\c@refsection}+1}%
\edef\abx@field@localnumber{%
\csuse{blx@labelnumber@\the\c@refsection}}%
\blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}%
\blx@bbl@fieldedef{localnumber}{\abx@field@localnumber}}%
\iftoggle{blx@skipbib}
{}
{\blx@bbl@labelnumberwidth@numeric{}}}
{\csgappto\blx@bbl@data{\let\abx@field@labelnumber\abx@field@shorthand}%
\iftoggle{blx@skipbib}
{}
{\blx@bbl@labelnumberwidth@shorthand{}}}}}
\makeatother
\begin{document}
\begin{figure}[t]
\DeclareFieldFormat{labelnumber}{\increase{#1}}
\begin{tikzpicture}
\node at (2,0) {\ccite{baez/article}, \ccite{bertram}};
\node[align=left,text width=20cm] (refmenu) at (15,2) {\textbf{References}};
\node[align=left,text width=20cm] (refs) at (15,1) {\printbibliography[heading=none,category=flowchart,locallabelwidth=true]};
\end{tikzpicture}
\caption{Test figure}
\end{figure}
\end{document}
答案2
我不明白您的文本宽度值(例如 20cm)以及 x|y 坐标值。不过,也许这就是您想要的?
\documentclass[oneside]{book}
\usepackage{tikz}
\usepackage[style=numeric-comp]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareBibliographyCategory{flowchart}
\newcommand\ccite[1]{\cite{#1}\addtocategory{flowchart}{#1}}
\newcounter{num}
\newcommand{\increase}[1]{\setcounter{num}{#1}\addtocounter{num}{+98}\thenum}
\begin{document}
\begin{figure}[t]
\DeclareFieldFormat{labelnumber}{\increase{#1}}
\begin{tikzpicture}
\node at (0,-1) {\ccite{baez/article}, \ccite{bertram}};
\node[align=left,text width=\linewidth] (refmenu) at (0,2.5) {\textbf{References}};
\node[align=left,text width=\linewidth] (refs) at (0,1)
{\printbibliography[heading=none,category=flowchart,locallabelwidth=true]};
\end{tikzpicture}
\caption{Test figure}
\end{figure}
\end{document}