complete lab coursework
5
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
.vscode
|
||||
build/
|
||||
*.md.pdf
|
||||
out
|
||||
Lab1CourseworkAAR.pdf
|
||||
|
||||
14
Makefile
@@ -1,11 +1,19 @@
|
||||
CFLAGS=-lm
|
||||
OUTDIR=out
|
||||
|
||||
|
||||
build:
|
||||
zip Lab1PrepAAR.zip *.c *.ino *.pdf *.png
|
||||
build: out Lab1CourseworkAAR.pdf
|
||||
zip $(OUTDIR)/Lab1PrepAAR.zip *.c *.ino *.pdf *.png
|
||||
zip $(OUTDIR)/Lab1AAR.zip *AAR* Lab1Coursework.pdf
|
||||
|
||||
$(OUTDIR):
|
||||
mkdir -p $(OUTDIR)
|
||||
|
||||
Lab1CourseworkAAR.pdf:
|
||||
pandoc report.md -o $@ --template=template.tex
|
||||
|
||||
%.c:
|
||||
$(CC) $(CFLAGS) -c $< -o $*
|
||||
|
||||
clean:
|
||||
rm -f Lab1PrepAAR.zip TestEncoderAAR TwoSensorsAAR
|
||||
rm -rf TestEncoderAAR TwoSensorsAAR Lab1CourseworkAAR.pdf $(OUTDIR)
|
||||
|
||||
BIN
images/IMG_5048.heic
Normal file
BIN
images/IMG_5055.jpg
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
images/IMG_5062.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
images/IMG_5063.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
images/IMG_5064.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
images/IMG_5065.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
images/IMG_5066.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
images/IMG_5067.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
images/IMG_5069.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
images/IMG_5070.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
images/IMG_5073.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
images/IMG_5074.HEIC.jpg
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
images/ex2--50.jpg
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
images/ex2-10.jpg
Normal file
|
After Width: | Height: | Size: 775 KiB |
BIN
images/ex2-100.jpg
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
images/ex2-25.jpg
Normal file
|
After Width: | Height: | Size: 1018 KiB |
BIN
images/ex2-50.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
images/ex2-75.jpg
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
images/ex2-90.jpg
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
images/ex2b-100.jpg
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
images/h-bridge.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
images/pwm_frequency.jpg
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
images/pwm_on_off.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
images/q4+.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
images/q4-.jpg
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
9
readme.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# MMME3085 Lab 1
|
||||
|
||||
## Prep
|
||||
|
||||
### Feedback
|
||||
|
||||
Marks: 100%
|
||||
|
||||
[Feedback sheet](./res/prep-feedback.pdf)
|
||||
84
report.md
Executable file
@@ -0,0 +1,84 @@
|
||||
---
|
||||
author: Akbar Rahman (20386125)
|
||||
date: \today
|
||||
title: MMME3085---Lab 1 Coursework
|
||||
tags: [ mmme3085 ]
|
||||
uuid: 864e5249-a02c-4896-b274-a0a76789955c
|
||||
---
|
||||
|
||||
\maketitle
|
||||
\newpage
|
||||
|
||||
# Questions
|
||||
|
||||
## Question 1
|
||||
|
||||
- $V_{ref} = 5$ V when converting the ADC-converted value because the ADC in the Arduino can read
|
||||
from 0 V to 5 V, therefore $n_{ADC} = 0$ means the voltage to the pin is 0 V, and $n_{ADC} = 1023$
|
||||
means the voltage to the pin is 5 V
|
||||
- This is not the optimum use of the ADC pin as it means the resolution of the voltage measurement
|
||||
is less precise than it could be (roughly a resolution of 5 mV instead of 3 mV)
|
||||
- The resolution could be increased by using an op-amp amplification circuit or a 3.3 V to 5 V level
|
||||
converter circuit
|
||||
|
||||
\newpage
|
||||
|
||||
## Question 2
|
||||
|
||||
- 100 % duty cycle PWM is different from all the others as it is not a wave, but just a DC voltage
|
||||
- Voltage is not zero in the OFF region because the rotational inertia is still spinning the motor,
|
||||
which creates a back EMF, and that is the voltage being read in the OFF region.
|
||||
Back EMF is proportional to the speed of the motor, which is why the voltage in the off region is
|
||||
higher when the PWM duty cycle, and therefore speed of the motor, is higher.
|
||||
|
||||

