5cec7e4e1f4b79eefbf242b905680dd13fbbd2e4
[worg.git] / exporters / plos-one-template-worg.org
1 #+OPTIONS: html-link-use-abs-url:nil html-postamble:auto
2 #+OPTIONS: html-preamble:t html-scripts:t html-style:t
3 #+OPTIONS: html5-fancy:nil tex:t
4 #+CREATOR: <a href="http://www.gnu.org/software/emacs/">Emacs</a> 24.3.1 (<a href="http://orgmode.org">Org</a> mode 8.2.5c)
5 #+HTML_CONTAINER: div
6 #+HTML_DOCTYPE: xhtml-strict
7 #+TITLE: Org Mode Template for a /PLOS ONE/ Journal Article
8 #+AUTHOR: Thomas S. Dye
9 #+EMAIL: tsd at tsdye dot com
10
11 #+call: plos-one-start(kwd="TITLE") :wrap latex
12
13
14 * Instructions for Use
15
16 This file provides a template to export an Org mode file to a LaTeX
17 file that meets the specifications of the open-access journal
18 [[http://www.plosone.org][/PLOS ONE/]]. It features:
19
20  - environment setup with [[https://www.gnu.org/software/emacs/manual/html_node/emacs/File-Variables.html][Emacs local variables]];
21  - [[http://orgmode.org/manual/The-Export-Dispatcher.html][asynchronous export]] to pdf via LaTeX;
22  - [[http://en.wikibooks.org/wiki/LaTeX/Document_Structure#Document_classes][custom document classes]] for article development and for submitting
23    to the journal;
24  - an optional [[http://www.plosone.org/static/supportingInformation][supporting information document]] capable of creating a
25    [[http://biostats.bepress.com/bioconductor/paper2/][compendium]] in pdf format;
26  - [[http://www.bibtex.org][BibTeX]] bibliography management with [[http://joostkremers.github.io/ebib/][Ebib]]
27
28 These features are described in the following sections. In addition,
29 there is a [[Checklist][checklist]] to help guide you through configuration and
30 document preparation.
31
32 The template is distributed as =plos-one-template.org= at
33 https://github.com/tsdye/org-plos-one-template.git.
34
35 ** Emacs Local Variables
36
37 The environment is set up with [[Local Variables][Emacs local variables]], which Emacs
38 requires be found near the end of the file.  
39
40 The following local variable lines initialize the Org mode LaTeX
41 exporter, indicate the name of the asynchronous export initialization
42 file, and then specify that asynchronous export should be used and
43 that the export process should leave data behind in case there are
44 problems.
45
46 #+begin_example
47  # eval: (require 'ox-latex)
48  # eval: (setq org-export-async-init-file (expand-file-name "init-plos.el"))
49  # org-export-in-background: t 
50  # org-export-async-debug: t 
51 #+end_example
52
53 The following local variable line provides compatibility across a
54 recent Org mode function name change.
55
56 #+begin_example
57  # eval: (and (fboundp 'org-sbe) (not (fboundp 'sbe)) (fset 'sbe 'org-sbe))
58 #+end_example
59
60
61 The following local variable line executes [[Link Type for Citations][a source code block]] that
62 defines an Org mode link that functions to insert a bibliographic
63 reference.
64
65 #+begin_example
66  # eval: (sbe "define-cite-link")
67 #+end_example
68
69
70 The final local variable line executes [[ebib-setup][a source code block]] that sets
71 up the [[http://joostkremers.github.io/ebib/][Ebib]] BibTeX database manager.
72
73 #+begin_example
74  # eval: (sbe "ebib-setup")
75 #+end_example
76
77 ** Asynchronous Export
78
79 The /PLOS ONE/ template is set up to use the asynchronous Org mode
80 exporter, both for the article and for the optional supporting
81 information document.
82
83 To export the article with point anywhere in the Org mode buffer, type
84 =C-c C-e l o= or =C-c C-e l p=. The first of these will export a LaTeX
85 file, compile it with pdflatex, then attempt to open the resulting pdf
86 file. The second one does the same, but does not attempt to open the
87 pdf file.
88
89 To export the supporting information document, move point to the
90 [[Supporting Information Document]] heading and type =C-c C-e C-s l o= or
91 =C-c C-e C-s l p= to export the supporting information sub-tree.
92
93 ** Custom Document Classes
94
95 The /PLOS ONE/ template includes two custom document classes named
96 =plos-devel= and =plos-submit=.  
97
98 The document class =plos-devel= can be used when the article is being
99 written. It includes figures in the exported document.
100
101 The document class =plos-submit= can be used to make the pdf file that
102 will be submitted to /PLOS ONE/. It includes figure captions, but does
103 not insert the figures. /PLOS ONE/ requires that figures be submitted
104 as separate tiff or eps format graphics files.
105
106 The document class is set near the top of the file, with
107 the =#+LATEX_CLASS:= property.  The default value set in the template
108 is =plos-devel=.  In most cases it is convenient to use this document
109 class until the article is complete and ready to be sent to the
110 journal. Then, the =#+LATEX_CLASS:= property can be changed to
111 =plos-submit= and the document exported in the usual way.
112
113 ** Using Ebib for Citations
114
115 The file is set up to use Ebib for citations.  Ebib is a convenient
116 tool that uses Emacs for display, but otherwise operates
117 independently. You can learn how to use Ebib with its excellent [[http://joostkremers.github.io/ebib/][user
118 manual]]. Please be aware that the current user manual is hosted on
119 github and that the old user manual, hosted on sourceforge, is what
120 Google finds. An easy way to tell them apart is the background color;
121 the old manual has a maroon background and the new one has a
122 bluish background. 
123
124 Ebib is set up to know about the default bibliography database,
125 local.bib. If you are used to working in a LaTeX environment and have
126 one or more bibliographic databases, you can choose either to transfer
127 entries from your own database to local.bib, or you can configure the
128 template to use more than one bibliographic database.  There are
129 instructions below on how to add a bibliographic database to the
130 template. 
131
132 You start Ebib with M-x ebib RET.  By default, you should see the
133 local.bib with a single entry. Ebib uses single keystrokes for
134 commands. Press =z= to lower Ebib and return to this document.
135
136 There are several ways to insert a reference into your document. The
137 first, and the one I use most often, is bound by the template to =C-c
138 b=. Ebib will prompt for the citation key to use, then for the
139 citation command, and finally, for Argument 1, which specifies how the
140 citation will look in the Org mode buffer.
141
142 The sequence =C-c b=, =sch TAB RET=, =c TAB RET=, =schulte= inserts
143 the following reference: [[cite:schulte12:_multi_languag_comput_envir_liter][schulte]].  Clicking on the link will take you
144 to the entry of local.bib.  Press =z= in Ebib to return to this document.
145
146 *** Adding Another BibTeX Database
147
148  - [ ] Add the database name to the [[end-matter][LaTeX =\bibliography= command]]
149  - [ ] If you are making a  [[http://biostats.bepress.com/bioconductor/paper2/][compendium]], add the database name to the
150    [[compendium-contents][compendium contents table]]
151  - [ ] Modify the [[ebib-setup][Ebib setup code]] and execute the source code block
152
153 ** Figures
154
155 /PLOS ONE/ has a [[http://www.plosone.org/static/figureGuidelines#titles][detailed specification for figures]].  You are
156 encouraged to read it carefully.  In particular, you'll need to
157 produce either =tiff= or =eps= files to submit to the journal.
158
159 If you are planning to distribute a  [[http://biostats.bepress.com/bioconductor/paper2/][compendium]] with your paper, then
160 you will want to develop the figures in the [[Supporting Information Document][supporting information
161 document]] section, so the code involved in their construction can be
162 easily packaged.
163
164 The figures for the paper are inserted in the [[Figure Legends][section for figure
165 legends]], in the usual Org mode way.
166
167 I develop the paper using the =#+LATEX_CLASS:= plos-devel and insert
168 the figures as LaTeX-friendly =pdf= or =jpg= files.  This way I can
169 see that the figures are right with their captions and I can
170 distribute the draft paper to colleagues as a single =pdf= document
171 with figures.
172
173 When it is time to submit to the journal, I switch the =#+LATEX_CLASS=
174 to plos-submit, which removes the figures, but leaves the figure
175 captions.  At that time, the LaTeX-friendly figures can be converted
176 to either =tiff= or =eps= format for the journal.
177
178 ** /PLOS ONE/ Supporting Information Document
179
180 /PLOS ONE/ will accept a  [[http://biostats.bepress.com/bioconductor/paper2/][compendium]] in =pdf= format as Supporting
181 Information. The template supports this effort by partially populating
182 two tables, one that lists the [[open-source-software][software used to produce the paper]] and
183 the other that includes [[compendium-contents][links to graphic and other files]] archived
184 within the =pdf= file. 
185
186 ** Checklist [0/10]                                 
187
188   - [ ] Save this file as the file name of your choice, e.g., myarticle.org.
189   - [ ] Configure the [[export-setup-plos-one][PLOS ONE initialization files]]
190   - [ ] Tangle the initialization files by [[elisp:(sbe "tangle-init-file")][clicking here]]
191   - [ ] Complete the [[author-table][author table]]
192   - [ ] Possibly configure the [[end-matter][bibliography command]], or just use the
193     default local.bib
194   - [ ] Possibly configure the [[Supporting Information Document][supporting information document]] EXPORT_TITLE
195     property to reflect the title of your article 
196   - [ ] Prepare a [[Striking Image][striking image]]
197   - [ ] Prepare a [[PLOS-One Instructions for Cover Letter][cover letter]]
198   - [ ] Optionally, export the supporting information document by
199     pressing =C-c C-e C-s l o= with the point in the [[Supporting
200     Information Document][supporting information document]] headline
201   - [ ] Export the article, by pressing =C-c C-e l o= anywhere in the document
202  
203 * Abstract
204
205 # add the abstract above this line
206
207 ** /PLOS ONE/ instructions for the abstract [0/5]                  :noexport:
208 The abstract should:
209  - [ ] Describe the main objective(s) of the study
210  - [ ] Explain how the study was done, including any model organisms
211    used, without methodological detail
212  - [ ] Summarize the most important results and their significance
213  - [ ] Not exceed 300 words
214  - [ ] Abstracts should not include:
215    - [ ] Citations
216    - [ ] Abbreviations, if possible
217 * Introduction
218 * Section(s) to be written
219 * Discussion
220 * Acknowledgments
221
222
223 # acknowledge colleagues above this line
224
225 #+name: end-matter
226 #+begin_latex
227   % Add the base name of new .bib file(s) between the curly braces 
228   \bibliography{local}
229   \clearpage
230 #+end_latex
231
232 * Supporting Information
233
234 # describe supporting information above this line
235
236 #+LATEX: \clearpage
237
238 * Figure Legends
239
240 # insert figures above this line
241
242 #+latex: \clearpage
243
244 * Tables
245
246 # insert tables above this line
247
248 #+latex: \clearpage
249
250 * Supporting Information Document                                
251    :PROPERTIES:
252    :EXPORT_FILE_NAME: supporting-information
253    :EXPORT_TITLE: Supporting Information for ``YOUR TITLE HERE''
254    :EXPORT_LATEX_HEADER: \input{supplementary-material-header}
255    :END:
256
257 #+call: plos-one-start(kwd="EXPORT_TITLE") :wrap latex
258
259 #+TOC: tables
260 #+TOC: listings
261
262 ** Introduction
263
264
265 #+name: open-source-software
266 #+attr_latex: :font \footnotesize :booktabs t
267 #+caption[Open source software requirements]: *Open source software requirements.*
268 | Software        | Distribution      | Notes                                       |
269 |-----------------+-------------------+---------------------------------------------|
270 | Emacs           | [[http://www.gnu.org/software/emacs/][GNU Emacs]]         | See distribution installation instructions  |
271 |                 | [[http://www.us.xemacs.org/][XEmacs]]            | See distribution installation instructions  |
272 | Ebib            | [[http://joostkremers.github.io/ebib/][Ebib]]              | Easy installation via [[http://melpa.milkbox.net/#/][MELPA]]                      |
273 | \LaTeX          | [[http://www.tug.org/texlive][TeX Live (Linux)]]  | See distribution installation instructions  |
274 |                 | [[http://www.tug.org/mactex/][MacTeX (Mac OS X)]] | See distribution installation instructions  |
275 |                 | [[http://www.tug.org/protext/][proTeXt (Windows)]] | See distribution installation instructions  |
276 | \LaTeX┬ápackages | [[http://www.ctan.org/pkg/setspace][setspace]]          | Required by /PLOS ONE/                      |
277 |                 | [[http://www.ctan.org/pkg/amsmath][amsmath]]           | Required by /PLOS ONE/                      |
278 |                 | [[http://www.ctan.org/pkg/amsfonts][amssymb]]           | Required by /PLOS ONE/                      |
279 |                 | [[http://www.ctan.org/pkg/graphicx][graphicx]]          | Required by /PLOS ONE/                      |
280 |                 | [[http://www.ctan.org/pkg/cite][cite]]              | Required by /PLOS ONE/                      |
281 |                 | [[http://www.ctan.org/pkg/color][color]]             | Required by /PLOS ONE/                      |
282 |                 | [[http://www.ctan.org/pkg/caption][caption]]           | Required by /PLOS ONE/                      |
283 |                 | [[http://www.ctan.org/pkg/minted][minted]]            | Used by the Supporting Information document |
284 |                 | [[http://www.ctan.org/pkg/longtable][longtable]]         | Used by the Supporting Information document |
285 |                 | [[http://www.ctan.org/pkg/booktabs][booktabs]]          | Used by the Supporting Information document |
286 |                 | [[http://www.ctan.org/pkg/attachfile][attachfile]]        | Used by the Supporting Information document |
287 |                 | [[http://www.ctan.org/tex-archive/usergrps/dante/dtk][dtklogos]]          | Used by the Supporting Information document |
288 |                 | [[http://www.ctan.org/pkg/paralist][paralist]]          | Used by the Supporting Information document |
289
290
291 #+caption[Compendium contents]: *Compendium contents.*
292 #+attr_latex: :font \footnotesize :booktabs t
293 #+name: compendium-contents
294 | Description                       | File name               | Link to file                                                      |
295 |-----------------------------------+-------------------------+-------------------------------------------------------------------|
296 | Org mode /PLOS ONE/ template file | =plos-one-template.org= | @@latex:\attachfile[mimetype=text/plain]{plos-one-template.org}@@ |
297 | Project bibliographic database    | =local.bib=             | @@latex:\attachfile[mimetype=text/plain]{local.bib}@@             |
298 | /PLOS ONE/ bibliography style     | =plos2009.bst=          | @@latex:\attachfile[mimetype=text/plain]{plos2009.bst}@@          |
299
300 ** Section(s) to be written
301 * Cover Letter                                                    
302 :PROPERTIES:
303    :EXPORT_FILE_NAME: cover-letter
304    :END:
305
306 ** PLOS-One Instructions for Cover Letter [0/7]                   
307 You should supply an approximately one page cover letter that:
308
309  - [ ] Concisely summarizes why your paper is a valuable addition to the
310    scientific literature
311  - [ ] Briefly relates your study to previously published work
312  - [ ] Specifies the type of article you are submitting (for example,
313    research article, systematic review, meta-analysis, clinical trial)
314  - [ ] Describes any prior interactions with PLOS regarding the submitted
315    manuscript
316  - [ ] Suggests appropriate /PLOS ONE/ Academic Editors to handle your
317    manuscript ([[http://www.plosone.org/static/edboard][view a complete listing of our academic editors]])
318  - [ ] Lists any recommended or opposed reviewers
319  - [ ] Your cover letter should not include requests to reduce or waive
320    publication fees. Should your manuscript be accepted, you will have
321    the opportunity to include your requests at that time. See PLOS ONE
322    Editorial Policy for more information regarding publication fees.
323 * Striking Image                                                  
324
325 #+begin_quote
326 Authors are encouraged to upload a "striking image" that may be used
327 to represent their paper online in places like the journal homepage or
328 in search results. The striking image must be derived from a figure or
329 supporting information file from the paper, ie. a cropped portion of
330 an image or the entire image. Striking images should ideally be high
331 resolution, eye-catching, single panel images, and should ideally
332 avoid containing added details such as text, scale bars, and arrows.
333 If no striking image is uploaded, a figure from the paper will be
334 designated as the striking image.
335 #+end_quote
336
337 * Author Table 
338
339 The =author-table= holds information on the authors and their
340 affiliations.  It is assembled and placed on the title page by [[plos-one-start][this
341 Emacs lisp source code block]].  Most of the column names should be
342 self-explanatory. The =Corresponding= column should have "yes" or "no"
343 entries that indicate whether or not the author is the corresponding
344 author.
345
346 #+name: author-table
347 | Author name | Department | Institution | City | State | Country | Email | Corresponding |
348 |-------------+------------+-------------+------+-------+---------+-------+---------------|
349
350
351 *NOTE* Do not add, delete, or change the position of a column in the
352 =author-table=.  The [[plos-one-start][simple-minded code]] that processes the
353 table will be confused if you do.
354
355 * /PLOS ONE/ Template Source Code
356 ** Export setup for /PLOS ONE/
357
358 The following source code block can be configured for the user's set
359 up by setting the =:var path-to-ox-latex= header argument to an
360 appropriate value.
361
362 #+name: export-setup-plos-one
363 #+header: :var path-to-ox-latex="~/.emacs.d/src/org-mode/lisp"
364 #+header: :noweb yes
365 #+header: :results silent
366 #+header: :tangle init-plos.el
367 #+begin_src emacs-lisp
368   (setq load-path (cons path-to-ox-latex load-path))
369   (require 'ox-latex)
370   (setq org-confirm-babel-evaluate nil)
371   (setq org-latex-listings 'minted)
372   (setq org-latex-listings-options
373         '(("frame" "lines")
374           ("basicstyle" "\\footnotesize")
375           ("numbers" "left")
376           ("numberstyle" "\\tiny")))
377   (setq org-latex-minted-options
378         '(("frame" "lines")
379           ("fontsize" "\\footnotesize")
380           ("linenos" "")))
381   (add-to-list 'org-latex-minted-langs '(lisp "cl"))
382   (setq org-latex-pdf-process
383         '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
384           "bibtex %b"
385           "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
386           "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
387     (org-babel-do-load-languages
388      'org-babel-load-languages
389      '((R . t)
390        (dot . t)
391        (emacs-lisp . t)
392        (latex . t)
393        (org . t)
394        (sh . t)))
395     <<user-entities>>
396     (setq org-latex-packages-alist nil)
397     (add-to-list 'org-latex-packages-alist '("" "setspace"))
398     (add-to-list 'org-latex-packages-alist '("" "amsmath"))
399     (add-to-list 'org-latex-packages-alist '("" "amssymb"))
400     (add-to-list 'org-latex-packages-alist '("" "graphicx"))
401     (add-to-list 'org-latex-packages-alist '("" "cite"))
402     (add-to-list 'org-latex-packages-alist '("usenames,dvipsnames" "color"))
403     (add-to-list 'org-latex-packages-alist '("labelfont=bf,labelsep=period,justification=raggedright" "caption"))
404     (setq org-latex-tables-booktabs nil)
405     (setq org-latex-title-command nil)
406     (setq org-latex-remove-logfiles nil)
407     (setq org-latex-toc-command "\\tableofcontents\n\n")
408     (setq org-latex-classes nil)
409     (add-to-list 'org-latex-classes
410                  '("plos-submit"
411                    "\\documentclass[10pt]{article}
412     [NO-DEFAULT-PACKAGES]
413     [PACKAGES]
414     [EXTRA]
415     \\doublespacing
416     % Text layout
417     \\topmargin 0.0cm
418     \\oddsidemargin 0.5cm
419     \\evensidemargin 0.5cm
420     \\textwidth 16cm 
421     \\textheight 21cm
422     \\bibliographystyle{plos2009}
423     \\makeatletter
424     \\renewcommand{\\@biblabel}[1]{\\quad#1.}
425     \\makeatother
426     \\pagestyle{myheadings}
427     \\renewcommand{\\includegraphics}[2][]{}
428     %% ** EDIT HERE **
429     \\DeclareCaptionLabelFormat{si}{#1S#2}    
430     
431     %% ** EDIT HERE **
432     %% PLEASE INCLUDE ALL MACROS BELOW
433     %% \\newcommand{\\texttwosuperior}{$^{2}$}
434     %% \\newcommand{\\textpm}{$\\pm$}
435     \\newcommand{\\rc}{$^{14}C$}
436     %% END MACROS SECTION"
437                      ("\\section{%s}" . "\\section*{%s}")
438                      ("\\subsection{%s}" . "\\subsection*{%s}")
439                      ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
440                      ("\\paragraph{%s}" . "\\paragraph*{%s}")
441                    ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
442     (add-to-list 'org-latex-classes
443                  '("plos-devel"
444                    "\\documentclass[10pt]{article}
445     [NO-DEFAULT-PACKAGES]
446     [PACKAGES]
447     [EXTRA]
448     \\doublespacing
449     % Text layout
450     \\topmargin 0.0cm
451     \\oddsidemargin 0.5cm
452     \\evensidemargin 0.5cm
453     \\textwidth 16cm 
454     \\textheight 21cm
455     \\bibliographystyle{plos2009}
456     \\makeatletter
457     \\renewcommand{\\@biblabel}[1]{\\quad#1.}
458     \\makeatother
459     \\pagestyle{myheadings}
460     %% ** EDIT HERE **
461     \\DeclareCaptionLabelFormat{si}{#1S#2}    
462     
463     %% ** EDIT HERE **
464     %% PLEASE INCLUDE ALL MACROS BELOW
465     %% \\newcommand{\\texttwosuperior}{$^{2}$}
466     %% \\newcommand{\\textpm}{$\\pm$}
467     \\newcommand{\\rc}{$^{14}C$}
468     %% END MACROS SECTION"
469                      ("\\section{%s}" . "\\section*{%s}")
470                      ("\\subsection{%s}" . "\\subsection*{%s}")
471                      ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
472                      ("\\paragraph{%s}" . "\\paragraph*{%s}")
473                      ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
474       <<ngz-nbsp>>
475       <<tsd-textpm>>
476       <<tsd-continuation-strings>>
477       <<define-cite-link>>
478 #+end_src
479
480 ** Include File for Supporting Information Class File
481
482 #+begin_example
483 ,#+name: supplementary-material-latex-header
484 ,#+header: :tangle supplementary-material-header.tex
485 ,#+begin_src latex
486   \usepackage{dtklogos}% for the \BibTeX command
487   \usepackage{longtable}
488   \usepackage{minted}
489   \usemintedstyle{tango}
490   \renewcommand\listoflistingscaption{List of Source Code Block Listings}
491   \usepackage{booktabs}
492   \usepackage{paralist}
493   \usepackage[colorlinks=true,allcolors=blue]{hyperref}
494   \usepackage{attachfile}
495   \renewcommand\thefigure{S\arabic{figure}} 
496   \renewcommand\thetable{S\arabic{table}} 
497   \renewcommand\thelisting{S\arabic{listing}} 
498 ,#+end_src
499 #+end_example
500
501 ** Link Type for Citations
502
503 The following source code block defines a cite: link type.  The cite
504 links will be inserted into the Org mode document by Ebib.  When the
505 Org mode file is exported to LaTeX, a =\cite= command is inserted into
506 the LaTeX file. This is the only type of citation allowed by the /PLOS
507 ONE/ style.
508
509
510 #+name: define-cite-link
511 #+header: :results silent :exports code
512 #+begin_src emacs-lisp
513   (org-add-link-type
514    "cite" 'ebib-open-org-link
515    (lambda (path desc format)
516      (cond
517        ((eq format 'latex)
518         (format "\\cite{%s}" path)))))
519 #+end_src
520
521 ** Access Keyword Values
522
523 This is taken from [[http://jkitchin.github.io/blog/2013/05/05/Getting-keyword-options-in-org-files/][John Kitchin's blog]].  It has been modified so
524 =org-element-map= returns node properties in addition to keywords. 
525
526 #+name: jk-keywords
527 #+header: :results silent
528 #+begin_src emacs-lisp
529 (defun jk-org-kwds ()
530   "parse the buffer and return a cons list of (property . value)
531 from lines like: #+PROPERTY: value"
532   (org-element-map (org-element-parse-buffer 'element) '(keyword node-property)
533                    (lambda (keyword) (cons (org-element-property :key keyword)
534                                            (org-element-property :value keyword)))))
535
536 (defun jk-org-kwd (KEYWORD)
537   "get the value of a KEYWORD in the form of #+KEYWORD: value"
538   (cdr (assoc KEYWORD (jk-org-kwds))))
539 #+end_src
540
541 *** Test Keyword Values
542
543 The following source code block should return the value of
544 the =#+HTML_CONTAINER:= property declared near the top of this file.
545
546 #+name: test-properties
547 #+header: :exports both
548 #+begin_src emacs-lisp
549   (jk-org-kwd "HTML_CONTAINER")
550 #+end_src
551
552 #+results: test-properties
553 : div
554
555 ** Tangle the Initialization File
556
557 #+name: tangle-init-file
558 #+header: :results silent
559 #+begin_src emacs-lisp
560 (org-babel-tangle)
561 #+end_src
562
563 ** Preamble Source Code
564
565 The source code block =plos-one-start= is called before the first
566 headline. It takes information from the =author-table= and creates a
567 title page that meets the following [[http://www.plosone.org/static/guidelines#format][/PLOS ONE/ specification]]:
568
569 #+begin_quote
570 The title, authors, and affiliations should all be included on a title
571 page as the first page of the manuscript file.
572 #+end_quote
573
574 #+name: plos-one-start
575 #+header: :var tab=author-table
576 #+header: :var kwd="TITLE"
577 #+header: :results raw 
578 #+header: :wrap latex
579 #+header: :colnames no 
580 #+header: :hlines yes
581 #+header: :noweb yes
582 #+header: :exports code
583 #+begin_src emacs-lisp
584   <<jk-keywords>>
585   (require 'cl)
586   (defun author-name (recs)
587     "Format the author name list."
588     (let ((i 0))
589       (mapcar (lambda (row)
590                 (concat (format "%s$^{%d%s" (first row)
591                                 (incf i)
592                                 (if (equal "yes" (eighth row)) ",\\ast" ""))
593                         (if (equal row (car (last recs))) "}$" "}$,")))
594               recs)))
595   
596   (defun author-affiliation (recs)
597     "Format the author affiliation list."
598     (let ((i 0))
599       (mapcar (lambda (row)
600                 (format "\\bf{%d} %s, %s, %s, %s, %s" (incf i)
601                         (second row) (third row) (fourth row)
602                         (fifth row) (sixth row)))
603               recs)))
604   (defun corresponding-email (recs)
605     "Return the corresponding email."
606     (mapcar (lambda (row)
607               (format "%s" (if (equal "yes" (eighth row)) (seventh row) "")))
608             recs))
609   
610   (let* ((tab (cdr (cdr tab)))
611          (a (author-name tab))
612          (b (author-affiliation tab))
613          (c (corresponding-email tab)))
614     (concat (format "\\begin{flushleft}\n{\\Large\n\\textbf{%s}\n}\n\\\\\n"
615                     (jk-org-kwd kwd))
616             (mapconcat 'identity a "\n") "\n\\\\\n"
617             (mapconcat 'identity b "\n\\\\\n")
618             "\n\\\\\n$\\ast$ E-mail: "
619             (mapconcat 'identity c "\n")
620             "\n\\end{flushleft}\n\\newpage"))
621 #+end_src
622
623 ** Ebib Setup
624
625 This source code block initializes Ebib and binds =C-c b= to the
626 command that inserts the =cite:= link.  It instructs Ebib to look for
627 the BibTeX database, =local.bib=, in the current directory and puts
628 =local.bib= on the list of local BibTeX file names.  The last line
629 defines the command that inserts the =cite:= link.  
630
631 #+name: ebib-setup
632 #+begin_src emacs-lisp
633   (autoload 'ebib "ebib" "Ebib, a BibTeX database manager." t)
634   (dolist (hook '(org-mode-hook))
635     (add-hook hook (lambda () (local-set-key "\C-cb" 'ebib-insert-bibtex-key))))
636   (setq ebib-bib-search-dirs (quote ("./")))
637   (setq ebib-preload-bib-files (quote ("local.bib")))
638   (setq ebib-local-bibtex-filenames (quote ("local.bib")))
639   (setq ebib-citation-commands
640         (quote ((org-mode (("cite" "[[cite:%K][%A]]"))))))
641 #+end_src
642
643 If you want to add another BibTeX database to the setup, then you
644 might need to modify this code in three places.  For example, to also
645 load a database named =main.bib= that is found in the =biblio= folder
646 of the user's home directory:
647
648 #+begin_example
649   (setq ebib-bib-search-dirs (quote ("./" "~/biblio")))
650   (setq ebib-preload-bib-files (quote ("local.bib" "main.bib")))
651   (setq ebib-local-bibtex-filenames (quote ("local.bib" "main.bib")))
652 #+end_example
653
654
655 * Local Variables                
656
657 #+begin_example
658 # eval: (require 'ox-latex)
659 # eval: (setq org-export-async-init-file (expand-file-name "init-plos.el"))
660 # org-export-in-background: t 
661 # org-export-async-debug: t 
662 # eval: (and (fboundp 'org-sbe) (not (fboundp 'sbe)) (fset 'sbe 'org-sbe))
663 # eval: (sbe "define-cite-link")
664 # eval: (sbe "ebib-setup")
665 #+end_example
666
667
668               
669