Ver código fonte

initial

master
Jeremy Theler 7 anos atrás
commit
bb71aca71a
8 arquivos alterados com 637 adições e 0 exclusões
  1. +20
    -0
      .gitignore
  2. +2
    -0
      clean.sh
  3. +7
    -0
      header.m4
  4. +82
    -0
      light.html
  5. +352
    -0
      light.tex
  6. BIN
      logo.pdf
  7. +137
    -0
      make.sh
  8. +37
    -0
      markplex.md

+ 20
- 0
.gitignore Ver arquivo

@@ -0,0 +1,20 @@
hash.yaml
*.aux
*.log
*.out
problem.ppl
M_*.*
MB_*.*
pipe-*.png
sigma*.*
ur.*
*-vs-*.*
convergencia.html
convergencia.tex
convergencia.pdf
tenaris-adjunto.html
tenaris-adjunto.tex
tenaris-adjunto.pdf
markplex.html
markplex.tex
markplex.pdf

+ 2
- 0
clean.sh Ver arquivo

@@ -0,0 +1,2 @@
# from https://stackoverflow.com/questions/13541615/how-to-remove-files-that-are-listed-in-the-gitignore-but-still-on-the-repositor
cat .gitignore | sed '/^#.*/ d' | sed '/^\s*$/ d' | sed 's/^/rm -rf /' | bash

+ 7
- 0
header.m4 Ver arquivo

@@ -0,0 +1,7 @@
divert(`-1')
changequote(`[[', `]]')
# forloop(var, from, to, stmt) - simple version
define([[forloop]], [[pushdef([[$1]], [[$2]])_forloop($@)popdef([[$1]])]])
define([[_forloop]],
[[$4[[]]ifelse($1, [[$3]], [[]], [[define([[$1]], incr($1))$0($@)]])]])
divert[[]]dnl

+ 82
- 0
light.html Ver arquivo

@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
$for(author-meta)$
<meta name="author" content="$author-meta$" />
$endfor$
$if(date-meta)$
<meta name="dcterms.date" content="$date-meta$" />
$endif$
$if(keywords)$
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
$endif$
<title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
<link type="text/css" rel="stylesheet" href="css/normalize.css">
<link type="text/css" rel="stylesheet" href="css/skeleton.css">
<link type="text/css" rel="stylesheet" href="css/style.css" />
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
$if(quotes)$
q { quotes: "“" "”" "‘" "’"; }
$endif$
</style>
$if(highlighting-css)$
<style type="text/css">
$highlighting-css$
</style>
$endif$
$for(css)$
<link rel="stylesheet" href="$css$" />
$endfor$
$if(math)$
$math$
$endif$
$for(header-includes)$
$header-includes$
$endfor$
</head>
<body>
$for(include-before)$
$include-before$
$endfor$
<div class="container">
<div class="row">
$if(title)$
<header style="text-align: center" id="title-block-header">
<h1 class="title">$title$</h1>
$if(subtitle)$
<p class="subtitle">$subtitle$</p>
$endif$
$for(author)$
<p class="author">$author$</p>
$endfor$
$if(date)$
<p class="date">$date$</p>
$endif$
$if(abstract)$
<h3 style="text-center">Abstract</h3>
<blockquote>$abstract$</blockquote>
$endif$
</header>
<hr>
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
<h1>Table of Contents</h1>
$table-of-contents$
</nav>
$endif$
$body$
</div>
</div>
$for(include-after)$
$include-after$
$endfor$
</body>
</html>

+ 352
- 0
light.tex Ver arquivo

@@ -0,0 +1,352 @@
\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
\PassOptionsToPackage{hyphens}{url}
$if(colorlinks)$
\PassOptionsToPackage{usenames,dvipsnames}{color}
$endif$
%
\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(papersize)$$papersize$paper,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$}
$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$else$
\usepackage{lmodern}
$endif$
$if(linestretch)$
\usepackage{setspace}
\setstretch{$linestretch$}
$endif$
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
$if(euro)$
\usepackage{eurosym}
$endif$
\else % if luatex or xelatex
$if(mathspec)$
\ifxetex
\usepackage{mathspec}
\else
\usepackage{unicode-math}
\fi
$else$
\usepackage{unicode-math}
$endif$
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
$for(fontfamilies)$
\newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$}
$endfor$
$if(euro)$
\newcommand{\euro}{€}
$endif$
$if(mainfont)$
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
$else$
\setmainfont{LinLibertineO}
$endif$
$if(sansfont)$
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
$else$
\setsansfont{Carlito}
$endif$
$if(monofont)$
\setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]{$monofont$}
$else$
\setmonofont[Mapping=tex-ansi]{DejaVuSansMono}
$endif$
$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
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(indent)$
$else$
% \IfFileExists{parskip.sty}{%
% \usepackage{parskip}
% }{% else
% \setlength{\parindent}{0pt}
% \setlength{\parskip}{6pt plus 2pt minus 1pt}
% }
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
\usepackage{hyperref}
\hypersetup{
$if(title-meta)$
pdftitle={$title-meta$},
$endif$
$if(author-meta)$
pdfauthor={$author-meta$},
$endif$
$if(keywords)$
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
$endif$
$if(colorlinks)$
colorlinks=true,
linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$,
citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$,
urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$,
$else$
pdfborder={0 0 0},
$endif$
breaklinks=true}
% \urlstyle{same} % don't use monospace font for urls
$if(verbatim-in-note)$
\VerbatimFootnotes % allows verbatim text in footnotes
$endif$
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$else$
\usepackage{geometry}
\geometry{paper=a4paper, left=2.5cm, right=2cm, bottom=3.5cm, foot=2cm, top=3.5cm, head=2cm}
$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(listings)$
\usepackage{listings}
\usepackage{xcolor}
\input{syntax.tex}
\newcommand{\passthrough}[1]{#1}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(tables)$
\usepackage{longtable,booktabs}
% Fix footnotes in tables (requires footnote package)
\IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{longtable}}{}
$endif$

