旧答案

旧答案

继昨天的一个问题之后,已经给出了成功的答案(`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}​

在此处输入图片描述

相关内容