a series of updates to the mako-mem template
authorBenjamin Mako Hill <mako@atdot.cc>
Tue, 29 Dec 2015 21:21:14 +0000 (13:21 -0800)
committerBenjamin Mako Hill <mako@atdot.cc>
Tue, 29 Dec 2015 21:21:14 +0000 (13:21 -0800)
- Padded right/left margins to decrease line length based on research into
  general typographic standards.
- Shrunk linespacing to decrease line-spacing to bring this in line with
  general typographic standards.
- Added comments explaining the changes and basic typographic decisions.
- Renamed some variables to make it more clear about the relationships between
  pagestyles.
- Added the vc-git and vc-awk scripts into the repository so folks don't have
  to go hunting for them.
- Made VC stuff generated by default in Makefile.
- Increased the amount of sample text so we can actually see the effects on
  full pages of text.

paper_template/Makefile
paper_template/mako-mem.sty
paper_template/resources/vc-git [new file with mode: 0755]
paper_template/resources/vc-git.awk [new file with mode: 0644]
paper_template/text.tex

index f03bafe..05b7746 100644 (file)
@@ -12,7 +12,7 @@ refs-processed.bib:
        perl -0pe 's/,\s+(file|abstract) = \{.*?\}(,\n|\n)/\2/sg' refs-processed.bib |sponge refs-processed.bib
        recode -d u8..ltex < refs-processed.bib | sponge refs-processed.bib
 
-%.pdf: %.tex refs-processed.bib
+%.pdf: %.tex refs-processed.bib vc
        latexmk -f -pdf $<
 
 clean: 
@@ -28,7 +28,7 @@ viewpdf: all
        evince *.pdf
 
 vc:
-       vc-git
+       resources/vc-git
 
 pdf: all
 
index e453b01..5f80e40 100644 (file)
 
 %%% version control info in footers; requires vc package 
 % Make the style for vc-git revision control headers and footers
