aboutsummaryrefslogtreecommitdiff
path: root/citations.tex
blob: db06eeb45047655d7e5b0712d5749a7178f4666f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
\long\edef\citations{}
\long\def\newcitation#1#2{%
  \long\edef\citations{\citations{#2}%allows alphabetization by including sanitized relevant data
  \parindent=0in\hangafter=1\hangindent=0.5in\relax%hanging indents must be inserted every paragraph
  #1\par}%
}
\def\cite#1{%the actual citation request made by users
  \def\cltitle{}\def\clcontain{}%"clean" data intended for alphabetization in bibliography
  \def\ifnameinline{\iffalse}\def\nameinline{\def\ifnameinline{\iftrue}}%
  \def\ifnewcite{\iffalse}\def\newcite{\def\ifnewcite{\iftrue}}%
  \def\ifusetitle{\iffalse}\def\usetitle{\def\ifusetitle{\iftrue}}%
  \def\@authlast{}\def\@namedisp{}\def\name##1##2{\def\@authlast{##1}\def\@namedisp{\ifx\@title\empty ##2.\fi}}%takes a last name and how names ought display, allowing multiple authors
  \def\@title{}\def\title##1{\def\@title{``##1.''}\def\cltitle{##1}}%individual source like chapter or webpage
  \def\@contain{}\def\contain##1{\def\@contain{ {\twelveit ##1}\ifx\@title\empty .\else, by \@namedisp \comma \fi}\def\clcontain{##1}}%container (book contains chapter)
  \def\@contrib{}\def\contrib##1{\def\@contrib{\ ##1\comma}}%other contributors with roles
  \def\@version{}\def\version##1{\def\@version{\ ##1\comma}}%version, if notable or unique
  \def\@relnums{}\def\relnums##1{\def\@relnums{\ ##1\comma}}%relevant numbers like journal issue or volume number
  \def\@publish{}\def\publish##1{\def\@publish{\ ##1\comma}}%publisher
  \def\@pubdate{}\def\pubdate##1{\def\@pubdate{\ ##1\comma}}%publication date
  \def\@locator{}\def\locator##1{\def\@locator{\ ##1}}%page numbers or web address
  \def\@pagenum{}\def\pagenum##1{\def\@pagenum{##1}}%page number, as relevant to inline citations
  \countdef\commas=11\count11=0%
  #1%
  \ifx\@contrib\empty \else \advance \commas by 1\fi%
  \ifx\@version\empty \else \advance \commas by 1\fi%
  \ifx\@relnums\empty \else \advance \commas by 1\fi%
  \ifx\@publish\empty \else \advance \commas by 1\fi%
  \ifx\@pubdate\empty \else \advance \commas by 1\fi%
  \ifx\@locator\empty \else \advance \commas by 1\fi%
  \def\comma{\advance\commas by -1 \noexpand\ifnum\noexpand\commas>0 ,\noexpand\fi}%
  \ifnewcite\newcitation{\@namedisp \@title \@contain \@contrib \@version \@relnums \@publish \@pubdate \@locator.}{\@namedisp\cltitle\clcontain}\fi%
  (\ifnameinline
    \ifx\@authlast\empty
      \@title
    \else
      \@authlast
    \fi%
  ,
  \fi \@pagenum)%
}

\long\def\biblio{ %generates a bibliography
  \vfil \eject %prints all previous pages and starts bibliography
  \line{\hfil Works Cited \hfil}%
%%Alphabetization
  \immediate\openout0=sort.tex%
  \immediate\write0{\unexpanded\expandafter{\citations}}%
  \immediate\closeout0%
  \immediate\write18{python3 sort.py}%sort sort.tex alphabetically by the first group (also remove first group)
  \immediate\openin0=sort.tex%
  \immediate\read0 to \data%
  \immediate\data%
  \immediate\closein0%
}