summaryrefslogtreecommitdiff
path: root/data/templates
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2023-08-27 10:54:59 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2023-08-29 09:23:50 -0700
commit353177f9e7eadd60d66846325abd537b85fd46bb (patch)
tree07ffbf78b3f670e83c462ea1d8d8d9abac74578b /data/templates
parent9d28e6029f71f769756ee6d121822de5b0f2aed6 (diff)
Use `\cite` and `\bibitem` to link up citations, even with citeproc.
See #9031 and discussion in #9020. This will give us better accessibility; when tagging is enabled, the citation can be linked to the bibliography entry. This changes some of the details of the layout and the default template. We now make CSLReferences a special enumitem list that will contain `\bibitem`s. Internal links inside citations to ids beginning in `ref-` are put inside a `\cite` instead of `\hyperref`. Closes #9031.
Diffstat (limited to 'data/templates')
-rw-r--r--data/templates/default.latex32
1 files changed, 18 insertions, 14 deletions
diff --git a/data/templates/default.latex b/data/templates/default.latex
index e2cfce1f1..c177c00e8 100644
--- a/data/templates/default.latex
+++ b/data/templates/default.latex
@@ -335,24 +335,28 @@ $if(pagestyle)$
\pagestyle{$pagestyle$}
$endif$
$if(csl-refs)$
+% definitions for citeproc citations
+\NewDocumentCommand\citeproctext{}{}
+\NewDocumentCommand\citeproc{mm}{%
+ \begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
+% avoid brackets around text for \cite:
+\makeatletter
+ \def\@biblabel#1{}
+ \def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
-\newlength{\cslentryspacingunit} % times entry-spacing
-\setlength{\cslentryspacingunit}{\parskip}
-\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing
- {% don't indent paragraphs
- \setlength{\parindent}{0pt}
- % turn on hanging indent if param 1 is 1
- \ifodd #1
- \let\oldpar\par
- \def\par{\hangindent=\cslhangindent\oldpar}
- \fi
- % set entry spacing
- \setlength{\parskip}{#2\cslentryspacingunit}
- }%
- {}
+\newlength{\cslentryspacing}
+\setlength{\cslentryspacing}{0em}
+\usepackage{enumitem}
+\newlist{CSLReferences}{itemize}{1}
+\setlist[CSLReferences]{label={},
+ leftmargin=\cslhangindent,
+ itemindent=-1\cslhangindent,
+ parsep=\parskip,
+ itemsep=\cslentryspacing}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{#1\hfill\break}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}