-\makepagestyle{kjhgit}
-\newcommand{\@kjhgitmarks}{%
+\makepagestyle{mako-mem-git}
+\newcommand{\@gitmarks}{%
   \let\@mkboth\markboth
   \def\chaptermark##1{%
     \markboth{%
   \def\sectionmark##1{%
     \markright{##1}}
 }
-\makepsmarks{kjhgit}{\@kjhgitmarks}
-\makeevenhead{kjhgit}{}{}{\scshape\thepage}
-\makeoddhead{kjhgit}{}{}{\scshape\thepage}
-\makeevenfoot{kjhgit}{}{\texttt{\footnotesize{\textcolor{Blue}{git revision \VCRevision\ on \VCDateTEX}}}}{}
-\makeoddfoot{kjhgit}{}{\texttt{\footnotesize \textcolor{Blue}{git revision \VCRevision\ on \VCDateTEX}}}{}
+\makepsmarks{mako-mem-git}{\@gitmarks}
+\makeevenhead{mako-mem-git}{}{}{\scshape\thepage}
+\makeoddhead{mako-mem-git}{}{}{\scshape\thepage}
+\makeevenfoot{mako-mem-git}{}{\texttt{\footnotesize{\textcolor{Blue}{git revision \VCRevision\ on \VCDateTEX}}}}{}
+\makeoddfoot{mako-mem-git}{}{\texttt{\footnotesize \textcolor{Blue}{git revision \VCRevision\ on \VCDateTEX}}}{}
 
 %% Create a command to make a note at the top of the first page describing the
 %% publication status of the paper. 
diff --git a/paper_template/resources/vc-git b/paper_template/resources/vc-git
new file mode 100755 (executable)
index 0000000..557a573
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+# This is file 'vc' from the vc bundle for TeX.
+# The original file can be found at CTAN:support/vc.
+# This file is Public Domain.
+
+# Parse command line options.
+full=0
+mod=0
+while [ -n "$(echo $1 | grep '-')" ]; do
+    case $1 in 
+       -f ) full=1 ;;
+       -m ) mod=1 ;;
+       *  ) echo 'usage: vc [-f] [-m]'
+            exit 1
+    esac
+    shift
+done
+# English locale.
+LC_ALL=C
+git --no-pager log -1 HEAD --pretty=format:"Hash: %H%nAbr. Hash: %h%nParent Hashes: %P%nAbr. Parent Hashes: %p%nAuthor Name: %an%nAuthor Email: %ae%nAuthor Date: %ai%nCommitter Name: %cn%nCommitter Email: %ce%nCommitter Date: %ci%n" |gawk -v script=log -v full=$full -f ~/bin/vc-git.awk > vc
+if [ "$mod" = 1 ]
+then
+  git status |gawk -v script=status -f ~/bin/vc-git.awk >> vc
+fi
diff --git a/paper_template/resources/vc-git.awk b/paper_template/resources/vc-git.awk
new file mode 100644 (file)
index 0000000..66b3526
--- /dev/null
@@ -0,0 +1,89 @@
+# This is file 'vc-git.awk' from the vc bundle for TeX.
+# The original file can be found at CTAN:support/vc.
+# This file is Public Domain.
+BEGIN {
+               
+### Process output of "git status".
+               if (script=="status") {
+                               modified = 0
+               }
+
+}
+
+
+
+### Process output of "git log".
+script=="log" && /^Hash:/ { Hash = substr($0, 2+match($0, ":")) }
+script=="log" && /^Abr. Hash:/ { AbrHash = substr($0, 2+match($0, ":")) }
+script=="log" && /^Parent Hashes:/ { ParentHashes = substr($0, 2+match($0, ":")) }
+script=="log" && /^Abr. Parent Hashes:/ { AbrParentHashes = substr($0, 2+match($0, ":")) }
+script=="log" && /^Author Name:/ { AuthorName = substr($0, 2+match($0, ":")) }
+script=="log" && /^Author Email:/ { AuthorEmail = substr($0, 2+match($0, ":")) }
+script=="log" && /^Author Date:/ { AuthorDate = substr($0, 2+match($0, ":")) }
+script=="log" && /^Committer Name:/ { CommitterName = substr($0, 2+match($0, ":")) }
+script=="log" && /^Committer Email:/ { CommitterEmail = substr($0, 2+match($0, ":")) }
+script=="log" && /^Committer Date:/ { CommitterDate = substr($0, 2+match($0, ":")) }
+
+### Process output of "git status".
+### Changed index?
+script=="status" && /^# Changes to be committed:/ { modified = 1 }
+### Unstaged modifications?
+script=="status" && /^# Changed but not updated:/ { modified = 2 }
+
+
+
+END {
+               
+### Process output of "git log".
+               if (script=="log") {
+### Standard encoding is UTF-8.
+                               if (Encoding == "") Encoding = "UTF-8"
+### Extract relevant information from variables.
+                               LongDate = substr(AuthorDate, 1, 25)
+        DateRAW = substr(LongDate, 1, 10)
+        DateISO = DateRAW
+        DateTEX = DateISO
+        gsub("-", "/", DateTEX)
+                               Time = substr(LongDate, 12, 14)
+### Write file identification to vc.tex.
+                               print "%%% This file has been generated by the vc bundle for TeX."
+                               print "%%% Do not edit this file!"
+                               print "%%%"
+### Write Git specific macros.
+                               print "%%% Define Git specific macros."
+                               print "\\gdef\\GITHash{" Hash "}%"
+                               print "\\gdef\\GITAbrHash{" AbrHash "}%"
+                               print "\\gdef\\GITParentHashes{" ParentHashes "}%"
+                               print "\\gdef\\GITAbrParentHashes{" AbrParentHashes "}%"
+                               print "\\gdef\\GITAuthorName{" AuthorName "}%"
+                               print "\\gdef\\GITAuthorEmail{" AuthorEmail "}%"
+                               print "\\gdef\\GITAuthorDate{" AuthorDate "}%"
+                               print "\\gdef\\GITCommitterName{" CommitterName "}%"
+                               print "\\gdef\\GITCommitterEmail{" CommitterEmail "}%"
+                               print "\\gdef\\GITCommitterDate{" CommitterDate "}%"
+### Write generic version control macros.
+                               print "%%% Define generic version control macros."
+                               print "\\gdef\\VCRevision{\\GITAbrHash}%"
+                               print "\\gdef\\VCAuthor{\\GITAuthorName}%"
+        print "\\gdef\\VCDateRAW{" DateRAW "}%"
+        print "\\gdef\\VCDateISO{" DateISO "}%"
+        print "\\gdef\\VCDateTEX{" DateTEX "}%"
+                               print "\\gdef\\VCTime{" Time "}%"
+                               print "\\gdef\\VCModifiedText{\\textcolor{red}{with local modifications!}}%"
+                               print "%%% Assume clean working copy."
+                               print "\\gdef\\VCModified{0}%"
+                               print "\\gdef\\VCRevisionMod{\\VCRevision}%"
+               }
+               
+### Process output of "git status".
+               if (script=="status") {
+                               print "%%% Is working copy modified?"
+                               print "\\gdef\\VCModified{" modified "}%"
+                               if (modified==0) {
+                                               print "\\gdef\\VCRevisionMod{\\VCRevision}%"
+                               } else {
+                                               print "\\gdef\\VCRevisionMod{\\VCRevision~\\VCModifiedText}%"
+                               }
+               }
+               
+}
index 53facf8..2ae4f95 100644 (file)
@@ -1,8 +1,11 @@
 \documentclass[12pt]{memoir}
 
