带引文的 Tikz 图表

带引文的 Tikz 图表

我正在尝试创建一个图,其节点是参考书目中的一些作者年份引文。这个问题与这个帖子但不幸的是,提供的答案建议使用 Forest 包(用于绘制树)或手动定位节点。这两种方法都不方便,我真的很想使用 Tikz 的算法图形绘制功能的各种工具和选项。

简单地在图表中使用 \cite{} 命令会引发缺少 \endcsname 的错误。我尝试删除 \cite 命令所做的部分格式化来修复此问题,但没有成功。

我担心这超出了我非常有限的 Latex 编码能力,任何帮助都将不胜感激。

请注意,我宁愿使用 bibtex 来创建参考书目,但如果问题得到解决,我很乐意转向 biber。我尝试使用 biblatex 主要是想尝试 \citefield 命令。

以下是 MWE:

\RequirePackage{filecontents}
\begin{filecontents}{testGraph.bib}
@book{BookA,
    author    = "A",
    title     = "A book",
    year      = 2000,
}

@book{BookB,
    author    = "B",
    title     = "B book",
    year      = 2002,
}
\end{filecontents}

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}

\usepackage[%
  backend=bibtex,
]{biblatex}
\addbibresource{testGraph.bib}

\DeclareCiteCommand{\citeGraph}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}}
  {\thefield{title}}


\begin{document}

% Does not work

%\begin{figure}[h]
%\centering
%\tikz  \graph  {
%\cite{bookA} -> B
%};
%\end{figure}


% Does not work either...

%\begin{figure}[h]
%\centering
%\tikz  \graph  {
%{\citeGraph{Book1}} -> B}
%};
%\end{figure}

\begin{figure}[h]
\centering
\begin{tikzpicture}[show/.style={draw}]
\node[show]    (bookA)    at    (0,0)    
    {\citeGraph{BookA}};
\node[show]    (bookB)   at     (3,0)    
    {\citeGraph{BookB}};
\draw[->]    (bookA) -- (bookB);
\end{tikzpicture}
\end{figure}

\printbibliography

\end{document}
\endinput

答案1

图中节点的名称与内容相同,您不能命名节点\cite{...}。要解决这个问题,请使用例如A[as=\citeGraph{BookA}],那么节点将获得名称A,但内容将获得\citeGraph{BookA}

在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents}{testGraph.bib}
@book{BookA,
    author    = "A",
    title     = "A book",
    year      = 2000,
}

@book{BookB,
    author    = "B",
    title     = "B book",
    year      = 2002,
}
\end{filecontents}

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}

\usepackage[%
  backend=bibtex,
]{biblatex}
\addbibresource{testGraph.bib}

\DeclareCiteCommand{\citeGraph}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}}
  {\thefield{title}}


\begin{document}

\tikz  \graph  {
A[as=\cite{BookA}] -> B
};

\printbibliography

\end{document}

相关内容