\usepackage{graphicx,grffile}
\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}


% SIunits
\usepackage{siunitx}
% vectors done right
\renewcommand{\vec}[1]{\ensuremath\mathbf{#1}}


% headers y footers a medida
\usepackage{lastpage}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all header and footer fields
$if(title)$
\lhead{$title$}
$endif$
\lfoot{\scriptsize{$if(date)$ $date$ $endif$ / $if(hash)$ \texttt{$hash$} $endif$}}
\rfoot{\thepage/\pageref{LastPage}}
\rhead{\includegraphics[height=10pt]{logo}}
\renewcommand{\headrulewidth}{0.0pt}
\renewcommand{\footrulewidth}{0.4pt}

\fancypagestyle{plain}{%
\fancyhf{} % clear all header and footer fields
$if(hash)$
% \lhead{\scriptsize{\texttt{$hash$}}}
\rfoot{\scriptsize{\texttt{$hash$}}}
$endif$
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}

$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(strikeout)$
\usepackage[normalem]{ulem}
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
$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}{0}
$endif$
$if(subparagraph)$
$else$
% Redefines (sub)paragraphs to behave more like sections
\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$
$if(lang)$
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
$if(babel-newcommands)$
$babel-newcommands$
$endif$
\else
% load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic)
\usepackage{polyglossia}
\setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$}
$for(polyglossia-otherlangs)$
\setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
$endfor$
\fi
$endif$
$if(dir)$
\ifxetex
% load bidi as late as possible as it modifies e.g. graphicx
$if(latex-dir-rtl)$
\usepackage[RTLdocument]{bidi}
$else$
\usepackage{bidi}
$endif$
\fi
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\TeXXeTstate=1
\newcommand{\RL}[1]{\beginR #1\endR}
\newcommand{\LR}[1]{\beginL #1\endL}
\newenvironment{RTL}{\beginR}{\endR}
\newenvironment{LTR}{\beginL}{\endL}
\fi
$endif$

\usepackage{subfig}

% set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother

$for(header-includes)$
$header-includes$
$endfor$

$if(title)$
\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
$endif$
$if(subtitle)$
\providecommand{\subtitle}[1]{}
\subtitle{$subtitle$}
$endif$
$if(author)$
\author{$for(author)$$author$$sep$ \and $endfor$}
$endif$
$if(institute)$
\providecommand{\institute}[1]{}
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
$endif$
\date{$date$}

\begin{document}
% \thispagestyle{empty}
% \thispagestyle{plain}
\thispagestyle{fancy}

$if(title)$
\maketitle
$endif$
$if(abstract)$
\begin{abstract}
$abstract$
\end{abstract}
$endif$

$for(include-before)$
$include-before$

$endfor$
$if(toc)$
{
$if(colorlinks)$
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$black$endif$}
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
}
$endif$
$if(lot)$
\listoftables
$endif$
$if(lof)$
\listoffigures
$endif$
$body$

$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(book-class)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}

$endif$
$endif$
$if(biblatex)$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$

$endif$
$for(include-after)$
$include-after$

$endfor$
\end{document}

BIN
logo.pdf Ver arquivo


+ 137
- 0
make.sh Ver arquivo

@@ -0,0 +1,137 @@
#!/bin/bash


for i in m4 pandoc xelatex locale grep wc; do
if [ -z "`which $i`" ]; then
echo "error: $i is not installed"
exit 1
fi
done

