diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..764699e --- /dev/null +++ b/Makefile @@ -0,0 +1,90 @@ +# This is the Makefile +# +# 4/2/18, PH + +# project name +PROJ = org-mode-poster + +##################################### +# Usually no edits below this line +##################################### +# Output directory + +# Source directory +SRC = src + +# External +EXT = ext + +# directory for additional pdf files +LIB = lib + +POSTER = $(SRC)/$(PROJ)_poster.pdf + +# executables +RM = rm -Rf +TEX = xelatex -interaction nonstopmode -shell-escape +BIBTEX = bibtex +EMACSINIT = $(EXT)/$(PROJ)_dotemacs +EMACS = emacs -l ../$(EMACSINIT) +EMACSMSARGS = --batch -f org-latex-export-to-latex --kill +EMACSPARGS = --batch -f org-beamer-export-to-latex --kill +VIEWBIN = pdfview +PDFMERGEBIN = ext/pdfmerge +CPBIN = cp +MKDIRBIN = mkdir + +# list org files +ORGFILES = $(SRC)/$(PROJ)_poster.org + +# list tex files +TEXFILES = $(ORGFILES:$(SRC)/$(PROJ)_poster.org=$(SRC)/$(PROJ)_poster.tex) + + +# list additional library files +PDFLIB = $(wildcard $(LIB)/$(PROJ)*.*) + +# indicator files to show tex has run +TEXOUTFILES = $(TEXFILES:$(SRC)/%.tex=$(SRC)/%.aux) + +# replace tex with pdf to get pdf tex files +PDFTEXFILES = $(TEXOUTFILES:$(SRC)/%.aux=$(SRC)/%.pdf) + +# Rule for $(TEXFILES) +# Convert every org file to LaTeX this is done from within the subfolder +# so be careful with relative paths +$(SRC)/%.tex: $(SRC)/%.org $(PDFLIB) $(SRC)/beamerthemeph.sty + @if [ "$(notdir $<)" = "$(PROJ)_poster.org" ]; then \ + echo "Exporting poster from org to LaTeX" \ + && cd $(SRC) && $(EMACS) $(PROJ)_poster.org $(EMACSPARGS); \ + fi + +# Rule for $(TEXOUTFILES) +# Run every tex file this is done from within the subfolder so be +# careful with relative paths +$(SRC)/%.aux: $(SRC)/%.tex $(PDFLIB) + cd $(SRC) && $(TEX) $(notdir $<) + cd $(SRC) && $(TEX) $(notdir $<) + +# Default entry +all: poster + +# make poster +poster: tex + +# run tex files +tex: $(TEXOUTFILES) $(TEXFILES) + +viewposter: poster + pdfview $(POSTER) + +.PHONY: clean texclean Rclean + +clean: texclean + +texclean: + $(RM) $(TEXOUT)/$(PROJ)*.tex + $(RM) $(TEXOUT)/$(PROJ)*.aux + +test: + @echo $(POSTER) $(TEXFILES) $(ORGFILES) diff --git a/ext/org-mode-poster_dotemacs b/ext/org-mode-poster_dotemacs new file mode 100644 index 0000000..02c9d50 --- /dev/null +++ b/ext/org-mode-poster_dotemacs @@ -0,0 +1,225 @@ +;; This is the .emacs configuration file +;; Large parts of this have been copied from other people +;; PH, 12/1/16 +;;---------------------------------------------------------------------- +;; Global +;;---------------------------------------------------------------------- +;; get rid of yes or no +(fset 'yes-or-no-p 'y-or-n-p) + +;; package archives +(require 'package) +(add-to-list 'package-archives + '("org" . "http://orgmode.org/elpa/")) +(add-to-list 'package-archives + '("melpa" . "http://melpa.org/packages/")) +(add-to-list 'package-archives + '("melpa-stable" . "http://stable.melpa.org/packages/")) +(setq package-enable-at-startup nil) +(package-initialize) + +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + +(setq use-package-verbose t) +(setq use-package-always-ensure t) + +(eval-when-compile (require 'use-package)) +(setq default-fill-column 72) + +;; Tell emacs where is your personal elisp lib dir +;(add-to-list 'load-path "~/.emacs.d/lisp/") + +;(add-to-list 'load-path "~/.emacs.d/lisp/") +;; keyboard binding to replace M-x +(global-set-key "\C-x\C-m" 'execute-extended-command) +(global-set-key "\C-c\C-m" 'execute-extended-command) +;;---------------------------------------------------------------------- +;; org mode +;;---------------------------------------------------------------------- +;; remove comments from org document for use with export hook +;; https://emacs.stackexchange.com/questions/22574/orgmode-export-how-to-prevent-a-new-line-for-comment-lines +(defun delete-org-comments (backend) +(loop for comment in (reverse (org-element-map + (org-element-parse-buffer) + 'comment 'identity)) + do + (setf (buffer-substring (org-element-property :begin comment) + (org-element-property :end comment)) + ""))) + +;; add to export hook +(add-hook 'org-export-before-processing-hook 'delete-org-comments) +;;---------------------------------------------------------------------- +;; ess +;;---------------------------------------------------------------------- +(require 'ess) +(require 'ess-site) +(setq tab-width 2) +;(whitespace-mode t) + +; let ess not ask for starting directory +(setq ess-ask-for-ess-directory nil) +; disable auto complete (takes too long) +(setq ess-use-auto-complete nil) + +;(linum-mode t) +(add-hook 'ess-mode-hook + (lambda () + (whitespace-mode t) + (linum-mode t) + ; if you uncomment this and reload .emacs from within an R buffer, + ; it should work as a hack + (setq ess-indent-with-fancy-comments nil) + (setq ess-style nil))) +;;---------------------------------------------------------------------- +;; Org +;;---------------------------------------------------------------------- +(require 'org) +(require 'org-element) + +;; window setup +(setq org-agenda-restore-windows-after-quit t) +(setq org-agenda-skip-scheduled-if-done t) + +;; use ox-extra to ignore certain headings +(require 'ox-extra) +(ox-extras-activate '(ignore-headlines)) + +;; disable indenting +(require 'org-indent) +(org-indent-mode -1) + +;; we don't want raw inline calls to include a newline +;;(setq org-babel-inline-result-wrap "well, %s") + +;; indentation +(defun my-tab-related-stuff () +; (setq indent-tabs-mode t) +; (setq tab-stop-list (number-sequence 4 200 4)) +; (setq default-tab-width 2) + (setq tab-width 2)) +; (setq indent-line-function 'insert-tab)) +(add-hook 'org-mode-hook 'my-tab-related-stuff) + +;; inline results wrapping +(setq org-babel-inline-result-wrap "%s") + +;; active Babel languages +(org-babel-do-load-languages + 'org-babel-load-languages + '((R . t) + (latex . t) + (dot . t) + (shell . t) + (ditaa . t) + )) + +;; we trust our own R code so we do not need to confirm +(defun my-org-confirm-babel-evaluate (lang body) + (not (string-match "[Rlatexdotditaashell]" lang ))) ; don't ask for R +(setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate) + +(require 'ox-latex) +;;; XeLaTeX customisations +;; remove "inputenc" from default packages as it clashes with xelatex +(setf org-latex-default-packages-alist + (remove '("AUTO" "inputenc" t) org-latex-default-packages-alist)) + +;(setq org-latex-pdf-process '("latexmk -pdf +; -pdflatex='xelatex -shell-escape -interaction nonstopmode' -bibtex -f %f ")) + (setq org-latex-pdf-process + '("latexmk -pdflatex='xelatex -interaction nonstopmode' -pdf -bibtex -f %f")) + + +;; avoid hypersetup +(setq org-latex-with-hyperref nil) + +;; latex templates +;\\usepackage[authoryear]{natbib} +(add-to-list 'org-latex-classes + '("myarticle" + "\\documentclass[12pt]{article} + \\usepackage[labelfont=bf]{caption} + \\usepackage{times} + [NO-DEFAULT-PACKAGES]" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + + +;; latex templates +(add-to-list 'org-latex-classes + '("mybeamerxl" + "\\documentclass[presentation,20pt]{beamer} + \\usetheme{default} + \\usepackage[authoryear]{natbib} + [NO-DEFAULT-PACKAGES]")) + + +(add-to-list 'org-latex-classes + '("mybeamerposter" + "\\documentclass[final]{beamer} + \\usetheme{ph} + \\usepackage[orientation=portrait,size=a0,scale=1.4]{beamerposter} + \\usepackage[absolute,overlay]{textpos} + \\usepackage[authoryear]{natbib} + [NO-DEFAULT-PACKAGES]")) + + +(add-to-list 'org-latex-classes + '("mybeamerm" + "\\documentclass[presentation]{beamer} + \\usetheme{default} + \\usepackage[authoryear]{natbib} + [NO-DEFAULT-PACKAGES]")) + + + +(add-to-list 'org-latex-classes + '("cv" + "\\documentclass[10pt]{extarticle} + \\usepackage[authoryear]{natbib} + [NO-DEFAULT-PACKAGES]")) + + +(setq org-latex-listings 'minted) +'(org-export-latex-listings-langs + (quote ((emacs-lisp "Lisp") + (lisp "Lisp") + (clojure "Lisp") + (c "C") + (cc "C++") + (fortran "fortran") + (perl "Perl") + (cperl "Perl") + (python "Python") + (ruby "Ruby") + (html "HTML") + (xml "XML") + (tex "TeX") + (latex "TeX") + (shell-script "bash") + (gnuplot "Gnuplot") + (ocaml "Caml") + (caml "Caml") + (sql "SQL") + (sqlite "sql") + (R-mode "R")))) + (setq org-latex-minted-options + '(("linenos=true") ("bgcolor=lightgray"))) + ; set timestamp format +;;---------------------------------------------------------------------- +;; bibtex +;;---------------------------------------------------------------------- +(require 'bibtex) +(require 'org-ref) +(require 'org-ref-pubmed) +(require 'org-ref-wos) +(require 'org-ref-scopus) +(setq reftex-default-bibliography '("master.bib")) +(setq org-ref-default-bibliography '("master.bib")) + diff --git a/ext/org-mode-poster_dotemacs~ b/ext/org-mode-poster_dotemacs~ new file mode 100644 index 0000000..12b5bf2 --- /dev/null +++ b/ext/org-mode-poster_dotemacs~ @@ -0,0 +1,163 @@ +;; This is the .emacs configuration file +;; Large parts of this have been copied from other people +;; PH, 12/1/16 +;;---------------------------------------------------------------------- +;; Global +;;---------------------------------------------------------------------- +;; get rid of yes or no +(fset 'yes-or-no-p 'y-or-n-p) + +;; package archives +(require 'package) +(add-to-list 'package-archives + '("org" . "http://orgmode.org/elpa/")) +(add-to-list 'package-archives + '("melpa" . "http://melpa.org/packages/")) +(add-to-list 'package-archives + '("melpa-stable" . "http://stable.melpa.org/packages/")) +(setq package-enable-at-startup nil) +(package-initialize) + +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + +(setq use-package-verbose t) +(setq use-package-always-ensure t) + +(eval-when-compile (require 'use-package)) +(setq default-fill-column 72) + +;; Tell emacs where is your personal elisp lib dir +;(add-to-list 'load-path "~/.emacs.d/lisp/") + +;(add-to-list 'load-path "~/.emacs.d/lisp/") +;; keyboard binding to replace M-x +(global-set-key "\C-x\C-m" 'execute-extended-command) +(global-set-key "\C-c\C-m" 'execute-extended-command) +;;---------------------------------------------------------------------- +;; org mode +;;---------------------------------------------------------------------- +;; remove comments from org document for use with export hook +;; https://emacs.stackexchange.com/questions/22574/orgmode-export-how-to-prevent-a-new-line-for-comment-lines +(defun delete-org-comments (backend) +(loop for comment in (reverse (org-element-map + (org-element-parse-buffer) + 'comment 'identity)) + do + (setf (buffer-substring (org-element-property :begin comment) + (org-element-property :end comment)) + ""))) + +;; add to export hook +(add-hook 'org-export-before-processing-hook 'delete-org-comments) +;;---------------------------------------------------------------------- +;; ess +;;---------------------------------------------------------------------- +(require 'ess) +(require 'ess-site) +(setq tab-width 2) +;(whitespace-mode t) + +; let ess not ask for starting directory +(setq ess-ask-for-ess-directory nil) +; disable auto complete (takes too long) +(setq ess-use-auto-complete nil) + +;(linum-mode t) +(add-hook 'ess-mode-hook + (lambda () + (whitespace-mode t) + (linum-mode t) + ; if you uncomment this and reload .emacs from within an R buffer, + ; it should work as a hack + (setq ess-indent-with-fancy-comments nil) + (setq ess-style nil))) +;;---------------------------------------------------------------------- +;; Org +;;---------------------------------------------------------------------- +(require 'org) +(require 'org-element) + +;; window setup +(setq org-agenda-restore-windows-after-quit t) +(setq org-agenda-skip-scheduled-if-done t) + +;; use ox-extra to ignore certain headings +(require 'ox-extra) +(ox-extras-activate '(ignore-headlines)) + +;; disable indenting +(require 'org-indent) +(org-indent-mode -1) + +;; we don't want raw inline calls to include a newline +;;(setq org-babel-inline-result-wrap "well, %s") + +;; indentation +(defun my-tab-related-stuff () +; (setq indent-tabs-mode t) +; (setq tab-stop-list (number-sequence 4 200 4)) +; (setq default-tab-width 2) + (setq tab-width 2)) +; (setq indent-line-function 'insert-tab)) +(add-hook 'org-mode-hook 'my-tab-related-stuff) + +;; inline results wrapping +(setq org-babel-inline-result-wrap "%s") + +;; active Babel languages +(org-babel-do-load-languages + 'org-babel-load-languages + '((R . t) + (latex . t) + (dot . t) + (shell . t) + (ditaa . t) + )) + +;; we trust our own R code so we do not need to confirm +(defun my-org-confirm-babel-evaluate (lang body) + (not (string-match "[Rlatexdotditaashell]" lang ))) ; don't ask for R +(setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate) + +(require 'ox-latex) +;;; XeLaTeX customisations +;; remove "inputenc" from default packages as it clashes with xelatex +(setf org-latex-default-packages-alist + (remove '("AUTO" "inputenc" t) org-latex-default-packages-alist)) + +;(setq org-latex-pdf-process '("latexmk -pdf +; -pdflatex='xelatex -shell-escape -interaction nonstopmode' -bibtex -f %f ")) + (setq org-latex-pdf-process + '("latexmk -pdflatex='xelatex -interaction nonstopmode' -pdf -bibtex -f %f")) + + +;; avoid hypersetup +(setq org-latex-with-hyperref nil) + +;; latex templates +;\\usepackage[authoryear]{natbib} +(add-to-list 'org-latex-classes + '("myarticle" + "\\documentclass[12pt]{article} + \\usepackage[labelfont=bf]{caption} + \\usepackage{times} + [NO-DEFAULT-PACKAGES]" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + +;;---------------------------------------------------------------------- +;; bibtex +;;---------------------------------------------------------------------- +(require 'bibtex) +(require 'org-ref) +(require 'org-ref-pubmed) +(require 'org-ref-wos) +(require 'org-ref-scopus) +(setq reftex-default-bibliography '("master.bib")) +(setq org-ref-default-bibliography '("master.bib")) + diff --git a/src/beamerthemeph.sty b/src/beamerthemeph.sty index 4cc70bd..317546d 100644 --- a/src/beamerthemeph.sty +++ b/src/beamerthemeph.sty @@ -111,7 +111,7 @@ % \centering \vskip7.6ex - \usebeamercolor{title in headline}{\color{fg}\textbf{\huge{\inserttitle}}\\[1ex]} + \usebeamercolor{title in headline}{\color{fg}\textbf{\Huge{\inserttitle}}\\[1ex]} \usebeamercolor{author in headline}{\color{fg}\large{\insertauthor}\\[1ex]} \vskip2.4ex \end{beamercolorbox} @@ -146,7 +146,7 @@ \begin{columns}[c,onlytextwidth] \column{.35\textwidth} %\begin{beamercolorbox}[leftskip=-0.5cm,wd=\columnwidth, ht=3cm]{logo} - \begin{beamercolorbox}[leftskip=-0.5cm,\columnwidth, ht=4cm]{logo} + \begin{beamercolorbox}[leftskip=-0.5cm,wd=\columnwidth, ht=4cm]{logo} \includegraphics[width=0.9\textwidth,right]{logo_feinstein.pdf} %\vskip1.6ex \end{beamercolorbox} @@ -169,10 +169,11 @@ \begin{tabular}{rllrll} - \textbf{Philipp Homan, MD, PhD} & & & & & \\ - phoman1@northwell.edu & & - \includegraphics[width=0.5in]{twitter.pdf} & @philipphoman & - \includegraphics[width=0.5in]{github.pdf} & github.com/philipphoman \\ + %\textbf{Philipp Homan, MD, PhD} & & & & & \\ + \textbf{\auth} & & & & & \\ + \authemail & & + \includegraphics[width=0.5in]{twitter.pdf} & \authtwitter & + \includegraphics[width=0.5in]{github.pdf} & \authgithub \\ \end{tabular} \vspace{-0.2ex} diff --git a/src/org-mode-poster_poster.org b/src/org-mode-poster_poster.org index 71e8818..5acc201 100644 --- a/src/org-mode-poster_poster.org +++ b/src/org-mode-poster_poster.org @@ -1,5 +1,5 @@ #+startup: beamer -#+TITLE: Using org-mode to produce scientific posters +#+TITLE: Using org-mode for scientific posters * Preamble :ignore: ** General comments :ignore: # ---------------------------------------------------------------------- @@ -8,9 +8,11 @@ # - Turn on dictionary by starting flyspell-mode # - Count words by section using org-wc-display # ---------------------------------------------------------------------- -** Specific comments for this manuscript :ignore: +** Specific comments for this manuscript :ignore: # ---------------------------------------------------------------------- -** org specific settings :ignore: +# This is a comment +# ---------------------------------------------------------------------- +** org specific settings :ignore: # ---------------------------------------------------------------------- #+OPTIONS: email:nil toc:nil num:nil author:nil date:t tex:t title:nil #+STARTUP: align fold @@ -20,7 +22,7 @@ #+EXCLUDE_TAGS: noexport TODO #+DATE: {{{time(%Y-%m-%d %H:%M)}}} # ---------------------------------------------------------------------- -** Latex header :ignore: +** Latex header :ignore: # ---------------------------------------------------------------------- #+LATEX_CLASS: mybeamerposter #+LATEX_HEADER: \setlength{\paperwidth}{36in} @@ -39,12 +41,16 @@ #+LATEX_HEADER: \newcommand{\Xoi}[1]{#1(i)} #+LATEX_HEADER: \newcommand{\frakPQ}[2]{\frac{\Xoi{#1}}{\Xoi{#2}}} #+LATEX_HEADER: \newcommand{\DKLPQ}[3]{D_{\mathrm{KL}}(#1 #3 #2)} +#+LATEX_HEADER: \newcommand{\auth}{Philipp Homan, MD, PhD} +#+LATEX_HEADER: \newcommand{\authemail}{phoman1@northwell.edu} +#+LATEX_HEADER: \newcommand{\authtwitter}{@philipphoman} +#+LATEX_HEADER: \newcommand{\authgithub}{github.com/philipphoman} #+LATEX_HEADER: \date{} # ---------------------------------------------------------------------- -** Authors and affiliations :ignore: +** Authors and affiliations :ignore: # ---------------------------------------------------------------------- #+LATEX_HEADER: \author{ -#+LATEX_HEADER: Philipp Homan$^{1}$, +#+LATEX_HEADER: Philipp Homan$^{1}$ #+LATEX_HEADER: \\ #+LATEX_HEADER: \normalsize{$^{1}$Department of Psychiatry,} #+LATEX_HEADER: \normalsize{The Donald and Barbara Zucker} @@ -52,7 +58,7 @@ #+LATEX_HEADER: \normalsize{Hempstead, NY} #+LATEX_HEADER: } # ---------------------------------------------------------------------- -** Buffer-wide source code blocks :ignore: +** Buffer-wide source code blocks :ignore: # ---------------------------------------------------------------------- # Set elisp variables need for nice formatting We want no new lines in # inline results and a paragraph size of 80 characters Important: this @@ -148,16 +154,16 @@ :PROPERTIES: :BEAMER_env: block :END: -- Org-mode is not only useful for producing blog posts and even - scientific manuscripts; it is also perfectly suitable to make +- Here we show how org-mode (version src_elisp{org-version} + {{{results(9.1.7)}}}) together with emacs (version + src_elisp{emacs-version} {{{results(25.2.2)}}}) can be used to make decent looking scientific posters -- We combine a relatively simple custom \LaTeX style file and common - org-mode syntax -- The nice thing about org-mode is that we can populate the poster with - code, graphs and numbers from inline code in languages such as R, - python, Matlab and even shell scripting -- Inline code would look like this, which will produce a graph - (Fig. [[figcode1]]): +- With org-mode we can populate the poster with code, graphs and numbers + from inline code in languages such as R, python, Matlab and even shell + scripting +- For example, this poster was created on {{{time(%Y-%m-%d %H:%M)}}} +- Inline code could look like this (which will produce a graph; + Fig. [[figcode1]]): **** Block :PROPERTIES: @@ -337,6 +343,6 @@ plot(d2, col="blue", lwd=3) :PROPERTIES: :BEAMER_env: block :END: -- This little example is meant to show how incredibly versatile - org-mode is +- This little example is meant to show how versatile org-mode is - Scientific posters can be produced with a simple text editor + diff --git a/src/org-mode-poster_poster.pdf b/src/org-mode-poster_poster.pdf index fd8bdfd..1f1450e 100644 Binary files a/src/org-mode-poster_poster.pdf and b/src/org-mode-poster_poster.pdf differ diff --git a/src/org-mode-poster_poster.tex b/src/org-mode-poster_poster.tex index 7ceddac..66184c2 100644 --- a/src/org-mode-poster_poster.tex +++ b/src/org-mode-poster_poster.tex @@ -1,4 +1,4 @@ -% Created 2018-04-02 Mon 22:17 +% Created 2018-04-03 Tue 15:36 % Intended LaTeX compiler: pdflatex \documentclass[final]{beamer} \usetheme{ph} @@ -23,9 +23,13 @@ \newcommand{\Xoi}[1]{#1(i)} \newcommand{\frakPQ}[2]{\frac{\Xoi{#1}}{\Xoi{#2}}} \newcommand{\DKLPQ}[3]{D_{\mathrm{KL}}(#1 #3 #2)} +\newcommand{\auth}{Philipp Homan, MD, PhD} +\newcommand{\authemail}{phoman1@northwell.edu} +\newcommand{\authtwitter}{@philipphoman} +\newcommand{\authgithub}{github.com/philipphoman} \date{} \author{ -Philipp Homan$^{1}$, +Philipp Homan$^{1}$ \\ \normalsize{$^{1}$Department of Psychiatry,} \normalsize{The Donald and Barbara Zucker} @@ -33,25 +37,25 @@ Philipp Homan$^{1}$, \normalsize{Hempstead, NY} } \usetheme{default} -\date{2018-04-02 22:17} -\title{Using org-mode to produce scientific posters} +\date{2018-04-03 15:35} +\title{Using org-mode for scientific posters} \begin{document} -\begin{frame}[fragile,label={sec:orgec21ff0}]{} +\begin{frame}[fragile,label={sec:orge330f04}]{} \begin{columns} \begin{column}[t]{0.45\columnwidth} \begin{block}{Background} \begin{itemize} -\item Org-mode is not only useful for producing blog posts and even -scientific manuscripts; it is also perfectly suitable to make +\item Here we show how org-mode (version +9.1.7) together with emacs (version +25.2.2) can be used to make decent looking scientific posters -\item We combine a relatively simple custom \LaTeX style file and common -org-mode syntax -\item The nice thing about org-mode is that we can populate the poster with -code, graphs and numbers from inline code in languages such as R, -python, Matlab and even shell scripting -\item Inline code would look like this, which will produce a graph -(Fig. \ref{fig:org498cf2b}): +\item With org-mode we can populate the poster with code, graphs and numbers +from inline code in languages such as R, python, Matlab and even shell +scripting +\item For example, this poster was created on 2018-04-03 15:35 +\item Inline code could look like this (which will produce a graph; +Fig. \ref{fig:org646b9c5}): \end{itemize} \begin{columns} @@ -67,7 +71,7 @@ hist(x2, col="blue", add=TRUE) \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{3.png} -\caption{\label{fig:org498cf2b} +\caption{\label{fig:org646b9c5} This is the output.} \end{figure} \end{column} @@ -81,7 +85,7 @@ This is the output.} capabilities \item Some code to process the first vector from above to make a table out of its summary could look like this, which would result in a little -table (Table \ref{tab:org80b4f16}) : +table (Table \ref{tab:org2f8852f}) : \end{itemize} \begin{columns} @@ -100,6 +104,8 @@ mutate(name=c("x1", "x2")) \vspace{2cm} \begin{table}[htbp] +\caption{\label{tab:org2f8852f} +A table summarizing the two distributions.} \centering \begin{tabular}{rrrrrrl} \hline @@ -109,9 +115,6 @@ minimum & q1 & median & mean & q3 & maximum & name\\ -2.17 & -0.45 & 0.07 & 0.13 & 0.85 & 2.23 & x2\\ \hline \end{tabular} -\caption{\label{tab:org80b4f16} -A table summarizing the two distributions.} - \end{table} \end{column} \end{columns} @@ -122,7 +125,7 @@ A table summarizing the two distributions.} \begin{block}{Graphics} \begin{itemize} \item We can use shell scripting to grab an image with curl from the -internet (Fig. \ref{fig:orge0395cc}): +internet (Fig. \ref{fig:org0ba80fb}): \end{itemize} \begin{columns} @@ -139,7 +142,7 @@ curl -0 https://www.gnu.org/software/emacs/images/emacs.png \begin{figure}[htbp] \centering \includegraphics[page=9,width=0.2\textwidth]{emacs.png} -\caption{\label{fig:orge0395cc} +\caption{\label{fig:org0ba80fb} This is the downloaded image.} \end{figure} \end{column} @@ -185,7 +188,7 @@ derived as follows: \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{4l.png} -\caption{\label{fig:org9158640} +\caption{\label{fig:org9542cf7} This is the left figure of a two-column block, showing the density of \(x1\).} \end{figure} \end{column} @@ -195,7 +198,7 @@ This is the left figure of a two-column block, showing the density of \(x1\).} \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{4r.png} -\caption{\label{fig:org4bc9c2a} +\caption{\label{fig:org3813d21} This is the right figure. It shows the density of \(x2\).} \end{figure} \end{column} @@ -204,8 +207,7 @@ This is the right figure. It shows the density of \(x2\).} \begin{block}{Conclusions} \begin{itemize} -\item This little example is meant to show how incredibly versatile -org-mode is +\item This little example is meant to show how versatile org-mode is \item Scientific posters can be produced with a simple text editor \end{itemize} \end{block} diff --git a/src/org-mode-poster_poster.tex~ b/src/org-mode-poster_poster.tex~ index d97420d..5b5d832 100644 --- a/src/org-mode-poster_poster.tex~ +++ b/src/org-mode-poster_poster.tex~ @@ -1,4 +1,4 @@ -% Created 2018-04-02 Mon 22:15 +% Created 2018-04-03 Tue 15:32 % Intended LaTeX compiler: pdflatex \documentclass[final]{beamer} \usetheme{ph} @@ -23,9 +23,13 @@ \newcommand{\Xoi}[1]{#1(i)} \newcommand{\frakPQ}[2]{\frac{\Xoi{#1}}{\Xoi{#2}}} \newcommand{\DKLPQ}[3]{D_{\mathrm{KL}}(#1 #3 #2)} +\newcommand{\auth}{Philipp Homan, MD, PhD} +\newcommand{\authemail}{phoman1@northwell.edu} +\newcommand{\authtwitter}{@philipphoman} +\newcommand{\authgithub}{github.com/philipphoman} \date{} \author{ -Philipp Homan$^{1}$, +Philipp Homan$^{1}$ \\ \normalsize{$^{1}$Department of Psychiatry,} \normalsize{The Donald and Barbara Zucker} @@ -33,25 +37,25 @@ Philipp Homan$^{1}$, \normalsize{Hempstead, NY} } \usetheme{default} -\date{2018-04-02 22:15} -\title{Using org-mode to produce scientific posters} +\date{2018-04-03 15:31} +\title{Using org-mode for scientific posters} \begin{document} -\begin{frame}[fragile,label={sec:org1571d9a}]{} +\begin{frame}[fragile,label={sec:org04c7cf4}]{} \begin{columns} \begin{column}[t]{0.45\columnwidth} \begin{block}{Background} \begin{itemize} -\item Org-mode is not only useful for producing blog posts and even -scientific manuscripts; it is also perfectly suitable to make +\item Here we show how org-mode (version +9.1.7) together with emacs (version +25.2.2) can be used to make decent looking scientific posters -\item We combine a relatively simple custom \LaTeX style file and common -org-mode syntax -\item The nice thing about org-mode is that we can populate the poster with -code, graphs and numbers from inline code in languages such as R, -python, Matlab and even shell scripting -\item Inline code would look like this, which will produce a graph -(Fig. \ref{fig:org6629f8c}): +\item With org-mode we can populate the poster with code, graphs and numbers +from inline code in languages such as R, python, Matlab and even shell +scripting +\item For example, this poster was created on 2018-04-03 15:31 +\item Inline code could look like this (which will produce a graph; +Fig. \ref{fig:orgbc6b6ab}): \end{itemize} \begin{columns} @@ -67,7 +71,7 @@ hist(x2, col="blue", add=TRUE) \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{3.png} -\caption{\label{fig:org6629f8c} +\caption{\label{fig:orgbc6b6ab} This is the output.} \end{figure} \end{column} @@ -81,7 +85,7 @@ This is the output.} capabilities \item Some code to process the first vector from above to make a table out of its summary could look like this, which would result in a little -table (Table \ref{tab:org74ecade}) : +table (Table \ref{tab:org62ea45d}) : \end{itemize} \begin{columns} @@ -100,6 +104,8 @@ mutate(name=c("x1", "x2")) \vspace{2cm} \begin{table}[htbp] +\caption{\label{tab:org62ea45d} +A table summarizing the two distributions.} \centering \begin{tabular}{rrrrrrl} \hline @@ -109,9 +115,6 @@ minimum & q1 & median & mean & q3 & maximum & name\\ -2.17 & -0.45 & 0.07 & 0.13 & 0.85 & 2.23 & x2\\ \hline \end{tabular} -\caption{\label{tab:org74ecade} -A table summarizing the two distributions.} - \end{table} \end{column} \end{columns} @@ -122,7 +125,7 @@ A table summarizing the two distributions.} \begin{block}{Graphics} \begin{itemize} \item We can use shell scripting to grab an image with curl from the -internet (Fig. \ref{fig:org966972d}): +internet (Fig. \ref{fig:org45de491}): \end{itemize} \begin{columns} @@ -139,7 +142,7 @@ curl -0 https://www.gnu.org/software/emacs/images/emacs.png \begin{figure}[htbp] \centering \includegraphics[page=9,width=0.2\textwidth]{emacs.png} -\caption{\label{fig:org966972d} +\caption{\label{fig:org45de491} This is the downloaded image.} \end{figure} \end{column} @@ -185,7 +188,7 @@ derived as follows: \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{4l.png} -\caption{\label{fig:orga3a0e13} +\caption{\label{fig:org2b19bfd} This is the left figure of a two-column block, showing the density of \(x1\).} \end{figure} \end{column} @@ -195,7 +198,7 @@ This is the left figure of a two-column block, showing the density of \(x1\).} \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{4r.png} -\caption{\label{fig:org6c7191a} +\caption{\label{fig:org03df045} This is the right figure. It shows the density of \(x2\).} \end{figure} \end{column} @@ -204,8 +207,7 @@ This is the right figure. It shows the density of \(x2\).} \begin{block}{Conclusions} \begin{itemize} -\item This little example is meant to show how incredibly versatile -org-mode is +\item This little example is meant to show how versatile org-mode is \item Scientific posters can be produced with a simple text editor \end{itemize} \end{block}