使用 BibLaTeX 进行 D&D

使用 BibLaTeX 进行 D&D

我要开始写我的 D&D (龙与地下城) 活动,因为我用 latex 比用 Microsoft Word 更舒服。我还想使用 biblatex 为整个过程中使用的怪物制作参考,如下所示:

@monster{ skeleton,
    name = {Skeleton},
    size = {medium},
    alignment = {lawful evil},
    ac = {13},
    hp = {13 (2d8+4)},
    speed = {30ft},
    blah blah blah...
}

这样我就可以Something something skeleton\cite{skeleton}点击引用来快速查看统计数据。是的,我是个天才。

有没有办法将某些内容放入某些文件中的某个地方,以便让 Latex 能够理解我想做的事情?

答案1

也许你想要的不是 biblatex,glossaries包裹。

\documentclass{article}

\usepackage{hyperref}
\usepackage[nonumberlist]{glossaries}

\newglossary*{monster}{Bestiary}
\newglossary*{npc}{Characters}


\makeglossaries

\newglossaryentry{monster:skeleton}{
    name = Skeleton,
    type=monster,
    description = {size: medium,\\
    alignment: lawful evil,
    ac: 13,
    hp: 13 (2d8+4),
    speed: 30ft}
}
\newglossaryentry{npc:king}{
    name = King Knuth,
    description = {Ruler of the realm},
    type = npc
}

\begin{document}

A \gls{monster:skeleton} attacks \gls{npc:king}

\printglossaries

\end{document}

在此处输入图片描述

答案2

这是可以做到的biblatex(人们已经做了各种各样的事情:https://www.tug.org/TUGboat/tb35-3/tb111fischer.pdf),但这可能不是处理这个问题最舒服的方式。biblatex提供了很多你不需要的东西,重新定义和选择退出某些你不想要的东西并获得你想要的东西可能会很复杂。特别是获取表格统计信息块可能会很痛苦。

还有其他工具可以读取数据并根据您的意愿显示。datatool但 Lua(著名的 LuaLaTeX)也能为您提供一些可能性。

看一下如何使用 BibLaTeX/Biber 创建全新的数据类型?有关定义新条目类型及其驱动程序的详细信息。

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@monster{gazebo,
  name      = {Gazebo},
  size      = {large},
  alignment = {lawful evil},
  ac        = {13},
  hp        = {13 (2d8+4)},
  speed     = {5ft},
}
\end{filecontents*}
\begin{filecontents}{dnd.dbx}
\DeclareDatamodelEntrytypes{monster}
\DeclareDatamodelFields[type=field,datatype=literal]{
  name,
  size,
  alignment,
  ac,
  hp,
  speed,
}
\DeclareDatamodelEntryfields[monster]{
  name,
  size,
  alignment,
  ac,
  hp,
  speed,
}
\end{filecontents}
\documentclass[english]{article}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[datamodel=dnd,style=authoryear,backend=biber]{biblatex}
\usepackage{hyperref}
\addbibresource{\jobname.bib}

\DeclareFieldFormat{alignment}{\mkbibparens{#1}}

\DeclareFieldFormat{ac}{AC\space#1}
\DeclareFieldFormat{hp}{#1\addspace HP}
\DeclareFieldFormat{speed}{Speed\addcolon\space#1}

\DeclareBibliographyDriver{monster}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \printfield{name}%
  \setunit{\addspace}%
  \printfield{alignment}%
  \newunit\newblock
  \printfield{size}%
  \newunit\newblock
  \printfield{ac}%
  \newunit\newblock
  \printfield{hp}%
  \newunit\newblock
  \printfield{speed}%
  \newunit\newblock
  \usebibmacro{finentry}}

\renewbibmacro*{cite}{\printfield[bibhyperref]{name}}

\begin{document}
Then Eric was attacked by a \cite{gazebo}

\printbibliography[title=Monsters]
\end{document}

然后埃里克被 Gazebo//(Heading)Monsters//Gazebo (守序邪恶) 攻击。大型。AC 13。13 (2d8+4) HP。速度:5 英尺。

根据您希望文档的交互程度,PDF 可能不是合适的媒介,而您想要更动态的 HTML 页面?当您不需要 LaTeX 的大多数高级功能(尤其是数学和一般印刷)时,Markdown 可能是 LaTeX 标记的更轻量级替代品。

相关内容