LaTeX dissertation project aligned to The University of Tennessee at Chattanooga (UTC) Graduate Manuscript Standards (Nov 2024).
This repo is intended to be the source of truth for writing + formatting, with:
- Local compilation (MiKTeX + XeLaTeX)
- Git/GitHub sync for working across machines
- A draft/final toggle to disable hyperlinks in submission PDFs
graduate-manuscript-standards-nov-2024.pdfis the canonical UTC formatting source used by this template.utc-standards-index.mdsummarizes edition, key requirements used by the template, and local interpretation notes.graduate-manuscript-standards-nov-2024.sha256stores the checksum for integrity and provenance.
When updating the standards PDF, update all three files in the same commit.
The MIT License applies to this repository's original template source, scripts, documentation, and workflow files. The tracked UTC Graduate Manuscript Standards PDF is included only as an official formatting reference/provenance artifact; it remains a University of Tennessee at Chattanooga document and is not relicensed by this repository.
- MiKTeX (with XeLaTeX)
- Perl (required for
latexmkin MiKTeX on Windows) latexmkavailable on PATH (MiKTeX installs it)- Python 3 with the pinned audit dependency set from
requirements-audits.txt - Optional: a PDF viewer that can inspect fonts (Foxit/Adobe)
From the repo root:
latexmk -pdfxe -bibtex Dissertation_Main.texNote: this MiKTeX latexmk build does not accept -usebiber; -bibtex still
invokes biber automatically for biblatex projects.
Common helpful commands:
# Clean build artifacts
latexmk -c
# Force a full rebuild if something gets "stuck"
latexmk -pdfxe -bibtex -f Dissertation_Main.texInstall the rendered-PDF audit dependency set with:
python -m pip install -r requirements-audits.txtThis template includes a toggle (see Dissertation_Main.tex) to control
hyperlink behavior:
- Draft mode (
\UTCFinalfalse): hyperlinks may be enabled for convenience while writing. - Final mode (
\UTCFinaltrue): hyperlinks must be disabled (UTC does not accept active URL links in the submitted PDF).
Primary check:
python .\scripts\check_dissertation_hyperlinks.pyThis audit inspects the rendered PDF for live link objects and annotations.
Use it instead of raw /URI grep.
- FINAL build has no active URL links (per UTC).
- Preliminary-pages audit passes with
python .\scripts\check_dissertation_prelim_contract.py. - Abstract-cap audit passes with
python .\scripts\check_dissertation_abstract_cap.py. - TOC sentinel audit passes with
python .\scripts\check_dissertation_toc_contract.py. - Page-geometry sentinel audit passes with
python .\scripts\check_dissertation_page_geometry.py. - Structural margin audit passes with
python .\scripts\check_dissertation_margin_structural.py. - Margin proof overlay builds with
python .\scripts\build_dissertation_margin_proof_overlay.py. - Optional second-phase exact-margin audit is available with
python .\scripts\audit_dissertation_margin_exact.py, but it is not part of the default public-template CI contract. - TOC page numbers match the actual page numbers in the PDF.
- Appendix entries in the TOC list divider page numbers.
- Committee/approval page starts with the title at the 2" top margin; no
Approved:label line.
Primary check:
python .\scripts\check_dissertation_prelim_contract.pyThis audit checks the rendered PDF for:
- lower-case Roman prelim labels through the page before Chapter 1 page
1 - suppressed printed numeral on page
i - bottom-centered prelim numerals on the remaining prelim pages
- UTC-sample title-page spacer geometry between the title,
By, author name, and the next title-page element - a configurable degree-name phrase on the title page
- optional copyright-page presence and centered placement
Policy lives in refs/editorial_audit/dissertation_prelim_contract_policy.yml.
When adapting the template for a real manuscript, update the degree phrase and
copyright-page toggle there to match the intended submission state.
Primary check:
python .\scripts\check_dissertation_abstract_cap.pyThis audit checks the rendered PDF for:
ABSTRACTas the start heading- a configurable set of stop headings for the next preliminary major page
- heading-delimited rendered-text extraction only
- UTC's dissertation abstract cap of 350 words by default
Policy lives in refs/editorial_audit/dissertation_abstract_policy.yml.
When adapting the template for another manuscript flow, update the stop
headings and max-word cap there rather than hard-coding page windows in the
script.
Primary check:
python .\scripts\check_dissertation_toc_contract.pyThis audit checks the rendered PDF for:
- a live TOC section extracted from the rendered PDF rather than
.textokens - template-sized TOC sentinels only:
ABSTRACT,LIST OF TABLES,LIST OF FIGURES, first numbered chapter, first appendix divider if present, andVITA - TOC entries whose rendered page labels match the current body-page labels
- populated list-of-tables and list-of-figures pages via their sentinel body patterns
Policy lives in refs/editorial_audit/dissertation_toc_contract_policy.yml.
Keep this expectations surface small and template-generic; deeper manuscript-
specific chapter/table/figure inventories belong in dissertation-local audits,
not in the public template.
Primary check:
python .\scripts\check_dissertation_page_geometry.pyThis audit checks the rendered PDF only, with policy values in inches, for:
- committee-page title top position
- title-page title top position
- abstract opener top position
- first numbered chapter opener top position
- references opener top position
- first appendix divider centering, if present
- one ordinary Arabic-number continuation page for bottom-centered page-number placement
Policy lives in refs/editorial_audit/dissertation_page_geometry_policy.yml.
Keep this lane limited to generic page-family sentinels; the broader structural
margin audit and the generated proof overlay consume the same generic policy
family without pulling in manuscript-specific exact-margin locks.
Primary check:
python .\scripts\check_dissertation_margin_structural.pyThis audit checks the rendered PDF only for:
- reusable 1-inch left/right body-box bounds across pages
- bottom-centered page-number placement on numbered pages
- footer whitespace near 1 inch below the page number
- no running-header text in the header band
- no footer-band text beyond the printed page number
Policy lives in refs/editorial_audit/dissertation_margin_structural_policy.yml.
This is the broader reusable margin/body-box lane. The template now also
requires a generated proof overlay for human-verifiable guide pages, while the
heavier manuscript-specific rendered exact-margin stack stays out of the
default public-template contract.
Primary check:
python .\scripts\build_dissertation_margin_proof_overlay.pyThis generator consumes the page-geometry, structural-margin, and TOC policies
and writes an ignored local proof PDF named
dissertation_margin_proof_overlay_current.pdf.
Use it to visually confirm:
- 1-inch body margins and 1-inch bottom page-number family guides
- 2-inch opener guides on committee/title/abstract/chapter/reference families
- centered appendix-divider family positioning, if present
- TOC-family pages under the same rendered guide surface
This proof artifact is required in the template validation flow, but it is not the same as a manuscript-specific exact-margin enforcement stack.
Opt-in second-phase check:
python .\scripts\audit_dissertation_margin_exact.pyThis audit checks the rendered PDF only, with policy values in inches, for:
- the shipped template's exact opener-family top positions across committee, title, abstract, dedication, acknowledgements, TOC, list, chapter, appendix, references, and VITA pages
- the title-page spacer family and chapter-opener internal gap family
- the first appendix divider centering, if present
- bottom-centered numbered-page footers under a tighter exact range than the baseline structural audit
Policy lives in refs/editorial_audit/dissertation_margin_exact_policy.yml.
This lane is intentionally separate from the baseline template CI contract: use
it when you want a manuscript-specific or release-closeout exact-margin pass
after the generic compliance baseline is already green.
UTC requires Times New Roman or Calibri (11 or 12 pt) for document text.
Primary check:
python .\scripts\check_dissertation_fonts.pyThis audit verifies embedded rendered PDF font families against the policy in
refs/editorial_audit/dissertation_font_policy.yml.
Manual spot-check after the script still makes sense:
- "Document Properties -> Fonts" shows Times New Roman or Calibri embedded for body text.
- Small exceptions may exist for math or monospace code, but the main body font should comply.
CI note:
- GitHub Actions uses a compile-only Linux fallback font (
TeX Gyre Termes) because the runner does not ship Times New Roman or Calibri. - The CI workflow therefore uses the CI-specific policy file
refs/editorial_audit/dissertation_font_policy_ci.yml. - Local/final dissertation compliance still uses the default policy and UTC's approved fonts.
Recommended setup:
- Install Zotero.
- Install Better BibTeX for Zotero.
- Create a single library collection for your dissertation sources.
- Set Better BibTeX to automatically export to a
.bibfile tracked in this repo (e.g.,citations.bib).
Tips:
- Use citation keys that are stable and human-readable (e.g.,
Ramm2005LeastSquares). - Avoid editing the exported
.bibby hand when possible; make corrections in Zotero and re-export.
A common structure (adjust to your project):
Dissertation_Main.tex
chapters/
ch01_intro.tex
ch02_lit_review.tex
ch03_methodology.tex
ch04_results.tex
ch05_discussion.tex
ch06_conclusion.tex
ch07_future_work.tex
figures/
tables/
citations.bib
Chapters are included from Dissertation_Main.tex via
\include{chapters/<file>} so the main file stays lean and merge-friendly.
Use small feature branches and merge into main:
git switch -c <branch-name>
# edit files
git add <files>
git commit -m "format: <what changed>"
git push -u origin <branch-name>Then merge into main (either via PR on GitHub or via CLI).
This repository is licensed under the MIT License. See LICENSE.
- Existing CI and Markdown lint workflows now use workflow-level concurrency and
merge_grouptriggers so required checks stay stable on PRs and merge queues. - Dependency review runs by default on public repos with
.github/workflows/dependency-review.yml. - Private copies can enable the same dependency review lane after GitHub Code
Security or GHAS is available by setting
ENABLE_DEPENDENCY_REVIEW=true.
- Formatting rules come from UTC Graduate School standards; when in doubt, follow the standards over LaTeX defaults.
- Keep changes incremental; recompile frequently.
- When the workflow changes (compile command, branch flow, toggle names),
update
README.mdin the same commit/PR.