Git Product home page Git Product logo

cookie-cutter-latex-book-manuscript's Introduction

cookie-cutter-latex-book-manuscript

An example book manuscript in latex with chapters, word count stats by chapter, a bibliography, support for figures, and export to Microsoft Word format via pandoc.

The idea is to keep the manuscript as simple as possible, but no simpler.

Exports to MS Word include citations and chapter hyerlinks but do not retain citation hyperlinks or cited-on page numbers in the bibliography.

How to use

  1. git clone the repo
  2. Make sure you have python, pandoc, pandoc-crossref, and a tex distribution installed
  3. To do the word count, run python scripts/word_count.py
  4. To export the latex to word, run chmod +x scripts/ms_to_word followed by ./scripts/ms_to_word.sh

LaTeX manuscript

I am indebted to John Bissell, discoverer of the eponymous instability, for the original latex template that, heavily modified, is used here.

It provides a title page, chapters, references, and double-sided A4 text.

It is not the most pretty book latex template out there - and that's entirely on purpose. The idea is to produce something useful for editing, not for publishing. So the latex is stripped down to the minimum that will happily be exported to Word or other formats, ignoring all but the most essential bells and whistles (like citations).

Chapter-by-chapter word count

It may seem like overkill to have a python script to do a tex word count. However, to get chapter-by-chapter stats, this seemed like the cleanest way, and could easily be extended to incldue some nicer visualisations.

The python script will automatically populate book_word_stats.html, a table of progress toward writing target by chapter and in total.

The number of chapters is detected based on the number of *.tex files in chapters/ but the overall number of words is set within the script.

Automated pre-commit word count

If you'd like to automate the word count, this is possible using pre-commit git hooks. This section explains how.

All git repos come with a hidden directory .git/hooks/. Within that folder there are some example scripts. Open the pre-commit hook named pre-commit.sample and replace the contents with:

#!/bin/sh
python scripts/word_count.py

Exporting to Microsoft Word

Run chmod +x scripts/ms_to_word followed by ./scripts/ms_to_word.sh. This calls the magic line:

pandoc -s -N --toc --toc-depth=1 --reference-doc ref.docx --citeproc -Mchapters book_compiler.tex --bibliography=book_bibliography.bib --csl=cookie-cutter-latex-book.csl -o exported_word/book.docx

  • -s tells pandoc to make a standalone document
  • -N enforces numbering (though not in docx, it's included here in case of other output formats being used)
  • --reference-doc tells pandoc to use styles from a reference word doc (can also be used with .odt)
  • --citeproc calls a pandoc filter for references, citeproc
  • -Mchapters tells this filter to use chapters
  • *.tex is the input file
  • --bibliography=*.bib tells pandoc where to find citations
  • --csl=*.csl is the name of the style file for citations
  • -o means output, in this case a word document

Improvements

Have an improvement? Get in touch!

cookie-cutter-latex-book-manuscript's People

Contributors

aeturrell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cookie-cutter-latex-book-manuscript's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.