|
||||
|
||||
\newpage
|
||||
|
||||
## Question 3
|
||||
|
||||
- The difference between the ON+ and ON- is that the current will go in opposite directions,
|
||||
resulting in the motor spinning in opposite directions
|
||||
- The default PWM frequency of pin 13 on the Arduino Mega 2560 is 976.5625 Hz [^1]
|
||||
- The audible frequency we hear is a ~1000 Hz square wave, which can be seen by the fact the period of
|
||||
the wave in figure below is roughly 1 millisecond
|
||||
|
||||

|
||||
|
||||
\newpage
|
||||
|
||||
## Question 4
|
||||
|
||||
{ height=2in }
|
||||
|
||||
{ height=2in }
|
||||
|
||||
\newpage
|
||||
|
||||
|
||||
## Question 5
|
||||
|
||||
- Since the internal timer only looks at one edge of one pulse, it cannot be used to determine the
|
||||
direction of the rotation, which is one of the reasons to use a quadrature in the first place
|
||||
- Therefore it is a viable alternative if you only care about the speed of rotation and direction
|
||||
is not important to the application
|
||||
|
||||
|
||||
## Question 6
|
||||
|
||||
- The main shortcoming observed is that the Arduino appeared to freeze/crash when entering a PWM
|
||||
duty cycle above ~20%
|
||||
- When this issues occurs, the Arduino is too busy running the function called by interrupts
|
||||
to be able to print to serial, hence appearing to have frozen/crashed
|
||||
- This is due to the fact that at higher speeds, the `updateEncoderStateMachine()` function in
|
||||
triggered by the digital pin interrupts (which take higher priority) so frequently that
|
||||
the `loop()` function is not able to run, due to a lack of free CPU cycles, and therefore serial
|
||||
outputs are not printed and inputs not read
|
||||
- This effectively makes the counter useless as it cannot be read from as the Arduino is not able
|
||||
to handle any other processing tasks
|
||||
- Additionally, there is a good chance that the Arduino is not able to run all the calls to
|
||||
`updateEncoderStateMachine` in real time, and so the value of `count` would be incorrect (of course
|
||||
this does not matter since we do not have the CPU cycles to do anything with `count` anyway)
|
||||
|
||||
|
||||
[^1]: `MotorEncoderAAR.ino` defines that pin 13 is used for PWM output. Pin 13 is connected to timer 0 which defaults to 976.5625 Hz (<https://playground.arduino.cc/Main/TimerPWMCheatsheet/>)
|
||||
557
template.tex
Normal file
@@ -0,0 +1,557 @@
|
||||
% Options for packages loaded elsewhere
|
||||
\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
|
||||
\PassOptionsToPackage{hyphens}{url}
|
||||
$if(colorlinks)$
|
||||
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\PassOptionsToPackage{space}{xeCJK}
|
||||
$endif$
|
||||
%
|
||||
\documentclass[
|
||||
$if(fontsize)$
|
||||
$fontsize$,
|
||||
$endif$
|
||||
$if(papersize)$
|
||||
$papersize$paper,
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
ignorenonframetext,
|
||||
$if(handout)$
|
||||
handout,
|
||||
$endif$
|
||||
$if(aspectratio)$
|
||||
aspectratio=$aspectratio$,
|
||||
$endif$
|
||||
$endif$
|
||||
$for(classoption)$
|
||||
$classoption$$sep$,
|
||||
$endfor$
|
||||
]{$documentclass$}
|
||||
$if(beamer)$
|
||||
$if(background-image)$
|
||||
\usebackgroundtemplate{%
|
||||
\includegraphics[width=\paperwidth]{$background-image$}%
|
||||
}
|
||||
$endif$
|
||||
\usepackage{pgfpages}
|
||||
\setbeamertemplate{caption}[numbered]
|
||||
\setbeamertemplate{caption label separator}{: }
|
||||
\setbeamercolor{caption name}{fg=normal text.fg}
|
||||
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
|
||||
$for(beameroption)$
|
||||
\setbeameroption{$beameroption$}
|
||||
$endfor$
|
||||
% Prevent slide breaks in the middle of a paragraph
|
||||
\widowpenalties 1 10000
|
||||
\raggedbottom
|
||||
$if(section-titles)$
|
||||
\setbeamertemplate{part page}{
|
||||
\centering
|
||||
\begin{beamercolorbox}[sep=16pt,center]{part title}
|
||||
\usebeamerfont{part title}\insertpart\par
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
\setbeamertemplate{section page}{
|
||||
\centering
|
||||
\begin{beamercolorbox}[sep=12pt,center]{part title}
|
||||
\usebeamerfont{section title}\insertsection\par
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
\setbeamertemplate{subsection page}{
|
||||
\centering
|
||||
\begin{beamercolorbox}[sep=8pt,center]{part title}
|
||||
\usebeamerfont{subsection title}\insertsubsection\par
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
\AtBeginPart{
|
||||
\frame{\partpage}
|
||||
}
|
||||
\AtBeginSection{
|
||||
\ifbibliography
|
||||
\else
|
||||
\frame{\sectionpage}
|
||||
\fi
|
||||
}
|
||||
\AtBeginSubsection{
|
||||
\frame{\subsectionpage}
|
||||
}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(beamerarticle)$
|
||||
\usepackage{beamerarticle} % needs to be loaded first
|
||||
$endif$
|
||||
\usepackage{amsmath,amssymb}
|
||||
$if(linestretch)$
|
||||
\usepackage{setspace}
|
||||
$endif$
|
||||
\usepackage{iftex}
|
||||
\ifPDFTeX
|
||||
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{textcomp} % provide euro and other symbols
|
||||
\else % if luatex or xetex
|
||||
$if(mathspec)$
|
||||
\ifXeTeX
|
||||
\usepackage{mathspec} % this also loads fontspec
|
||||
\else
|
||||
\usepackage{unicode-math} % this also loads fontspec
|
||||
\fi
|
||||
$else$
|
||||
\usepackage{unicode-math} % this also loads fontspec
|
||||
$endif$
|
||||
\defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme
|
||||
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
|
||||
\fi
|
||||
$if(fontfamily)$
|
||||
$else$
|
||||
$-- Set default font before Beamer theme so the theme can override it
|
||||
\usepackage{lmodern}
|
||||
$endif$
|
||||
$-- Set Beamer theme before user font settings so they can override theme
|
||||
$if(beamer)$
|
||||
$if(theme)$
|
||||
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
|
||||
$endif$
|
||||
$if(colortheme)$
|
||||
\usecolortheme{$colortheme$}
|
||||
$endif$
|
||||
$if(fonttheme)$
|
||||
\usefonttheme{$fonttheme$}
|
||||
$endif$
|
||||
$if(mainfont)$
|
||||
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
|
||||
$endif$
|
||||
$if(innertheme)$
|
||||
\useinnertheme{$innertheme$}
|
||||
$endif$
|
||||
$if(outertheme)$
|
||||
\useoutertheme{$outertheme$}
|
||||
$endif$
|
||||
$endif$
|
||||
$-- User font settings (must come after default font and Beamer theme)
|
||||
$if(fontfamily)$
|
||||
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
|
||||
$endif$
|
||||
\ifPDFTeX\else
|
||||
% xetex/luatex font selection
|
||||
$if(mainfont)$
|
||||
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
|
||||
$endif$
|
||||
$if(sansfont)$
|
||||
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
|
||||
$endif$
|
||||
$if(monofont)$
|
||||
\setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$}
|
||||
$endif$
|
||||
$for(fontfamilies)$
|
||||
\newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
|
||||
$endfor$
|
||||
$if(mathfont)$
|
||||
$if(mathspec)$
|
||||
\ifXeTeX
|
||||
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||
\else
|
||||
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||
\fi
|
||||
$else$
|
||||
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\ifXeTeX
|
||||
\usepackage{xeCJK}
|
||||
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||
\fi
|
||||
$endif$
|
||||
$if(luatexjapresetoptions)$
|
||||
\ifLuaTeX
|
||||
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
|
||||
\fi
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\ifLuaTeX
|
||||
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
|
||||
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||
\fi
|
||||
$endif$
|
||||
\fi
|
||||
$if(zero-width-non-joiner)$
|
||||
%% Support for zero-width non-joiner characters.
|
||||
\makeatletter
|
||||
\def\zerowidthnonjoiner{%
|
||||
% Prevent ligatures and adjust kerning, but still support hyphenating.
|
||||
\texorpdfstring{%
|
||||
\TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}%
|
||||
\ifvmode\else\nobreak\hskip\z@skip\fi}{}%
|
||||
}{}%
|
||||
}
|
||||
\makeatother
|
||||
\ifPDFTeX
|
||||
\DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
|
||||
\else
|
||||
\catcode`^^^^200c=\active
|
||||
\protected\def ^^^^200c{\zerowidthnonjoiner}
|
||||
\fi
|
||||
%% End of ZWNJ support
|
||||
$endif$
|
||||
% Use upquote if available, for straight quotes in verbatim environments
|
||||
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
||||
\IfFileExists{microtype.sty}{% use microtype if available
|
||||
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
|
||||
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
||||
}{}
|
||||
$if(indent)$
|
||||
$else$
|
||||
\makeatletter
|
||||
\@ifundefined{KOMAClassName}{% if non-KOMA class
|
||||
\IfFileExists{parskip.sty}{%
|
||||
\usepackage{parskip}
|
||||
}{% else
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
|
||||
}{% if KOMA class
|
||||
\KOMAoptions{parskip=half}}
|
||||
\makeatother
|
||||
$endif$
|
||||
$if(verbatim-in-note)$
|
||||
\usepackage{fancyvrb}
|
||||
$endif$
|
||||
\usepackage{xcolor}
|
||||
$if(geometry)$
|
||||
$if(beamer)$
|
||||
\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
|
||||
$else$
|
||||
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
\newif\ifbibliography
|
||||
$endif$
|
||||
$if(listings)$
|
||||
\usepackage{listings}
|
||||
\newcommand{\passthrough}[1]{#1}
|
||||
\lstset{defaultdialect=[5.3]Lua}
|
||||
\lstset{defaultdialect=[x86masm]Assembler}
|
||||
$endif$
|
||||
$if(lhs)$
|
||||
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
|
||||
$endif$
|
||||
$if(highlighting-macros)$
|
||||
$highlighting-macros$
|
||||
$endif$
|
||||
$if(tables)$
|
||||
\usepackage{longtable,booktabs,array}
|
||||
$if(multirow)$
|
||||
\usepackage{multirow}
|
||||
$endif$
|
||||
\usepackage{calc} % for calculating minipage widths
|
||||
$if(beamer)$
|
||||
\usepackage{caption}
|
||||
% Make caption package work with longtable
|
||||
\makeatletter
|
||||
\def\fnum@table{\tablename~\thetable}
|
||||
\makeatother
|
||||
$else$
|
||||
% Correct order of tables after \paragraph or \subparagraph
|
||||
\usepackage{etoolbox}
|
||||
\makeatletter
|
||||
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
|
||||
\makeatother
|
||||
% Allow footnotes in longtable head/foot
|
||||
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
|
||||
\makesavenoteenv{longtable}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(graphics)$
|
||||
\usepackage{graphicx}
|
||||
\makeatletter
|
||||
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
|
||||
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
|
||||
\makeatother
|
||||
% Scale images if necessary, so that they will not overflow the page
|
||||
% margins by default, and it is still possible to overwrite the defaults
|
||||
% using explicit options in \includegraphics[width, height, ...]{}
|
||||
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||
% Set default figure placement to htbp
|
||||
\makeatletter
|
||||
\def\fps@figure{htbp}
|
||||
\makeatother
|
||||
$endif$
|
||||
$if(svg)$
|
||||
\usepackage{svg}
|
||||
$endif$
|
||||
$if(strikeout)$
|
||||
$-- also used for underline
|
||||
\usepackage{soul}
|
||||
$endif$
|
||||
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
$if(numbersections)$
|
||||
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
|
||||
$else$
|
||||
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
|
||||
$endif$
|
||||
$if(subfigure)$
|
||||
\usepackage{subcaption}
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
$else$
|
||||
$if(block-headings)$
|
||||
% Make \paragraph and \subparagraph free-standing
|
||||
\ifx\paragraph\undefined\else
|
||||
\let\oldparagraph\paragraph
|
||||
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
|
||||
\fi
|
||||
\ifx\subparagraph\undefined\else
|
||||
\let\oldsubparagraph\subparagraph
|
||||
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
|
||||
\fi
|
||||
$endif$
|
||||
$endif$
|
||||
$if(pagestyle)$
|
||||
\pagestyle{$pagestyle$}
|
||||
$endif$
|
||||
$if(csl-refs)$
|
||||
\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}
|
||||
}%
|
||||
{}
|
||||
\usepackage{calc}
|
||||
\newcommand{\CSLBlock}[1]{#1\hfill\break}
|
||||
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}
|
||||
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break}
|
||||
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
||||
$endif$
|
||||
$if(lang)$
|
||||
\ifLuaTeX
|
||||
\usepackage[bidi=basic]{babel}
|
||||
\else
|
||||
\usepackage[bidi=default]{babel}
|
||||
\fi
|
||||
$if(babel-lang)$
|
||||
\babelprovide[main,import]{$babel-lang$}
|
||||
$if(mainfont)$
|
||||
\ifPDFTeX
|
||||
\else
|
||||
\babelfont[$babel-lang$]{rm}{$mainfont$}
|
||||
\fi
|
||||
$endif$
|
||||
$endif$
|
||||
$for(babel-otherlangs)$
|
||||
\babelprovide[import]{$babel-otherlangs$}
|
||||
$endfor$
|
||||
% get rid of language-specific shorthands (see #6817):
|
||||
\let\LanguageShortHands\languageshorthands
|
||||
\def\languageshorthands#1{}
|
||||
$endif$
|
||||
$for(header-includes)$
|
||||
$header-includes$
|
||||
$endfor$
|
||||
\ifLuaTeX
|
||||
\usepackage{selnolig} % disable illegal ligatures
|
||||
\fi
|
||||
$if(dir)$
|
||||
\ifPDFTeX
|
||||
\TeXXeTstate=1
|
||||
\newcommand{\RL}[1]{\beginR #1\endR}
|
||||
\newcommand{\LR}[1]{\beginL #1\endL}
|
||||
\newenvironment{RTL}{\beginR}{\endR}
|
||||
\newenvironment{LTR}{\beginL}{\endL}
|
||||
\fi
|
||||
$endif$
|
||||
$if(natbib)$
|
||||
\usepackage[$natbiboptions$]{natbib}
|
||||
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
|
||||
$endif$
|
||||
$if(biblatex)$
|
||||
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
|
||||
$for(bibliography)$
|
||||
\addbibresource{$bibliography$}
|
||||
$endfor$
|
||||
$endif$
|
||||
$if(nocite-ids)$
|
||||
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
|
||||
$endif$
|
||||
$if(csquotes)$
|
||||
\usepackage{csquotes}
|
||||
$endif$
|
||||
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
|
||||
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
||||
\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$}
|
||||
$if(links-as-notes)$
|
||||
% Make links footnotes instead of hotlinks:
|
||||
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
|
||||
$endif$
|
||||
$if(verbatim-in-note)$
|
||||
\VerbatimFootnotes % allow verbatim text in footnotes
|
||||
$endif$
|
||||
\hypersetup{
|
||||
$if(title-meta)$
|
||||
pdftitle={$title-meta$},
|
||||
$endif$
|
||||
$if(author-meta)$
|
||||
pdfauthor={$author-meta$},
|
||||
$endif$
|
||||
$if(lang)$
|
||||
pdflang={$lang$},
|
||||
$endif$
|
||||
$if(subject)$
|
||||
pdfsubject={$subject$},
|
||||
$endif$
|
||||
$if(keywords)$
|
||||
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
|
||||
$endif$
|
||||
$if(colorlinks)$
|
||||
colorlinks=true,
|
||||
linkcolor={$if(linkcolor)$$linkcolor$$else$Maroon$endif$},
|
||||
filecolor={$if(filecolor)$$filecolor$$else$Maroon$endif$},
|
||||
citecolor={$if(citecolor)$$citecolor$$else$Blue$endif$},
|
||||
urlcolor={$if(urlcolor)$$urlcolor$$else$Blue$endif$},
|
||||
$else$
|
||||
$if(boxlinks)$
|
||||
$else$
|
||||
hidelinks,
|
||||
$endif$
|
||||
$endif$
|
||||
pdfcreator={LaTeX via pandoc}}
|
||||
|
||||
$if(title)$
|
||||
\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
|
||||
$endif$
|
||||
$if(subtitle)$
|
||||
$if(beamer)$
|
||||
$else$
|
||||
\usepackage{etoolbox}
|
||||
\makeatletter
|
||||
\providecommand{\subtitle}[1]{% add subtitle to \maketitle
|
||||
\apptocmd{\@title}{\par {\large #1 \par}}{}{}
|
||||
}
|
||||
\makeatother
|
||||
$endif$
|
||||
\subtitle{$subtitle$}
|
||||
$endif$
|
||||
\author{$for(author)$$author$$sep$ \and $endfor$}
|
||||
\date{$date$}
|
||||
$if(beamer)$
|
||||
$if(institute)$
|
||||
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
|
||||
$endif$
|
||||
$if(titlegraphic)$
|
||||
\titlegraphic{\includegraphics{$titlegraphic$}}
|
||||
$endif$
|
||||
$if(logo)$
|
||||
\logo{\includegraphics{$logo$}}
|
||||
$endif$
|
||||
$endif$
|
||||
|
||||
\begin{document}
|
||||
$if(has-frontmatter)$
|
||||
\frontmatter
|
||||
$endif$
|
||||
$if(title)$
|
||||
$if(beamer)$
|
||||
\frame{\titlepage}
|
||||
$else$
|
||||
\maketitle
|
||||
$endif$
|
||||
$if(abstract)$
|
||||
\begin{abstract}
|
||||
$abstract$
|
||||
\end{abstract}
|
||||
$endif$
|
||||
$endif$
|
||||
|
||||
$for(include-before)$
|
||||
$include-before$
|
||||
|
||||
$endfor$
|
||||
$if(toc)$
|
||||
$if(toc-title)$
|
||||
\renewcommand*\contentsname{$toc-title$}
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
\begin{frame}[allowframebreaks]
|
||||
$if(toc-title)$
|
||||
\frametitle{$toc-title$}
|
||||
$endif$
|
||||
\tableofcontents[hideallsubsections]
|
||||
\end{frame}
|
||||
$else$
|
||||
{
|
||||
$if(colorlinks)$
|
||||
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
|
||||
$endif$
|
||||
\setcounter{tocdepth}{$toc-depth$}
|
||||
\tableofcontents
|
||||
}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(lof)$
|
||||
\listoffigures
|
||||
$endif$
|
||||
$if(lot)$
|
||||
\listoftables
|
||||
$endif$
|
||||
$if(linestretch)$
|
||||
\setstretch{$linestretch$}
|
||||
$endif$
|
||||
$if(has-frontmatter)$
|
||||
\mainmatter
|
||||
$endif$
|
||||
$body$
|
||||
|
||||
$if(has-frontmatter)$
|
||||
\backmatter
|
||||
$endif$
|
||||
$if(natbib)$
|
||||
$if(bibliography)$
|
||||
$if(biblio-title)$
|
||||
$if(has-chapters)$
|
||||
\renewcommand\bibname{$biblio-title$}
|
||||
$else$
|
||||
\renewcommand\refname{$biblio-title$}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
\begin{frame}[allowframebreaks]{$biblio-title$}
|
||||
\bibliographytrue
|
||||
$endif$
|
||||
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
|
||||
$if(beamer)$
|
||||
\end{frame}
|
||||
$endif$
|
||||
|
||||
$endif$
|
||||
$endif$
|
||||
$if(biblatex)$
|
||||
$if(beamer)$
|
||||
\begin{frame}[allowframebreaks]{$biblio-title$}
|
||||
\bibliographytrue
|
||||
\printbibliography[heading=none]
|
||||
\end{frame}
|
||||
$else$
|
||||
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
|
||||
$endif$
|
||||
|
||||
$endif$
|
||||
$for(include-after)$
|
||||
$include-after$
|
||||
|
||||
$endfor$
|
||||
\end{document}
|
||||