-% based on kieran healy's memoir modifications
+% article-1 and article-2 styles were originally based on kieran healy's
+% templates
 \usepackage{mako-mem}
 \chapterstyle{article-2}
+
+% with article-3 \chapterstyle, change to: \pagestyle{memo}
 \pagestyle{mako-mem}
 
 \usepackage{ucs}
@@ -12,7 +15,7 @@
 \usepackage{textcomp}
 \usepackage[garamond]{mathdesign}
 
-\usepackage[letterpaper,left=1.2in,right=1.2in,top=1.2in,bottom=1.2in]{geometry}
+\usepackage[letterpaper,left=1.65in,right=1.65in,top=1.3in,bottom=1.2in]{geometry}
 
 % packages i use in essentially every document
 \usepackage{graphicx}
 % memoir function to take out of the space out of the whitespace lists
 \firmlists
 
-% import vc stuff after running `make vc`: \input{vc} \pagestyle{kjhgit}
+% LATEX NOTE: these lines will import vc stuff after running `make vc` which
+% will add version control information to the bottom of each page. This can be
+% useful for keeping track of which version of a document somebody has:
+% \input{vc}
+% \pagestyle{mako-mem-git}
 
 \begin{document}
 
 \setlength{\parskip}{4.5pt}
-\baselineskip 18.5pt
+% LATEX NOTE: Ideal linespacing is usually said to be between 120-140% the
+% typeface size. So, for 12pt (default in this document, we're looking for
+% somewhere between a 14.4-17.4pt \baselineskip.  Single; 1.5 lines; and Double
+% in MSWord are equivalent to ~117%, 175%, and 233%.
+
+\baselineskip 16pt
 
 \title{Title}
 \author{Benjamin Mako Hill\\
         \href{mailto:makohill@uw.edu}{makohill@uw.edu}}
 \date{}
 
-\published{\textsc{\textcolor{BrickRed}{This document is an
-% unpublished draft.\\ Please do not distribute or cite without
-% permission.}}}
+\published{\textsc{\textcolor{BrickRed}{This document is an
+  unpublished draft.\\ Please do not distribute or cite without
+  permission.}}}
 
 \maketitle
 
@@ -68,6 +80,31 @@ fox jumps over the lazy dog.
 
 \section{Section}
 
+% LATEX NOTE: This alphabet below is here so we can measure the line-length of
+% different layouts.  Typesetters suggest that an average line-length of
+% between 45-90 characters and a rule of thumb for typesetting is that you
+% should be able to fit between 2-3 alphabets on one line.  Generally speaking,
+% the shorter the line length, the better -- and the smaller the linespacing
+% can become.  The following line is 3 alphabets (73 characters). 
+
+abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
+
+The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
+over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
+quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
+the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick
+brown fox jumps over the lazy dog.  The quick brown fox jumps over the
+lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
+fox jumps over the lazy dog \citep{989866}.
+
+The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
+over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
+quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
+the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick
+brown fox jumps over the lazy dog.  The quick brown fox jumps over the
+lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
+fox jumps over the lazy dog \citep{989866}.
+
 The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
 over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
 quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
@@ -76,6 +113,53 @@ brown fox jumps over the lazy dog.  The quick brown fox jumps over the
 lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
 fox jumps over the lazy dog \citep{989866}.
 
+The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
+over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
+quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
+the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick
+brown fox jumps over the lazy dog.  The quick brown fox jumps over the
+lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
+fox jumps over the lazy dog \citep{989866}.
+
+The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
+over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
+quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
+the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick
+brown fox jumps over the lazy dog.  The quick brown fox jumps over the
+lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
+fox jumps over the lazy dog \citep{989866}.
+
+The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
+over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
+quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
+the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick
+brown fox jumps over the lazy dog.  The quick brown fox jumps over the
+lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
+fox jumps over the lazy dog \citep{989866}.
+
+The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
+over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
+quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
+the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick
+brown fox jumps over the lazy dog.  The quick brown fox jumps over the
+lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
+fox jumps over the lazy dog \citep{989866}.
+
+The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
+over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
+quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
+the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick
+brown fox jumps over the lazy dog.  The quick brown fox jumps over the
+lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
+fox jumps over the lazy dog \citep{989866}.
+
+The quick brown fox jumps over the lazy dog.  The quick brown fox jumps
+over the lazy dog.  The quick brown fox jumps over the lazy dog.  The
+quick brown fox jumps over the lazy dog.  The quick brown fox jumps over
+the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick
+brown fox jumps over the lazy dog.  The quick brown fox jumps over the
+lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown
+fox jumps over the lazy dog \citep{989866}.
 
 % bibliography here
 \renewcommand{\bibsection}{\section{\bibname}\prebibhook}

Community Data Science Collective || Want to submit a patch?