# TODO: arg $1 da el formato, i.e. ./make.sh docx

# the document name is the current directory name
name=`basename $PWD`
if [ ! -e ${name}.md ]; then
echo "error: ${name}.md does not exist"
exit 1
fi

# get the date right
language=`grep lang ${name}.md | awk -F: '{print $2}' | sed s/-/_/`
LC=`locale -a | grep $language | head -n1`
if [ -z "$LC" ]; then
echo "error: locale for language $language is not installed, run"
echo "dpkg-reconfigure locales"
echo "or equivalent (or change the document's language)"
exit 1
fi

# see how we are supposed to write the date, but
# replace %m with %b to get a string for the month
dateformat=`LC_ALL=${LC} locale d_fmt | sed s/m/b/`
currentdate=`LC_ALL=${LC} date +${dateformat}`
currentdateedtf=`LC_ALL=${LC} date +%Y-%m-%d`

# read the template name from the md's yaml, otherwise default to light
template=`grep template ${name}.md | awk -F': ' '{print $2}'`
if [ -z "$template" ]; then
template=light
fi

# read the formats from the md's yaml
formats=`grep formats ${name}.md | awk -F': ' '{print $2}'`


branch=`git rev-parse --abbrev-ref HEAD`
dochash=`git rev-parse --short HEAD`

if [ -e "baserev" ]; then
basehash=`cat baserev`
else
basehash=`git rev-parse HEAD`
fi

headepoch=`git log -1 --format="%ct"`
headdate=`LC_ALL=${DATELC} date -d@${headepoch} +${dateformat}`
headdateedtf=`LC_ALL=${DATELC} date -d@${headepoch} +%Y-%m-%d`

tag=`git tag --sort=-version:refname | head -n1`

if [ -z "${tag}" ]; then
revision="DRAFT"
docver=`git rev-list ${basehash}..HEAD | wc -l`
else
revision=${tag}
docver=`git rev-list ${tag}..HEAD | wc -l`
fi

if [ ${docver} -ne 0 ]; then
revision="${revision}${docver}"
fi

hash=`git rev-parse --short HEAD`

# hook-pre
if [ -e hook-pre.sh ]; then
./hook-pre.sh
if [ $? != 0 ]; then
echo "hook-pre.sh failed!"
exit 1
fi
fi


# if the current working tree is not clean, we add a "+"
# (should be $\epsilon$, but it would screw the file name),
# set the date to today and change the author to the current user,
# as it is the most probable scenario
if [ -z "`git status --porcelain`" ]; then
date=${headdate}
dateedtf=${headdateedtf}
else
dochash="${hash}+$\epsilon$"
revision="${revision}+"
date=${currentdate}
dateedtf=${currentdateedtf}
fi




cat << EOF > hash.yaml
---
hash: ${dochash}
rev: ${revision}
date: ${date}
...
EOF

for format in ${formats}; do

echo "md -> ${format}"
vector_format="pdf"
flags="--number-sections"
if [[ "${format}" == "pdf" ]] || [[ "${format}" == "tex" ]]; then
template_file="${template}.tex"
flags="${flags} --listings --pdf-engine=xelatex"
elif [[ "${format}" == "html" ]]; then
template_file="${template}.html"
flags="${flags} --mathjax"
vector_format="svg"
else
template_file="${template}.${format}"
fi

if [ -e "${template_file}" ]; then
template_spec="--template $template_file"
fi
m4 -Dvector_format=${vector_format} header.m4 ${name}.md hash.yaml |\
pandoc -s ${flags} ${template_spec} --filter pandoc-crossref -o ${name}.${format} || exit 1

if [ -z "`git check-ignore ${name}.${format}`" ]; then
echo ${name}.${format} >> .gitignore
fi
done

+ 37
- 0
markplex.md Ver arquivo

@@ -0,0 +1,37 @@
---
title: A fancy title
subtitle: An optional subtitle
author: Jeremy Theler
fontsize: 11pt
lang: en
numbersections: true
formats: html tex pdf
template: light
...

# Why

Because the generation of documentation is completely creepy using traditional (i.e. word processors).

# How

Write in Markdown. Track with Git. Read in

* HTML
* PDF (through XeTeX)
* $\dots$ (whatever Pandoc converts to)
# What

## Markdown

Focus on the content. Use headers, lists, tables (through Pandoc extension), etc.

## Git

Track changes. Collaborate. Get the hash of the latest commit into the resulting document.

## Advaced tweaks

Actually M4 macros can be expanded, Bash hooks can be executed, Pandoc filters can be used and templates can be fully customized.


Carregando…
Cancelar
Salvar