From 336c19808b992de86813f49bdf38ec2eb1b65aef Mon Sep 17 00:00:00 2001 From: Erik Tollerud Date: Tue, 22 Dec 2015 19:32:01 -0500 Subject: [PATCH 01/19] add copy option --- .tags | 53 ++++++++++++++++++++++++++++++ README.rst | 14 ++++++++ local_build.py | 64 ++++++++++++++++++++++++++----------- setup.py | 28 ++++++++++++++++ test/TestDocument/title.tex | 1 + 5 files changed, 141 insertions(+), 19 deletions(-) create mode 100644 .tags create mode 100644 README.rst create mode 100644 setup.py create mode 100644 test/TestDocument/title.tex diff --git a/.tags b/.tags new file mode 100644 index 0000000..ea7c22d --- /dev/null +++ b/.tags @@ -0,0 +1,53 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.8 // +FIGURE_DEFAULTS local_build.py /^FIGURE_DEFAULTS = {'placement': '', 'width': '1\\columnwidth', 'figure_env': 'figure'}$/;" v +argparse local_build.py /^ import argparse$/;" i +args local_build.py /^ args = parser.parse_args()$/;" v +author setup.py /^ author='Mark Juers',$/;" v +author_email setup.py /^ author_email='mpjuers@indiana.edu',$/;" v +build_authorea_latex local_build.py /^def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname,$/;" f +description setup.py /^ description=('Tools for working locally with Authorea projects'),$/;" v +division local_build.py /^from __future__ import division, print_function$/;" i +find_packages setup.py /^from setuptools import setup, find_packages$/;" i +get_figure_string local_build.py /^def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False):$/;" f +get_in_path local_build.py /^def get_in_path(localdir, builddir, pathtype=None):$/;" f +get_input_string local_build.py /^def get_input_string(filename, localdir, quotepath=True, flatten=False):$/;" f +help local_build.py /^ help='Always make links (to input files and figures) within '$/;" v +help local_build.py /^ help='An executable to launch the output file with. '$/;" v +help local_build.py /^ help='Copy figures and any bib files into the build '$/;" v +help local_build.py /^ help='Only do preprocessing and skip all the build\/open steps')$/;" v +help local_build.py /^ help='Provide this to have the title included via the '$/;" v +help local_build.py /^ help='Provide this to not run bibtex.')$/;" v +help local_build.py /^ help='Provide this to skip the title command.')$/;" v +help local_build.py /^ help='The directory to actually search for the authorea'$/;" v +help local_build.py /^ help='The executable to use for the bibtex build step.')$/;" v +help local_build.py /^ help='The executable to use for the latex build step.')$/;" v +help local_build.py /^ help='The name to use for the output tex file.')$/;" v +help local_build.py /^ help='The number of times to call latex after bibtex.')$/;" v +help local_build.py /^ help='the directory to build the paper in')$/;" v +help local_build.py /^ help=r'Directly includes the content from tex files '$/;" v +include_package_data setup.py /^ include_package_data=True,$/;" v +install_requires setup.py /^ install_requires=[$/;" v +json local_build.py /^ import json$/;" i +license setup.py /^ license='MIT',$/;" v +name setup.py /^ name='authorea-scripts',$/;" v +os local_build.py /^import os$/;" i +packages setup.py /^ packages=find_packages(),$/;" v +parser local_build.py /^ parser = argparse.ArgumentParser(description='Local builder for authorea papers.')$/;" v +pathtype local_build.py /^ pathtype = 'abs'$/;" v +pathtype local_build.py /^ pathtype = 'rel'$/;" v +pathtype local_build.py /^ pathtype = None$/;" v +print_function local_build.py /^from __future__ import division, print_function$/;" i +py_modules setup.py /^ py_modules=['build-authorea'],$/;" v +pypandoc setup.py /^import pypandoc$/;" i +setup setup.py /^from setuptools import setup, find_packages$/;" i +shutil local_build.py /^import shutil$/;" i +subprocess local_build.py /^import subprocess$/;" i +sys local_build.py /^import sys$/;" i +url setup.py /^ url='https:\/\/github.com\/mpjuers\/authorea-scripts',$/;" v +version setup.py /^ version='0.0.1',$/;" v +zip_safe setup.py /^ zip_safe=False$/;" v diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..4f2ea3a --- /dev/null +++ b/README.rst @@ -0,0 +1,14 @@ +authorea-scripts +================ + +Scripts for working with Authorea articles. + +Installation: pip install authorea-scripts + +Usage of build-authorea-latex: build-authorea-latex [options] + +You must install latexml.sty from +https://github.com/brucemiller/LaTeXML/blob/master/lib/LaTeXML/texmf/latexml.sty +Just put is in ~/Library/texmf/tex/latex/latexml/ on Mac, or +~/texmf/tex/latex/latexml/ on Linux (I don’t know about Windows, +unfortunately). diff --git a/local_build.py b/local_build.py index bc14db3..13c5e54 100755 --- a/local_build.py +++ b/local_build.py @@ -20,11 +20,14 @@ the correct place in the ``layout.md`` file. A file named 'latexfigopts.json' can specify a dictionary for additional figure options (see the `FIGURE_DEFAULTS` below for what options that can be replaced). + If pdf or eps figures exist alongside referenced raster image files, they will + be favored over the raster format. """ import os import sys +import shutil import subprocess @@ -75,23 +78,33 @@ def get_input_string(filename, localdir, quotepath=True, flatten=False): return r'\input{' + quote_chr + os.path.join(localdir, filename) + quote_chr + '}' -def get_figure_string(filename, localdir, inputdir, flatten=False): +def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False): import json - figdir, figfn = os.path.split(filename) - - figfnbase = os.path.splitext(figfn)[0] - figfn = os.path.join(inputdir, figdir, figfn) - pdffn = os.path.join(localdir, figdir, figfnbase + '.pdf') - epsfn = os.path.join(localdir, figdir, figfnbase + '.eps') - - if not os.path.exists(pdffn): - pdffn = None - if not os.path.exists(epsfn): - epsfn = None + figdir, figname = os.path.split(filename) + + fignamebase = os.path.splitext(figname)[0] + figfn = os.path.join(inputdir, filename) + pdffn = os.path.join(localdir, figdir, fignamebase + '.pdf') + epsfn = os.path.join(localdir, figdir, fignamebase + '.eps') + + if copyto: + figpath = os.path.join(localdir, filename) + if os.path.exists(pdffn): + figpath = pdffn + figfn = fignamebase + elif os.path.exists(epsfn): + figpath = epsfn + figfn = fignamebase + elif os.path.exists(figpath): + figfn = figname + else: + raise IOError('Could not find figure file {}'.format(figpath)) + shutil.copy(figpath, os.path.join(copyto, os.path.split(figpath)[1])) - if pdffn or epsfn: - figfn = os.path.join(inputdir, figdir, figfnbase) + else: + if os.path.exists(pdffn) or os.path.exists(epsfn): + figfn = os.path.join(inputdir, figdir, fignamebase) if os.path.exists(os.path.join(localdir, figdir, 'caption.tex')): @@ -145,7 +158,7 @@ def get_in_path(localdir, builddir, pathtype=None): def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, usetitle, dobibtex, npostbibcalls, openwith, titleinput, - dobuild, pathtype, flatten): + dobuild, pathtype, flatten, copy_figs): if not os.path.exists(builddir): os.mkdir(builddir) @@ -166,7 +179,13 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, if not headerin and not preamblein: print("Neither preable nor header found! Proceeding, but that's rather weird") - bibloc = os.path.join(get_in_path(localdir, builddir, pathtype), 'bibliography', 'biblio') + + if copy_figs: + bibloc_abs = os.path.join(get_in_path(localdir, builddir, 'abs'), 'bibliography', 'biblio') + '.bib' + shutil.copy(bibloc_abs, os.path.join(builddir, os.path.split(bibloc_abs)[1])) + bibloc = 'biblio' + else: + bibloc = os.path.join(get_in_path(localdir, builddir, pathtype), 'bibliography', 'biblio') titlecontent = [] if usetitle: @@ -192,7 +211,9 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, elif ls.endswith('.html') or ls.endswith('.htm'): pass # html files aren't latex-able elif ls.startswith('figures'): - sectioninputs.append(get_figure_string(ls, localdir, get_in_path(localdir, builddir, pathtype), flatten=flatten)) + inpath = get_in_path(localdir, builddir, pathtype) + sectioninputs.append(get_figure_string(ls, localdir, inpath, flatten=flatten, + copyto=builddir if copy_figs else False)) else: sectioninputs.append(get_input_string(ls, get_in_path(localdir, builddir, pathtype), flatten=flatten)) sectioninputs = '\n'.join(sectioninputs) @@ -286,7 +307,11 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, 'the .tex file absolute. Default is to do this if ' 'localdir and buildir are different.') parser.add_argument('--flatten', '-t', action='store_true', - help='Directly inputs the content from the files instead of .') + help=r'Directly includes the content from tex files ' + r'instead of using \input.') + parser.add_argument('--copy-figs', '-c', action='store_true', + help='Copy figures and any bib files into the build ' + 'directory and set includes to point to those copies.') args = parser.parse_args() @@ -310,4 +335,5 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, build_authorea_latex(args.localdir, args.build_dir, args.latex, args.bibtex, args.filename, args.usetitle, args.usebibtex, args.n_runs_after_bibtex, args.open_with, - args.titleinput, args.dobuild, pathtype, args.flatten) + args.titleinput, args.dobuild, pathtype, args.flatten, + args.copy_figs) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..e4d8a1c --- /dev/null +++ b/setup.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from setuptools import setup, find_packages + +import pypandoc + +pypandoc.convert_file('README.md', 'rst', outputfile='README.rst') +setup( + name='authorea-scripts', + version='0.0.1', + py_modules=['build-authorea'], + description=('Tools for working locally with Authorea projects'), + url='https://github.com/mpjuers/authorea-scripts', + author='Mark Juers', + author_email='mpjuers@indiana.edu', + license='MIT', + packages=find_packages(), + include_package_data=True, + install_requires=[ + 'pypandoc' + ], + entry_points=''' + [console_scripts] + build-authorea-latex=local_build:main + ''', + zip_safe=False + ) diff --git a/test/TestDocument/title.tex b/test/TestDocument/title.tex new file mode 100644 index 0000000..f15f917 --- /dev/null +++ b/test/TestDocument/title.tex @@ -0,0 +1 @@ +Test document From 8f58e4e5b63b9c4d85168bfc3daca142accf79ab Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Tue, 14 May 2019 13:10:02 -0400 Subject: [PATCH 02/19] added MIT license --- .tags | 54 +-------------- LICENSE | 203 ++------------------------------------------------------ 2 files changed, 5 insertions(+), 252 deletions(-) diff --git a/.tags b/.tags index ea7c22d..8b13789 100644 --- a/.tags +++ b/.tags @@ -1,53 +1 @@ -!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ -!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ -!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ -!_TAG_PROGRAM_NAME Exuberant Ctags // -!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ -!_TAG_PROGRAM_VERSION 5.8 // -FIGURE_DEFAULTS local_build.py /^FIGURE_DEFAULTS = {'placement': '', 'width': '1\\columnwidth', 'figure_env': 'figure'}$/;" v -argparse local_build.py /^ import argparse$/;" i -args local_build.py /^ args = parser.parse_args()$/;" v -author setup.py /^ author='Mark Juers',$/;" v -author_email setup.py /^ author_email='mpjuers@indiana.edu',$/;" v -build_authorea_latex local_build.py /^def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname,$/;" f -description setup.py /^ description=('Tools for working locally with Authorea projects'),$/;" v -division local_build.py /^from __future__ import division, print_function$/;" i -find_packages setup.py /^from setuptools import setup, find_packages$/;" i -get_figure_string local_build.py /^def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False):$/;" f -get_in_path local_build.py /^def get_in_path(localdir, builddir, pathtype=None):$/;" f -get_input_string local_build.py /^def get_input_string(filename, localdir, quotepath=True, flatten=False):$/;" f -help local_build.py /^ help='Always make links (to input files and figures) within '$/;" v -help local_build.py /^ help='An executable to launch the output file with. '$/;" v -help local_build.py /^ help='Copy figures and any bib files into the build '$/;" v -help local_build.py /^ help='Only do preprocessing and skip all the build\/open steps')$/;" v -help local_build.py /^ help='Provide this to have the title included via the '$/;" v -help local_build.py /^ help='Provide this to not run bibtex.')$/;" v -help local_build.py /^ help='Provide this to skip the title command.')$/;" v -help local_build.py /^ help='The directory to actually search for the authorea'$/;" v -help local_build.py /^ help='The executable to use for the bibtex build step.')$/;" v -help local_build.py /^ help='The executable to use for the latex build step.')$/;" v -help local_build.py /^ help='The name to use for the output tex file.')$/;" v -help local_build.py /^ help='The number of times to call latex after bibtex.')$/;" v -help local_build.py /^ help='the directory to build the paper in')$/;" v -help local_build.py /^ help=r'Directly includes the content from tex files '$/;" v -include_package_data setup.py /^ include_package_data=True,$/;" v -install_requires setup.py /^ install_requires=[$/;" v -json local_build.py /^ import json$/;" i -license setup.py /^ license='MIT',$/;" v -name setup.py /^ name='authorea-scripts',$/;" v -os local_build.py /^import os$/;" i -packages setup.py /^ packages=find_packages(),$/;" v -parser local_build.py /^ parser = argparse.ArgumentParser(description='Local builder for authorea papers.')$/;" v -pathtype local_build.py /^ pathtype = 'abs'$/;" v -pathtype local_build.py /^ pathtype = 'rel'$/;" v -pathtype local_build.py /^ pathtype = None$/;" v -print_function local_build.py /^from __future__ import division, print_function$/;" i -py_modules setup.py /^ py_modules=['build-authorea'],$/;" v -pypandoc setup.py /^import pypandoc$/;" i -setup setup.py /^from setuptools import setup, find_packages$/;" i -shutil local_build.py /^import shutil$/;" i -subprocess local_build.py /^import subprocess$/;" i -sys local_build.py /^import sys$/;" i -url setup.py /^ url='https:\/\/github.com\/mpjuers\/authorea-scripts',$/;" v -version setup.py /^ version='0.0.1',$/;" v -zip_safe setup.py /^ zip_safe=False$/;" v + diff --git a/LICENSE b/LICENSE index 8f71f43..3d482df 100644 --- a/LICENSE +++ b/LICENSE @@ -1,202 +1,7 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +Copyright 2019 Mark Juers - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From f2640f8bd30a828059bbcfbb34f7341224d09b94 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Tue, 14 May 2019 13:21:25 -0400 Subject: [PATCH 03/19] Restructured repo to be a python package. Added test document. added setup.py added test project changes to setup.py build script name changed 'args' in build_authorea_latex to 'buildargs' added a reference to test doc --- .gitignore | 5 + .tags | 1 - local_build.py | 35 +++-- requirements.txt | 2 + test/TestDocument/Test document.zip | Bin 0 -> 49316 bytes .../TestDocument/bibliography/.placeholder.md | 1 + test/TestDocument/bibliography/biblio.bib | 12 ++ .../bibliography/converted_to_latex.bib | 12 ++ .../figures/scatterplot/caption.html | 1 + .../figures/scatterplot/config.yml | 20 +++ .../figures/scatterplot/scatterplot.png | Bin 0 -> 25347 bytes .../scatterplot/scatterplot_original.png | Bin 0 -> 28070 bytes test/TestDocument/full_article.tex | 135 ++++++++++++++++++ test/TestDocument/layout.md | 2 + test/TestDocument/title.html | 1 + test/TestDocument/untitled.html | 1 + 16 files changed, 216 insertions(+), 12 deletions(-) delete mode 100644 .tags create mode 100644 requirements.txt create mode 100644 test/TestDocument/Test document.zip create mode 100644 test/TestDocument/bibliography/.placeholder.md create mode 100644 test/TestDocument/bibliography/biblio.bib create mode 100644 test/TestDocument/bibliography/converted_to_latex.bib create mode 100644 test/TestDocument/figures/scatterplot/caption.html create mode 100644 test/TestDocument/figures/scatterplot/config.yml create mode 100644 test/TestDocument/figures/scatterplot/scatterplot.png create mode 100644 test/TestDocument/figures/scatterplot/scatterplot_original.png create mode 100644 test/TestDocument/full_article.tex create mode 100644 test/TestDocument/layout.md create mode 100644 test/TestDocument/title.html create mode 100644 test/TestDocument/untitled.html diff --git a/.gitignore b/.gitignore index ba74660..20d6223 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,8 @@ docs/_build/ # PyBuilder target/ + +.tags +README.rst +test/TestDocument/Build/ +test/TestDocument/title.tex diff --git a/.tags b/.tags deleted file mode 100644 index 8b13789..0000000 --- a/.tags +++ /dev/null @@ -1 +0,0 @@ - diff --git a/local_build.py b/local_build.py index 13c5e54..dcc988d 100755 --- a/local_build.py +++ b/local_build.py @@ -30,9 +30,13 @@ import shutil import subprocess +from pypandoc import convert_file #lots of dobule-{}'s are here because we use it as a formatting template below MAIN_TEMPLATE = r""" +\documentclass[12pt]{{article}} +\usepackage{{graphicx}} + {preamblein} {headerin} @@ -211,6 +215,7 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, elif ls.endswith('.html') or ls.endswith('.htm'): pass # html files aren't latex-able elif ls.startswith('figures'): + ls = ls + ls.lstrip('figures') inpath = get_in_path(localdir, builddir, pathtype) sectioninputs.append(get_figure_string(ls, localdir, inpath, flatten=flatten, copyto=builddir if copy_figs else False)) @@ -238,25 +243,26 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, if dobuild: #now actually run latex/bibtex - args = [latex_exec, outname + '.tex'] + buildargs = [latex_exec, outname + '.tex'] print('\n\RUNNING THIS COMMAND: "{0}"\n'.format(' '.join([latex_exec, outname + '.tex']))) - subprocess.check_call(args, cwd=builddir) + subprocess.check_call(buildargs, cwd=builddir) if dobibtex: - args = [bibtex_exec, outname] + breakpoint() + buildargs = [bibtex_exec, outname] print('\n\RUNNING THIS COMMAND: "{0}"\n'.format(' '.join([latex_exec, outname + '.tex']))) - subprocess.check_call(args, cwd=builddir) + subprocess.check_call(buildargs, cwd=builddir) for _ in range(npostbibcalls): - args = [latex_exec, outname + '.tex'] + buildargs = [latex_exec, outname + '.tex'] print('\n\RUNNING THIS COMMAND: "{0}"\n'.format(' '.join([latex_exec, outname + '.tex']))) - subprocess.check_call(args, cwd=builddir) + subprocess.check_call(buildargs, cwd=builddir) #launch the result if necessary resultfn = outtexpath[:-4] + ('.pdf' if 'pdf' in latex_exec else '.dvi') if openwith: - args = openwith.split(' ') - args.append(resultfn) - print('\nLaunching as:' + str(args), '\n') - subprocess.check_call(args) + buildargs = openwith.split(' ') + buildargs.append(resultfn) + print('\nLaunching as:' + str(buildargs), '\n') + subprocess.check_call(buildargs) else: msg = '\nBuild completed. You can see the result in "{0}": "{1}"' print(msg.format(builddir, resultfn), '\n') @@ -265,7 +271,7 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, print(msg.format(os.path.join(builddir, outname))) -if __name__ == '__main__': +def main(): import argparse parser = argparse.ArgumentParser(description='Local builder for authorea papers.') @@ -317,6 +323,9 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, pathtype = None + convert_file(os.path.join(args.localdir, 'title.html'), + 'latex', outputfile=os.path.join(args.localdir, 'title.tex')) + if args.flatten and (args.rellinks or args.abslinks): print('You cannot use both "--flatten" and either "--relative-links" ' 'or "--absolute-links".') @@ -337,3 +346,7 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, args.n_runs_after_bibtex, args.open_with, args.titleinput, args.dobuild, pathtype, args.flatten, args.copy_figs) + + +if __name__ == "__main__": + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b128a62 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +setuptools==39.0.1 +pypandoc==1.4 diff --git a/test/TestDocument/Test document.zip b/test/TestDocument/Test document.zip new file mode 100644 index 0000000000000000000000000000000000000000..00c4489a561e1f8075ab0c8c72baf834aaad0c39 GIT binary patch literal 49316 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 scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369. \ No newline at end of file diff --git a/test/TestDocument/figures/scatterplot/config.yml b/test/TestDocument/figures/scatterplot/config.yml new file mode 100644 index 0000000..91e2580 --- /dev/null +++ b/test/TestDocument/figures/scatterplot/config.yml @@ -0,0 +1,20 @@ +--- +version: 2 +multicolumn: false +web-width: 500px +align: center +float: h! +grid: + rows: 1 + columns: 1 + grid_elements: + - path: figures/scatterplot/scatterplot.png + type: static + from: + - 1 + - 1 + to: + - 1 + - 1 + url: "/users/263225/articles/372534/master/file/figures/scatterplot/scatterplot.png" + folder_url: "/users/263225/articles/372534/master/folder/figures/scatterplot" diff --git a/test/TestDocument/figures/scatterplot/scatterplot.png b/test/TestDocument/figures/scatterplot/scatterplot.png new file mode 100644 index 0000000000000000000000000000000000000000..651731bdc83dbf876fd6c4c54839ed67934aaff8 GIT binary patch literal 25347 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 S3-G~H9!fj@vHZ`J%l`!y!86qW literal 0 HcmV?d00001 diff --git a/test/TestDocument/figures/scatterplot/scatterplot_original.png b/test/TestDocument/figures/scatterplot/scatterplot_original.png new file mode 100644 index 0000000000000000000000000000000000000000..48e04d361f807ee9496a42bd98e97e4a1fb192ba GIT binary patch literal 28070 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�zd;0Gz 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 document \ No newline at end of file diff --git a/test/TestDocument/untitled.html b/test/TestDocument/untitled.html new file mode 100644 index 0000000..04cf71d --- /dev/null +++ b/test/TestDocument/untitled.html @@ -0,0 +1 @@ +

A heading

Another heading

\cite{ebert_epidemiology_2013}
\ No newline at end of file From e524d07df88678104810ed45bd17c261eab9b450 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Wed, 15 May 2019 13:28:09 -0400 Subject: [PATCH 04/19] I added code to parse html sections using pypandoc and assemble the document. Also, added command line args for bibliography style and natbib citation command. added pandocfilters to setup.py changed to panflute got regex working in stripreftags.py got compilation working Basic compilation working. Needs author. added affiliations Installation and usage instructions in README.md packaged scripts repackaged added Session.vim to .gitignore got label filter working got citation working Added cite command argument. fixed captions --- .gitignore | 2 + README.md | 9 +++ authorea_scripts/__init__.py | 0 .../local_build.py | 62 +++++++++++++----- authorea_scripts/stripreftags.py | 49 ++++++++++++++ requirements.txt | 1 + setup.py | 6 +- test/TestDocument/Test document.zip | Bin 49316 -> 50348 bytes .../figures/scatterplot/caption.html | 2 +- test/TestDocument/full_article.tex | 32 +++++++++ test/TestDocument/header.tex | 26 ++++++++ test/TestDocument/untitled.html | 2 +- 12 files changed, 170 insertions(+), 21 deletions(-) create mode 100644 authorea_scripts/__init__.py rename local_build.py => authorea_scripts/local_build.py (88%) create mode 100755 authorea_scripts/stripreftags.py create mode 100644 test/TestDocument/header.tex diff --git a/.gitignore b/.gitignore index 20d6223..3f12a07 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,5 @@ target/ README.rst test/TestDocument/Build/ test/TestDocument/title.tex +Session.vim +.tags diff --git a/README.md b/README.md index 1a83535..ff7a890 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ # authorea-scripts Scripts for working with Authorea articles. + +Installation: pip install authorea-scripts + +Usage of build-authorea-latex: build-authorea-latex [options] + +You must install latexml.sty from +https://github.com/brucemiller/LaTeXML/blob/master/lib/LaTeXML/texmf/latexml.sty +Just put is in ~/Library/texmf/tex/latex/latexml/ on Mac, or +~/texmf/tex/latex/latexml/ on Linux (I don't know about Windows, unfortunately). diff --git a/authorea_scripts/__init__.py b/authorea_scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/local_build.py b/authorea_scripts/local_build.py similarity index 88% rename from local_build.py rename to authorea_scripts/local_build.py index dcc988d..e173372 100755 --- a/local_build.py +++ b/authorea_scripts/local_build.py @@ -36,17 +36,23 @@ MAIN_TEMPLATE = r""" \documentclass[12pt]{{article}} \usepackage{{graphicx}} +\usepackage{{hyperref}} +\usepackage{{natbib}} +\usepackage{{latexml}} + +\let\cite\{citecommand} {preamblein} {headerin} -\begin{{document}} - {titlecontent} +\begin{{document}} + {sectioninputs} +\bibliographystyle{{{bibstyle}}} \bibliography{{{bibloc}}}{{}} \end{{document}} @@ -61,7 +67,7 @@ \end{} """.replace('{', '{{').replace('}', '}}').replace('<', '{').replace('>', '}') -FIGURE_DEFAULTS = {'placement': '', 'width': '1\columnwidth', 'figure_env': 'figure'} +FIGURE_DEFAULTS = {'placement': '', 'width': '1\columnwidth', 'figure_env': 'figure', 'caption': ''} def get_input_string(filename, localdir, quotepath=True, flatten=False): @@ -79,7 +85,7 @@ def get_input_string(filename, localdir, quotepath=True, flatten=False): quote_chr = '"' else: quote_chr = '' - return r'\input{' + quote_chr + os.path.join(localdir, filename) + quote_chr + '}' + return r'\input{' + os.path.join(localdir, filename) + '}' def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False): @@ -89,8 +95,9 @@ def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False) fignamebase = os.path.splitext(figname)[0] figfn = os.path.join(inputdir, filename) - pdffn = os.path.join(localdir, figdir, fignamebase + '.pdf') - epsfn = os.path.join(localdir, figdir, fignamebase + '.eps') + pngfn = os.path.join(localdir, figdir, fignamebase, fignamebase + '.png') + pdffn = os.path.join(localdir, figdir, fignamebase, fignamebase + '.pdf') + epsfn = os.path.join(localdir, figdir, fignamebase, fignamebase + '.eps') if copyto: figpath = os.path.join(localdir, filename) @@ -100,20 +107,31 @@ def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False) elif os.path.exists(epsfn): figpath = epsfn figfn = fignamebase + elif os.path.exists(pngfn): + figpath = pngfn + figfn = fignamebase elif os.path.exists(figpath): figfn = figname else: raise IOError('Could not find figure file {}'.format(figpath)) shutil.copy(figpath, os.path.join(copyto, os.path.split(figpath)[1])) - else: - if os.path.exists(pdffn) or os.path.exists(epsfn): - figfn = os.path.join(inputdir, figdir, fignamebase) - + if ( os.path.exists(pdffn) + or os.path.exists(epsfn) + or os.path.exists(pngfn) + ): + figfn = os.path.join(inputdir, figdir, fignamebase, fignamebase) if os.path.exists(os.path.join(localdir, figdir, 'caption.tex')): capinput = get_input_string('caption', os.path.join(inputdir, figdir), False, flatten=flatten) caption = r'\caption{ \protect' + capinput.strip() + '}' + elif os.path.exists( + os.path.join(localdir, figdir, 'caption.html') + ): + caption = convert_file( + os.path.join(localdir, figdir, 'caption.html'), + 'latex', format='html', filters=['stripreftags'], + ) else: caption = '' @@ -130,6 +148,7 @@ def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False) figopts[k] = v if len(optsjson) != 0: raise ValueError('Entries in "{0}" that were not understood: {1}'.format(optsfn, optsjson)) + figopts['caption'] = caption figopts.update(locals()) return FIGURE_TEMPLATE.format(**figopts) @@ -162,7 +181,8 @@ def get_in_path(localdir, builddir, pathtype=None): def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, usetitle, dobibtex, npostbibcalls, openwith, titleinput, - dobuild, pathtype, flatten, copy_figs): + dobuild, pathtype, flatten, copy_figs, bibstyle, + citecommand): if not os.path.exists(builddir): os.mkdir(builddir) @@ -189,18 +209,19 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, shutil.copy(bibloc_abs, os.path.join(builddir, os.path.split(bibloc_abs)[1])) bibloc = 'biblio' else: - bibloc = os.path.join(get_in_path(localdir, builddir, pathtype), 'bibliography', 'biblio') + bibloc = os.path.join(get_in_path(localdir, builddir, pathtype), 'bibliography', 'biblio') + '.bib' titlecontent = [] + sectioninputs = [] if usetitle: if titleinput: titlestr = get_input_string('title', get_in_path(localdir, builddir, pathtype), flatten=flatten) else: with open(os.path.join(get_in_path(localdir, builddir, 'abs'), 'title.tex')) as f: titlestr = f.read() - titlecontent.append(r'\title{' + titlestr + '}') + titlecontent.append(r'\title{' + titlestr.strip('\n') + '}') + sectioninputs.append('\maketitle\n') - sectioninputs = [] with open(os.path.join(localdir, 'layout.md')) as f: for l in f: ls = l.strip() @@ -213,7 +234,10 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, titlein = get_input_string('abstract', get_in_path(localdir, builddir, pathtype), flatten=flatten) titlecontent.append(r'\begin{abstract}' + titlein + '\end{abstract}') elif ls.endswith('.html') or ls.endswith('.htm'): - pass # html files aren't latex-able + html_to_tex = convert_file( + os.path.join(localdir, ls), + 'latex', filters=['stripreftags']) + sectioninputs.append(html_to_tex) elif ls.startswith('figures'): ls = ls + ls.lstrip('figures') inpath = get_in_path(localdir, builddir, pathtype) @@ -247,7 +271,6 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, print('\n\RUNNING THIS COMMAND: "{0}"\n'.format(' '.join([latex_exec, outname + '.tex']))) subprocess.check_call(buildargs, cwd=builddir) if dobibtex: - breakpoint() buildargs = [bibtex_exec, outname] print('\n\RUNNING THIS COMMAND: "{0}"\n'.format(' '.join([latex_exec, outname + '.tex']))) subprocess.check_call(buildargs, cwd=builddir) @@ -318,6 +341,11 @@ def main(): parser.add_argument('--copy-figs', '-c', action='store_true', help='Copy figures and any bib files into the build ' 'directory and set includes to point to those copies.') + parser.add_argument('--bibstyle', nargs='?', default='apa', + help='The bibliography style to use') + parser.add_argument('--citecommand', nargs='?', default='citep', + help='The primary natbib citation command to use.' + ' Omit leading backslash.') args = parser.parse_args() @@ -345,7 +373,7 @@ def main(): args.filename, args.usetitle, args.usebibtex, args.n_runs_after_bibtex, args.open_with, args.titleinput, args.dobuild, pathtype, args.flatten, - args.copy_figs) + args.copy_figs, args.bibstyle, args.citecommand) if __name__ == "__main__": diff --git a/authorea_scripts/stripreftags.py b/authorea_scripts/stripreftags.py new file mode 100755 index 0000000..5c80cc1 --- /dev/null +++ b/authorea_scripts/stripreftags.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +""" +Pandoc filter to strip tags from references and citations and write plain +text. +""" +import re +import panflute as pf + +pattern = re.compile('\\\\(cite[tp]?|ref)\{(.*)\}') + + +def striptags(elem, doc): + try: + if elem.format == 'html': + return[] + except AttributeError: + pass + + +def destring(elem, doc): + if isinstance(elem, pf.Str): + pf.debug(elem.text) + pf.debug(pattern.match(elem.text)) + return pf.RawInline(re.sub(pattern, r'\\\1{\2}', elem.text), + format='latex') + else: + return elem + + +def labels(elem, doc): + try: + if 'label' in elem.attributes.keys(): + return (pf.Plain( + pf.RawInline('\\caption{' + '\\label{' + + elem.attributes['label'] + '}', + format='latex'), + *elem.content[0].content, + pf.Str('}') + )) + except AttributeError: + pass + + +def main(doc=None): + return pf.run_filters((labels, striptags, destring), doc=doc) + + +if __name__ == '__main__': + main() diff --git a/requirements.txt b/requirements.txt index b128a62..498ba48 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ setuptools==39.0.1 +panflute==1.11.2 pypandoc==1.4 diff --git a/setup.py b/setup.py index e4d8a1c..5ff7c67 100644 --- a/setup.py +++ b/setup.py @@ -18,11 +18,13 @@ packages=find_packages(), include_package_data=True, install_requires=[ - 'pypandoc' + 'pypandoc', + 'panflute' ], entry_points=''' [console_scripts] - build-authorea-latex=local_build:main + build-authorea-latex=authorea_scripts.local_build:main + stripreftags=authorea_scripts.stripreftags:main ''', zip_safe=False ) diff --git a/test/TestDocument/Test document.zip b/test/TestDocument/Test document.zip index 00c4489a561e1f8075ab0c8c72baf834aaad0c39..da492b3e9dd79a2aa673320425453e1f29b5a6c8 100644 GIT binary patch delta 2859 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 TNm6Pr1#Gv;O9DU&XK(d4+6z?~ diff --git a/test/TestDocument/figures/scatterplot/caption.html b/test/TestDocument/figures/scatterplot/caption.html index e45c309..9bdcc4b 100644 --- a/test/TestDocument/figures/scatterplot/caption.html +++ b/test/TestDocument/figures/scatterplot/caption.html @@ -1 +1 @@ -
A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369.
\ No newline at end of file +
A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369.
diff --git a/test/TestDocument/full_article.tex b/test/TestDocument/full_article.tex index caf0f78..66a6799 100644 --- a/test/TestDocument/full_article.tex +++ b/test/TestDocument/full_article.tex @@ -71,6 +71,32 @@ +% Edit this header.tex file to include frontmatter definitions and global macros + +% Add here any LaTeX packages you would like to load in all document blocks +% \usepackage{xspace} +\usepackage{authblk} + +\author[1]{Mark Juers} +\affil[1]{Indiana University} +% Add here any LaTeX macros you would like to load in all document blocks +% \def\example{This is an example macro.} + + +% ----- + +\iflatexml +% Add here any LaTeXML-specific commands + +% ----- + +\else +% Add here any export style-specific LaTeX commands. These will only be loaded upon document export. +% \paperfield{Subject domain of my document} +% \keywords{keyword1, keyword2} +% \corraddress{Author One PhD, Department, Institution, City, State or Province, Postal Code, Country} +% \fundinginfo{Funder One, Funder One Department, Grant/Award Number: 123456.} +\fi \begin{document} @@ -114,6 +140,12 @@ \subsection*{Another heading} \hyperref[csl:1]{(Ebert, 2013)} +\hyperref[csl:1]{(Ebert, 2013)} + +\hyperref[csl:1]{(Ebert, 2013)} + +Figure {\ref{286335}} + \par\null\selectlanguage{english} \begin{figure}[h!] \begin{center} diff --git a/test/TestDocument/header.tex b/test/TestDocument/header.tex new file mode 100644 index 0000000..a98e475 --- /dev/null +++ b/test/TestDocument/header.tex @@ -0,0 +1,26 @@ +% Edit this header.tex file to include frontmatter definitions and global macros + +% Add here any LaTeX packages you would like to load in all document blocks +% \usepackage{xspace} +\usepackage{authblk} + +\author[1]{Mark Juers} +\affil[1]{Indiana University} +% Add here any LaTeX macros you would like to load in all document blocks +% \def\example{This is an example macro.} + + +% ----- + +\iflatexml +% Add here any LaTeXML-specific commands + +% ----- + +\else +% Add here any export style-specific LaTeX commands. These will only be loaded upon document export. +% \paperfield{Subject domain of my document} +% \keywords{keyword1, keyword2} +% \corraddress{Author One PhD, Department, Institution, City, State or Province, Postal Code, Country} +% \fundinginfo{Funder One, Funder One Department, Grant/Award Number: 123456.} +\fi diff --git a/test/TestDocument/untitled.html b/test/TestDocument/untitled.html index 04cf71d..d30239f 100644 --- a/test/TestDocument/untitled.html +++ b/test/TestDocument/untitled.html @@ -1 +1 @@ -

A heading

Another heading

\cite{ebert_epidemiology_2013}
\ No newline at end of file +

A heading

Another heading

\cite{ebert_epidemiology_2013}
\citet{ebert_epidemiology_2013}
\citep[see][]{ebert_epidemiology_2013}
Figure \ref{286335}
\ No newline at end of file From b0910cf597f0048fc10908e6e6ed0c6e0c391da8 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Wed, 5 Jun 2019 10:36:03 -0400 Subject: [PATCH 05/19] Fix a few compilation errors and add pandoc preamble. Add equations to test document. Fixed dollar sign escapes Fix issue with spacing before inline math. I pasted in the pandoc preamble that was preventing proper compilation. --- authorea_scripts/local_build.py | 52 ++++++++++++++++-- authorea_scripts/stripreftags.py | 38 ++++++++++--- changelog.md | 6 ++ setup.py | 2 +- test/TestDocument/Test document.zip | Bin 50348 -> 51240 bytes .../figures/scatterplot/caption.html | 2 +- test/TestDocument/full_article.tex | 11 +++- test/TestDocument/layout.md | 3 + test/TestDocument/li1fpi8krbo.html | 1 + test/TestDocument/nat261l8ito.html | 1 + test/TestDocument/rtdm09a2c6g.tex | 4 ++ test/TestDocument/untitled.html | 2 +- 12 files changed, 106 insertions(+), 16 deletions(-) create mode 100644 changelog.md create mode 100644 test/TestDocument/li1fpi8krbo.html create mode 100644 test/TestDocument/nat261l8ito.html create mode 100644 test/TestDocument/rtdm09a2c6g.tex diff --git a/authorea_scripts/local_build.py b/authorea_scripts/local_build.py index e173372..57ce26d 100755 --- a/authorea_scripts/local_build.py +++ b/authorea_scripts/local_build.py @@ -34,13 +34,57 @@ #lots of dobule-{}'s are here because we use it as a formatting template below MAIN_TEMPLATE = r""" +% Options for packages loaded elsewhere +\PassOptionsToPackage{{unicode}}{{hyperref}} +\PassOptionsToPackage{{hyphens}}{{url}} \documentclass[12pt]{{article}} \usepackage{{graphicx}} \usepackage{{hyperref}} \usepackage{{natbib}} \usepackage{{latexml}} -\let\cite\{citecommand} +% From pandoc +\usepackage{{lmodern}} +\usepackage{{amssymb,amsmath}} +\usepackage{{ifxetex,ifluatex}} +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[T1]{{fontenc}} + \usepackage[utf8]{{inputenc}} + \usepackage{{textcomp}} % provide euro and other symbols +\else % if luatex or xetex + \usepackage{{unicode-math}} + \defaultfontfeatures{{Scale=MatchLowercase}} + \defaultfontfeatures[\rmfamily]{{Ligatures=TeX,Scale=1}} +\fi +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{{upquote.sty}}{{\usepackage{{upquote}}}}{{}} +\IfFileExists{{microtype.sty}}{{% use microtype if available + \usepackage[]{{microtype}} + \UseMicrotypeSet[protrusion]{{basicmath}} % disable protrusion for tt fonts +}}{{}} +\makeatletter +\@ifundefined{{KOMAClassName}}{{% if non-KOMA class + \IfFileExists{{parskip.sty}}{{% + \usepackage{{parskip}} + }}{{% else + \setlength{{\parindent}}{{0pt}} + \setlength{{\parskip}}{{6pt plus 2pt minus 1pt}}}} +}}{{% if KOMA class + \KOMAoptions{{parskip=half}}}} +\makeatother +\usepackage{{xcolor}} +\IfFileExists{{xurl.sty}}{{\usepackage{{xurl}}}}{{}} % add URL line breaks if available +\IfFileExists{{bookmark.sty}}{{\usepackage{{bookmark}}}}{{\usepackage{{hyperref}}}} +\hypersetup{{ + hidelinks, + pdfcreator={{LaTeX via pandoc}}}} +\urlstyle{{same}} % disable monospaced font for URLs +\setlength{{\emergencystretch}}{{3em}} % prevent overfull lines +\providecommand{{\tightlist}}{{% + \setlength{{\itemsep}}{{0pt}}\setlength{{\parskip}}{{0pt}}}} +\setcounter{{secnumdepth}}{{-\maxdimen}} % remove section numbering + +\date{{}} {preamblein} @@ -130,7 +174,7 @@ def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False) ): caption = convert_file( os.path.join(localdir, figdir, 'caption.html'), - 'latex', format='html', filters=['stripreftags'], + 'latex', format='html+tex_math_dollars', filters=['stripreftags'], ) else: caption = '' @@ -236,7 +280,7 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, elif ls.endswith('.html') or ls.endswith('.htm'): html_to_tex = convert_file( os.path.join(localdir, ls), - 'latex', filters=['stripreftags']) + 'latex', format='html+tex_math_dollars', filters=['stripreftags']) sectioninputs.append(html_to_tex) elif ls.startswith('figures'): ls = ls + ls.lstrip('figures') @@ -352,7 +396,7 @@ def main(): pathtype = None convert_file(os.path.join(args.localdir, 'title.html'), - 'latex', outputfile=os.path.join(args.localdir, 'title.tex')) + 'latex', format='html+tex_math_dollars', outputfile=os.path.join(args.localdir, 'title.tex')) if args.flatten and (args.rellinks or args.abslinks): print('You cannot use both "--flatten" and either "--relative-links" ' diff --git a/authorea_scripts/stripreftags.py b/authorea_scripts/stripreftags.py index 5c80cc1..620178a 100755 --- a/authorea_scripts/stripreftags.py +++ b/authorea_scripts/stripreftags.py @@ -6,10 +6,28 @@ import re import panflute as pf -pattern = re.compile('\\\\(cite[tp]?|ref)\{(.*)\}') -def striptags(elem, doc): +def multireplace(string, replacements): + """ + Given a string and a replacement map, it returns the replaced string. + :param str string: string to execute replacements on + :param dict replacements: replacement dictionary {value to find: value to replace} + :rtype: str + """ + # Place longer ones first to keep shorter substrings from matching where the longer ones should take place + # For instance given the replacements {'ab': 'AB', 'abc': 'ABC'} against the string 'hey abc', it should produce + # 'hey ABC' and not 'hey ABc' + substrs = sorted(replacements, key=len, reverse=True) + + # Create a big OR regex that matches any of the substrings to replace + regexp = re.compile('|'.join(map(re.escape, substrs))) + + # For each match, look up the new string in the replacements + return regexp.sub(lambda match: replacements[match.group(0)], string) + + +def striptags(elem, doc, replacements): try: if elem.format == 'html': return[] @@ -17,17 +35,15 @@ def striptags(elem, doc): pass -def destring(elem, doc): +def destring(elem, doc, replacements): if isinstance(elem, pf.Str): - pf.debug(elem.text) - pf.debug(pattern.match(elem.text)) - return pf.RawInline(re.sub(pattern, r'\\\1{\2}', elem.text), + return pf.RawInline(multireplace(elem.text, replacements), format='latex') else: return elem -def labels(elem, doc): +def labels(elem, doc, replacements): try: if 'label' in elem.attributes.keys(): return (pf.Plain( @@ -39,10 +55,16 @@ def labels(elem, doc): )) except AttributeError: pass + # Extra section headers with not content can cause an IndexError. + except IndexError: + pass def main(doc=None): - return pf.run_filters((labels, striptags, destring), doc=doc) + replacements = {'\\\\(cite[tp]?|ref)\{(.*)\}': r'\\\1{\2}', + '$': r'\$'} + return pf.run_filters((labels, striptags, destring), + doc=doc, replacements=replacements) if __name__ == '__main__': diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..02ce488 --- /dev/null +++ b/changelog.md @@ -0,0 +1,6 @@ +# Changelog + +## 0.0.2 + +- Fixed an error that caused inline math to be typset without space before. +- Fixed compilation errors with multiple section headings. diff --git a/setup.py b/setup.py index 5ff7c67..09142fe 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ pypandoc.convert_file('README.md', 'rst', outputfile='README.rst') setup( name='authorea-scripts', - version='0.0.1', + version='0.0.2', py_modules=['build-authorea'], description=('Tools for working locally with Authorea projects'), url='https://github.com/mpjuers/authorea-scripts', diff --git a/test/TestDocument/Test document.zip b/test/TestDocument/Test document.zip index da492b3e9dd79a2aa673320425453e1f29b5a6c8..056ad6b540c39e91b4648421927bfee7fc22a623 100644 GIT binary patch delta 3314 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 scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369. +
A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369.
\ No newline at end of file diff --git a/test/TestDocument/full_article.tex b/test/TestDocument/full_article.tex index 66a6799..c8dcb8d 100644 --- a/test/TestDocument/full_article.tex +++ b/test/TestDocument/full_article.tex @@ -146,7 +146,16 @@ \subsection*{Another heading} Figure {\ref{286335}} -\par\null\selectlanguage{english} +Eq~{\ref{eq:eq1}} + +An inline equation:~\(\int_0^xf\left(t\right)\mathrm{d}t\). And a display equation. + +\begin{equation} +\label{eq:eq1} +\int_0^x f(t) \mathrm{d}t +\end{equation} + +Some troublesome dollar signs: \$100, \$200, \$300\selectlanguage{english} \begin{figure}[h!] \begin{center} \includegraphics[width=0.70\columnwidth]{figures/scatterplot/scatterplot} diff --git a/test/TestDocument/layout.md b/test/TestDocument/layout.md index 4311f81..d441ae2 100644 --- a/test/TestDocument/layout.md +++ b/test/TestDocument/layout.md @@ -1,2 +1,5 @@ untitled.html +li1fpi8krbo.html +rtdm09a2c6g.tex +nat261l8ito.html figures/scatterplot \ No newline at end of file diff --git a/test/TestDocument/li1fpi8krbo.html b/test/TestDocument/li1fpi8krbo.html new file mode 100644 index 0000000..ad0251e --- /dev/null +++ b/test/TestDocument/li1fpi8krbo.html @@ -0,0 +1 @@ +
An inline equation: \(\int_0^xf\left(t\right)\mathrm{d}t\). And a display equation.
\ No newline at end of file diff --git a/test/TestDocument/nat261l8ito.html b/test/TestDocument/nat261l8ito.html new file mode 100644 index 0000000..61fe1f8 --- /dev/null +++ b/test/TestDocument/nat261l8ito.html @@ -0,0 +1 @@ +
Some troublesome dollar signs: $100, $200, $300
\ No newline at end of file diff --git a/test/TestDocument/rtdm09a2c6g.tex b/test/TestDocument/rtdm09a2c6g.tex new file mode 100644 index 0000000..328b7ce --- /dev/null +++ b/test/TestDocument/rtdm09a2c6g.tex @@ -0,0 +1,4 @@ +\begin{equation} +\label{eq:eq1} +\int_0^x f(t) \mathrm{d}t +\end{equation} \ No newline at end of file diff --git a/test/TestDocument/untitled.html b/test/TestDocument/untitled.html index d30239f..5f8be20 100644 --- a/test/TestDocument/untitled.html +++ b/test/TestDocument/untitled.html @@ -1 +1 @@ -

A heading

Another heading

\cite{ebert_epidemiology_2013}
\citet{ebert_epidemiology_2013}
\citep[see][]{ebert_epidemiology_2013}
Figure \ref{286335}
\ No newline at end of file +

A heading

Another heading

\cite{ebert_epidemiology_2013}
\citet{ebert_epidemiology_2013}
\citep[see][]{ebert_epidemiology_2013}
Figure \ref{286335}
Eq \ref{eq:eq1}
\ No newline at end of file From 83d6d762f0484ecb04f64206c95cdcdd7ebb11e7 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Thu, 23 May 2019 10:32:17 -0400 Subject: [PATCH 06/19] added classifiers to setup.py --- setup.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 09142fe..7695602 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ name='authorea-scripts', version='0.0.2', py_modules=['build-authorea'], - description=('Tools for working locally with Authorea projects'), + description='Tools for working locally with Authorea projects', url='https://github.com/mpjuers/authorea-scripts', author='Mark Juers', author_email='mpjuers@indiana.edu', @@ -26,5 +26,10 @@ build-authorea-latex=authorea_scripts.local_build:main stripreftags=authorea_scripts.stripreftags:main ''', - zip_safe=False + zip_safe=False, + classifiers=[ + 'Programming Language :: Python :: 3', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + ] ) From a9450739a6c87c99212ab0c114f1d5b5f18efb96 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Thu, 6 Jun 2019 15:12:47 -0400 Subject: [PATCH 07/19] Add new output options. Add '--spacing' and '--noparskip' options. --- authorea_scripts/local_build.py | 51 +++++++++++++++++++++++++-------- changelog.md | 5 ++++ setup.py | 2 +- 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/authorea_scripts/local_build.py b/authorea_scripts/local_build.py index 57ce26d..efa6e0c 100755 --- a/authorea_scripts/local_build.py +++ b/authorea_scripts/local_build.py @@ -42,6 +42,7 @@ \usepackage{{hyperref}} \usepackage{{natbib}} \usepackage{{latexml}} +\usepackage{{setspace}} % From pandoc \usepackage{{lmodern}} @@ -62,16 +63,7 @@ \usepackage[]{{microtype}} \UseMicrotypeSet[protrusion]{{basicmath}} % disable protrusion for tt fonts }}{{}} -\makeatletter -\@ifundefined{{KOMAClassName}}{{% if non-KOMA class - \IfFileExists{{parskip.sty}}{{% - \usepackage{{parskip}} - }}{{% else - \setlength{{\parindent}}{{0pt}} - \setlength{{\parskip}}{{6pt plus 2pt minus 1pt}}}} -}}{{% if KOMA class - \KOMAoptions{{parskip=half}}}} -\makeatother +{parskip} \usepackage{{xcolor}} \IfFileExists{{xurl.sty}}{{\usepackage{{xurl}}}}{{}} % add URL line breaks if available \IfFileExists{{bookmark.sty}}{{\usepackage{{bookmark}}}}{{\usepackage{{hyperref}}}} @@ -94,6 +86,8 @@ \begin{{document}} +{spacing} + {sectioninputs} \bibliographystyle{{{bibstyle}}} @@ -226,7 +220,33 @@ def get_in_path(localdir, builddir, pathtype=None): def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, usetitle, dobibtex, npostbibcalls, openwith, titleinput, dobuild, pathtype, flatten, copy_figs, bibstyle, - citecommand): + citecommand, spacing, noparskip): + + if noparskip: + parskip = '' + else: + parskip = r''' + \makeatletter + \@ifundefined{{KOMAClassName}}{{% if non-KOMA class + \IfFileExists{{parskip.sty}}{{% + \usepackage{{parskip}} + }}{{% else + \setlength{{\parindent}}{{0pt}} + \setlength{{\parskip}}{{6pt plus 2pt minus 1pt}}}} + }}{{% if KOMA class + \KOMAoptions{{parskip=half}}}} + \makeatother + ''' + + if spacing == 'single': + spacing = '' + elif spacing == 'half': + spacing = r'\onehalfspacing' + elif spacing == 'double': + spacing = r'\doublespacing' + else: + raise ValueError('spacing must be "single, half, or double"') + if not os.path.exists(builddir): os.mkdir(builddir) @@ -390,6 +410,12 @@ def main(): parser.add_argument('--citecommand', nargs='?', default='citep', help='The primary natbib citation command to use.' ' Omit leading backslash.') + parser.add_argument('--spacing', nargs='?', default='half', + help='Spacing to use for the document. "single", "half", or "double"' + ' "half" is one and one-half') + parser.add_argument('--noparskip', action='store_true', + help='Suppresses loading parskip class for normal' + ' indentation rules.') args = parser.parse_args() @@ -417,7 +443,8 @@ def main(): args.filename, args.usetitle, args.usebibtex, args.n_runs_after_bibtex, args.open_with, args.titleinput, args.dobuild, pathtype, args.flatten, - args.copy_figs, args.bibstyle, args.citecommand) + args.copy_figs, args.bibstyle, args.citecommand, + args.spacing, args.noparskip) if __name__ == "__main__": diff --git a/changelog.md b/changelog.md index 02ce488..2b2c190 100644 --- a/changelog.md +++ b/changelog.md @@ -4,3 +4,8 @@ - Fixed an error that caused inline math to be typset without space before. - Fixed compilation errors with multiple section headings. + +## 0.0.3 + +- Added argument to control spacing. +- Added ability to not use parskip class for standard indentation rules. diff --git a/setup.py b/setup.py index 7695602..e7edc27 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ pypandoc.convert_file('README.md', 'rst', outputfile='README.rst') setup( name='authorea-scripts', - version='0.0.2', + version='0.0.3', py_modules=['build-authorea'], description='Tools for working locally with Authorea projects', url='https://github.com/mpjuers/authorea-scripts', From 5cd89d954c97febd12c15e4a7bd14ec877b6c86b Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Sat, 25 May 2019 21:35:28 -0400 Subject: [PATCH 08/19] added MANIFEST.in --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) create mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..9561fb1 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include README.rst From 25ef41aa15105223106925e204af7180ee95b4f4 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Wed, 19 Jun 2019 17:19:31 -0400 Subject: [PATCH 09/19] Add TestDocumentCustomHeader --- .gitignore | 4 +- .../Test document.zip | Bin 0 -> 51240 bytes .../bibliography/.placeholder.md | 1 + .../bibliography/biblio.bib | 12 ++ .../bibliography/converted_to_latex.bib | 12 ++ .../figures/scatterplot/caption.html | 1 + .../figures/scatterplot/config.yml | 20 ++ .../figures/scatterplot/scatterplot.png | Bin 0 -> 25347 bytes .../scatterplot/scatterplot_original.png | Bin 0 -> 28070 bytes .../TestDocumentCustomHeader/full_article.tex | 176 ++++++++++++++++++ test/TestDocumentCustomHeader/header.tex | 26 +++ test/TestDocumentCustomHeader/layout.md | 5 + .../TestDocumentCustomHeader/li1fpi8krbo.html | 1 + .../TestDocumentCustomHeader/nat261l8ito.html | 1 + test/TestDocumentCustomHeader/preamble.tex | 1 + test/TestDocumentCustomHeader/rtdm09a2c6g.tex | 4 + test/TestDocumentCustomHeader/title.html | 1 + test/TestDocumentCustomHeader/untitled.html | 1 + 18 files changed, 264 insertions(+), 2 deletions(-) create mode 100644 test/TestDocumentCustomHeader/Test document.zip create mode 100644 test/TestDocumentCustomHeader/bibliography/.placeholder.md create mode 100644 test/TestDocumentCustomHeader/bibliography/biblio.bib create mode 100644 test/TestDocumentCustomHeader/bibliography/converted_to_latex.bib create mode 100644 test/TestDocumentCustomHeader/figures/scatterplot/caption.html create mode 100644 test/TestDocumentCustomHeader/figures/scatterplot/config.yml create mode 100644 test/TestDocumentCustomHeader/figures/scatterplot/scatterplot.png create mode 100644 test/TestDocumentCustomHeader/figures/scatterplot/scatterplot_original.png create mode 100644 test/TestDocumentCustomHeader/full_article.tex create mode 100644 test/TestDocumentCustomHeader/header.tex create mode 100644 test/TestDocumentCustomHeader/layout.md create mode 100644 test/TestDocumentCustomHeader/li1fpi8krbo.html create mode 100644 test/TestDocumentCustomHeader/nat261l8ito.html create mode 100644 test/TestDocumentCustomHeader/preamble.tex create mode 100644 test/TestDocumentCustomHeader/rtdm09a2c6g.tex create mode 100644 test/TestDocumentCustomHeader/title.html create mode 100644 test/TestDocumentCustomHeader/untitled.html diff --git a/.gitignore b/.gitignore index 3f12a07..99e39f6 100644 --- a/.gitignore +++ b/.gitignore @@ -58,7 +58,7 @@ target/ .tags README.rst -test/TestDocument/Build/ -test/TestDocument/title.tex +**/Build/ +**/title.tex Session.vim .tags diff --git a/test/TestDocumentCustomHeader/Test document.zip b/test/TestDocumentCustomHeader/Test document.zip new file mode 100644 index 0000000000000000000000000000000000000000..056ad6b540c39e91b4648421927bfee7fc22a623 GIT binary patch literal 51240 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 literal 0 HcmV?d00001 diff --git a/test/TestDocumentCustomHeader/bibliography/.placeholder.md b/test/TestDocumentCustomHeader/bibliography/.placeholder.md new file mode 100644 index 0000000..70235eb --- /dev/null +++ b/test/TestDocumentCustomHeader/bibliography/.placeholder.md @@ -0,0 +1 @@ +this is a placeholder for the directory diff --git a/test/TestDocumentCustomHeader/bibliography/biblio.bib b/test/TestDocumentCustomHeader/bibliography/biblio.bib new file mode 100644 index 0000000..216d4e0 --- /dev/null +++ b/test/TestDocumentCustomHeader/bibliography/biblio.bib @@ -0,0 +1,12 @@ +@article{ebert_epidemiology_2013, + title = {{The epidemiology and evolution of symbionts with mixed-mode transmission}}, + volume = {44}, + abstract = {Vertical and horizontal transmission are terms that describe the transfer of symbionts from parents to offspring and among unrelated hosts, respectively. Many symbionts, including parasites, pathogens, mutualists, and microbiota, use a combination of both strategies, known as mixed-mode transmission (MMT). Here I review what is known about the evolution, ecology, and epidemiology of symbionts with MMT and compare MMT with our expectations for single-mode strategies. Symbionts with MMT are common and, in comparison with single-mode symbionts, show many surprising features. MMT combines the best of two worlds with regard to the ecological conditions required for persistence and plays a role in the evolution of virulence and genome architecture. Even rare transmission by the minority type of these two transmission modes can make a big difference for the system. This review explores the conceptual issues surrounding the dynamics of mixed-mode symbionts by reviewing literature from the entire range of host and symbiont taxa.}, + number = {1}, + journal = {Annual Review of Ecology, Evolution, and Systematics}, + doi = {10.1146/annurev-ecolsys-032513-100555}, + author = {Ebert, Dieter}, + year = {2013}, + pages = {623-643}, + file = {/Users/mpjuers/Zotero/Zotero/storage/6WQ93GVG/Ebert - 2013 - The Epidemiology and Evolution of Symbionts with M.pdf;/Users/mpjuers/Zotero/Zotero/storage/IQSHCBR4/es44_ebert_supmat.pdf}, +} diff --git a/test/TestDocumentCustomHeader/bibliography/converted_to_latex.bib b/test/TestDocumentCustomHeader/bibliography/converted_to_latex.bib new file mode 100644 index 0000000..216d4e0 --- /dev/null +++ b/test/TestDocumentCustomHeader/bibliography/converted_to_latex.bib @@ -0,0 +1,12 @@ +@article{ebert_epidemiology_2013, + title = {{The epidemiology and evolution of symbionts with mixed-mode transmission}}, + volume = {44}, + abstract = {Vertical and horizontal transmission are terms that describe the transfer of symbionts from parents to offspring and among unrelated hosts, respectively. Many symbionts, including parasites, pathogens, mutualists, and microbiota, use a combination of both strategies, known as mixed-mode transmission (MMT). Here I review what is known about the evolution, ecology, and epidemiology of symbionts with MMT and compare MMT with our expectations for single-mode strategies. Symbionts with MMT are common and, in comparison with single-mode symbionts, show many surprising features. MMT combines the best of two worlds with regard to the ecological conditions required for persistence and plays a role in the evolution of virulence and genome architecture. Even rare transmission by the minority type of these two transmission modes can make a big difference for the system. This review explores the conceptual issues surrounding the dynamics of mixed-mode symbionts by reviewing literature from the entire range of host and symbiont taxa.}, + number = {1}, + journal = {Annual Review of Ecology, Evolution, and Systematics}, + doi = {10.1146/annurev-ecolsys-032513-100555}, + author = {Ebert, Dieter}, + year = {2013}, + pages = {623-643}, + file = {/Users/mpjuers/Zotero/Zotero/storage/6WQ93GVG/Ebert - 2013 - The Epidemiology and Evolution of Symbionts with M.pdf;/Users/mpjuers/Zotero/Zotero/storage/IQSHCBR4/es44_ebert_supmat.pdf}, +} diff --git a/test/TestDocumentCustomHeader/figures/scatterplot/caption.html b/test/TestDocumentCustomHeader/figures/scatterplot/caption.html new file mode 100644 index 0000000..e45c309 --- /dev/null +++ b/test/TestDocumentCustomHeader/figures/scatterplot/caption.html @@ -0,0 +1 @@ +
A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369.
\ No newline at end of file diff --git a/test/TestDocumentCustomHeader/figures/scatterplot/config.yml b/test/TestDocumentCustomHeader/figures/scatterplot/config.yml new file mode 100644 index 0000000..91e2580 --- /dev/null +++ b/test/TestDocumentCustomHeader/figures/scatterplot/config.yml @@ -0,0 +1,20 @@ +--- +version: 2 +multicolumn: false +web-width: 500px +align: center +float: h! +grid: + rows: 1 + columns: 1 + grid_elements: + - path: figures/scatterplot/scatterplot.png + type: static + from: + - 1 + - 1 + to: + - 1 + - 1 + url: "/users/263225/articles/372534/master/file/figures/scatterplot/scatterplot.png" + folder_url: "/users/263225/articles/372534/master/folder/figures/scatterplot" diff --git a/test/TestDocumentCustomHeader/figures/scatterplot/scatterplot.png b/test/TestDocumentCustomHeader/figures/scatterplot/scatterplot.png new file mode 100644 index 0000000000000000000000000000000000000000..651731bdc83dbf876fd6c4c54839ed67934aaff8 GIT binary patch literal 25347 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 S3-G~H9!fj@vHZ`J%l`!y!86qW literal 0 HcmV?d00001 diff --git a/test/TestDocumentCustomHeader/figures/scatterplot/scatterplot_original.png b/test/TestDocumentCustomHeader/figures/scatterplot/scatterplot_original.png new file mode 100644 index 0000000000000000000000000000000000000000..48e04d361f807ee9496a42bd98e97e4a1fb192ba GIT binary patch literal 28070 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�zd;0Gz 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 inline equation: \(\int_0^xf\left(t\right)\mathrm{d}t\). And a display equation. \ No newline at end of file diff --git a/test/TestDocumentCustomHeader/nat261l8ito.html b/test/TestDocumentCustomHeader/nat261l8ito.html new file mode 100644 index 0000000..61fe1f8 --- /dev/null +++ b/test/TestDocumentCustomHeader/nat261l8ito.html @@ -0,0 +1 @@ +
Some troublesome dollar signs: $100, $200, $300
\ No newline at end of file diff --git a/test/TestDocumentCustomHeader/preamble.tex b/test/TestDocumentCustomHeader/preamble.tex new file mode 100644 index 0000000..f204761 --- /dev/null +++ b/test/TestDocumentCustomHeader/preamble.tex @@ -0,0 +1 @@ +\documentclass[10pt]{article} diff --git a/test/TestDocumentCustomHeader/rtdm09a2c6g.tex b/test/TestDocumentCustomHeader/rtdm09a2c6g.tex new file mode 100644 index 0000000..328b7ce --- /dev/null +++ b/test/TestDocumentCustomHeader/rtdm09a2c6g.tex @@ -0,0 +1,4 @@ +\begin{equation} +\label{eq:eq1} +\int_0^x f(t) \mathrm{d}t +\end{equation} \ No newline at end of file diff --git a/test/TestDocumentCustomHeader/title.html b/test/TestDocumentCustomHeader/title.html new file mode 100644 index 0000000..0309800 --- /dev/null +++ b/test/TestDocumentCustomHeader/title.html @@ -0,0 +1 @@ +
Test document
\ No newline at end of file diff --git a/test/TestDocumentCustomHeader/untitled.html b/test/TestDocumentCustomHeader/untitled.html new file mode 100644 index 0000000..5f8be20 --- /dev/null +++ b/test/TestDocumentCustomHeader/untitled.html @@ -0,0 +1 @@ +

A heading

Another heading

\cite{ebert_epidemiology_2013}
\citet{ebert_epidemiology_2013}
\citep[see][]{ebert_epidemiology_2013}
Figure \ref{286335}
Eq \ref{eq:eq1}
\ No newline at end of file From 620bdeb250f5a4ffa903634fa2135eb3fae91eb9 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Wed, 19 Jun 2019 17:24:23 -0400 Subject: [PATCH 10/19] Allow custom preamble. --- authorea_scripts/local_build.py | 24 ++++++++++++------------ requirements.txt | 2 +- setup.py | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/authorea_scripts/local_build.py b/authorea_scripts/local_build.py index efa6e0c..28307cd 100755 --- a/authorea_scripts/local_build.py +++ b/authorea_scripts/local_build.py @@ -37,7 +37,9 @@ % Options for packages loaded elsewhere \PassOptionsToPackage{{unicode}}{{hyperref}} \PassOptionsToPackage{{hyphens}}{{url}} -\documentclass[12pt]{{article}} + +{preamblein} + \usepackage{{graphicx}} \usepackage{{hyperref}} \usepackage{{natbib}} @@ -78,8 +80,6 @@ \date{{}} -{preamblein} - {headerin} {titlecontent} @@ -227,14 +227,14 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, else: parskip = r''' \makeatletter - \@ifundefined{{KOMAClassName}}{{% if non-KOMA class - \IfFileExists{{parskip.sty}}{{% - \usepackage{{parskip}} - }}{{% else - \setlength{{\parindent}}{{0pt}} - \setlength{{\parskip}}{{6pt plus 2pt minus 1pt}}}} - }}{{% if KOMA class - \KOMAoptions{{parskip=half}}}} + \@ifundefined{KOMAClassName}{% if non-KOMA class + \IfFileExists{parskip.sty}{% + \usepackage{parskip} + }{% else + \setlength{\parindent}{0pt} + \setlength{\parskip}{6pt plus 2pt minus 1pt}} + }{% if KOMA class + \KOMAoptions{parskip=half}} \makeatother ''' @@ -258,7 +258,7 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, if os.path.exists(os.path.join(localdir, 'preamble.tex')): preamblein = get_input_string('preamble', get_in_path(localdir, builddir, pathtype), flatten=flatten) else: - preamblein = '' + preamblein = r'\documentclass[12pt]{article}' if os.path.exists(os.path.join(localdir, 'header.tex')): headerin = get_input_string('header', get_in_path(localdir, builddir, pathtype), flatten=flatten) else: diff --git a/requirements.txt b/requirements.txt index 498ba48..c8141a9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ +pypandoc==1.4 setuptools==39.0.1 panflute==1.11.2 -pypandoc==1.4 diff --git a/setup.py b/setup.py index e7edc27..ae85102 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ pypandoc.convert_file('README.md', 'rst', outputfile='README.rst') setup( name='authorea-scripts', - version='0.0.3', + version='0.0.4', py_modules=['build-authorea'], description='Tools for working locally with Authorea projects', url='https://github.com/mpjuers/authorea-scripts', From eb4fa8267cb057f8da92c03bbcae7e70e6f914c5 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Thu, 20 Jun 2019 09:59:41 -0400 Subject: [PATCH 11/19] Fix custom citation command --- authorea_scripts/local_build.py | 2 ++ changelog.md | 4 ++++ requirements.txt | 2 +- setup.py | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/authorea_scripts/local_build.py b/authorea_scripts/local_build.py index 28307cd..b591a60 100755 --- a/authorea_scripts/local_build.py +++ b/authorea_scripts/local_build.py @@ -80,6 +80,8 @@ \date{{}} +\let\cite\{citecommand} + {headerin} {titlecontent} diff --git a/changelog.md b/changelog.md index 2b2c190..d4ca021 100644 --- a/changelog.md +++ b/changelog.md @@ -9,3 +9,7 @@ - Added argument to control spacing. - Added ability to not use parskip class for standard indentation rules. + +## 0.0.5 + +- Fixed custom citation command. diff --git a/requirements.txt b/requirements.txt index c8141a9..498ba48 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -pypandoc==1.4 setuptools==39.0.1 panflute==1.11.2 +pypandoc==1.4 diff --git a/setup.py b/setup.py index ae85102..1715899 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ pypandoc.convert_file('README.md', 'rst', outputfile='README.rst') setup( name='authorea-scripts', - version='0.0.4', + version='0.0.5', py_modules=['build-authorea'], description='Tools for working locally with Authorea projects', url='https://github.com/mpjuers/authorea-scripts', From fab9a964b84681b32c2f512ed93e98b29c33e884 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Fri, 21 Jun 2019 11:45:30 -0400 Subject: [PATCH 12/19] Add markdown file to TestDocument. --- test/TestDocument/Test document.zip | Bin 51240 -> 51576 bytes test/TestDocument/bo8cpuni4jo.md | 2 ++ test/TestDocument/full_article.tex | 8 ++++++-- test/TestDocument/layout.md | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 test/TestDocument/bo8cpuni4jo.md diff --git a/test/TestDocument/Test document.zip b/test/TestDocument/Test document.zip index 056ad6b540c39e91b4648421927bfee7fc22a623..7f7af85a5c0f0696fe2c3e5bca59b4642effb655 100644 GIT binary patch delta 2550 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 Kp;a&}0pKsNn76P1 delta 2191 zcmZXWc{tPy7sr2Nj6Jdo31bq)wG%GIWDi-xpb1HqkuhZHo$O0DOFwH$DQjgX#yXZU zw#X=Jl4WFWxs%~q!no@G^S;mfoabzRoO7Pf}OEp`=X8 zdA6VJJ4!u2H0O>AVoM)XdMM zmtBitGvlqhPBstHCO*%d^A?S2Zat=~@Xk0-Bn#=HZ(nR=SL^7Q)L}edV?#;L`Zi^N ziDAKOhM^PHC3$^2c5hgzKbb%{D`yYSkZHvsHcIN&#Sg<@@K-8TUv0UD{j}1UB`h*G zQbirP-rnS<>LvPoW-hebJSd{2wbi2W{f%%NE>d>i0n?cNc{+EHv+`S9hlE3FsbX`T zyPE_7yQ4Z4mym#R`Uf_pu-UxJg2}7WcR!!;$hSqSs!l(Z9%Nvm zS{)!X|7p(jcFD@r9?f1z4?@HD_?qD>Yqk&Ow5(29$D>q{ngXW_{QqBgJ#gDsXIt zV0^oG#n^;f+lbnfnj|H0pD4BC+5b5nag0LXiIyYDq9AF5!F*^tP`a51FS&Z5y5!P< zT>+V9zXw<6X54-IAVF;dw;XN=y@$VJ5Y?Og`23X0f9Gk_B7n%-ZhyM1NX{KDpN1;r1TD?7*KLQ>uVI^=K-g2mE?Whf=`&~qXaW2{~ie}x1m~B z=MH->m$g_m6J*Ehr*}yRh6#3ovkhZZoqkf+c#l{)o7%PNpR7LvEnKELp=&@ z#5Q8U_~HqM5cKhW)lkjPQmE-z{jO7M1@{LwuZwf6Hu4)eCZHFIG1Js0jIZbdG14{C zsUEDgi&7k?O__THv<%z+5LV{x==&p#n`EAGs~ zD6YTv179{#>2sXZb>fT~Tu^AWr7fQT)b?uUNCQ${#%VaaU3N2ld_b;y(&bRIz$!y4 zCBUq71t(?{^@%=VO_kA@^IA_T``an~!DpvuduWx~bjwV_;+z~aEH*Y9SJB-!eyyi) zMx!C#0)MNiJ+UM!!Mp<&_J&o?uYWJ`qY6x%u%uYSc>?^+682J)TZqoiVCJqLXy%hZ z4l9hen~wAJt8x2LkJa<*cIS`-UDR5wjd5zlQyu5qjt+PWe|TLuW>ns{eyGX4E#{Lr zkQdQv&|M(9XPB7G+KWeo?&SCWap>6KC~UZamn`OH*5XYM*)7? z7dB6yCPPY9FXjT@6o;ish@&YHfZi2Zl4x-ggmDb;t0!e^LQm93QU zw--`W@XxXf3%2)OvI#SXJy|^?xtsh{PG-(F&YeMF=dbc;5M6Gy-o)2Wd+Cj#Oh7kwjl5rEXkVx?WT-5008z!&UpmI0CWTf7pffS{fmYnpmdkWWu-wq z-h0x=VZ_3oXST=nc^TLx2B*G2I;LpN+X)uql_AQ-eL7orI_mLST#W5jj~}KE8I8of zGpR-F%Utn*j|4`t_l^-3V86}>lf~+(9dIaE-QD>U=HTrfQx?8)u$n9b&i3en(Ebzk z%Dwh1y#LE=FuhOVC!IlJuOv9xC&lu)72NJqQU8AtVnzJAfaG3*%6`xekD7yyy*mu`t2bGU{1dc Date: Fri, 21 Jun 2019 11:51:10 -0400 Subject: [PATCH 13/19] Add support for markdown --- authorea_scripts/local_build.py | 5 +++++ changelog.md | 4 ++++ setup.py | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/authorea_scripts/local_build.py b/authorea_scripts/local_build.py index b591a60..1260e6a 100755 --- a/authorea_scripts/local_build.py +++ b/authorea_scripts/local_build.py @@ -304,6 +304,11 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, os.path.join(localdir, ls), 'latex', format='html+tex_math_dollars', filters=['stripreftags']) sectioninputs.append(html_to_tex) + elif ls.endswith('.md'): + md_to_tex = convert_file( + os.path.join(localdir, ls), + 'latex', format='markdown+tex_math_dollars') + sectioninputs.append(md_to_tex) elif ls.startswith('figures'): ls = ls + ls.lstrip('figures') inpath = get_in_path(localdir, builddir, pathtype) diff --git a/changelog.md b/changelog.md index d4ca021..7e0bf3a 100644 --- a/changelog.md +++ b/changelog.md @@ -13,3 +13,7 @@ ## 0.0.5 - Fixed custom citation command. + +## 0.0.6 + +- Added markdown support. diff --git a/setup.py b/setup.py index 1715899..3756488 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ pypandoc.convert_file('README.md', 'rst', outputfile='README.rst') setup( name='authorea-scripts', - version='0.0.5', + version='0.0.6', py_modules=['build-authorea'], description='Tools for working locally with Authorea projects', url='https://github.com/mpjuers/authorea-scripts', From c1103872610d901297bef2e8be49439f2d0d9c2c Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Mon, 15 Jul 2019 12:20:04 -0400 Subject: [PATCH 14/19] New test document --- test/TestDocument/Test document.zip | Bin 51576 -> 51697 bytes test/TestDocument/full_article.tex | 5 +++++ test/TestDocument/header.tex | 1 + test/TestDocument/nat261l8ito.html | 2 +- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/test/TestDocument/Test document.zip b/test/TestDocument/Test document.zip index 7f7af85a5c0f0696fe2c3e5bca59b4642effb655..799447cea8d3cc16b1c935bc40453e0e2815f0f9 100644 GIT binary patch delta 3223 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 delta 3050 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 diff --git a/test/TestDocument/full_article.tex b/test/TestDocument/full_article.tex index 1f5d3ae..3a5b498 100644 --- a/test/TestDocument/full_article.tex +++ b/test/TestDocument/full_article.tex @@ -4,6 +4,7 @@ \usepackage{setspace} \usepackage{parskip} \usepackage{titlesec} +\usepackage{placeins} \usepackage{xcolor} \usepackage{lineno} @@ -81,6 +82,7 @@ \affil[1]{Indiana University} % Add here any LaTeX macros you would like to load in all document blocks % \def\example{This is an example macro.} +\setcounter{secnumdepth}{2} % ----- @@ -157,6 +159,8 @@ \subsection*{Another heading} Some troublesome dollar signs: \$100, \$200, \$300 +Section~{\ref{850151}} + \section*{Some markdown}\label{some-markdown} Once, there was a cuttlefish, who we'll call \emph{Sepia apama}. Now, @@ -172,6 +176,7 @@ \section*{Some markdown}\label{some-markdown} \end{figure} \selectlanguage{english} +\FloatBarrier \section*{References}\sloppy \phantomsection \label{csl:1}Ebert, D. (2013). {The epidemiology and evolution of symbionts with mixed-mode transmission}. \textit{Annual Review of Ecology, Evolution, and Systematics}, \textit{44}(1), 623–643. \url{https://doi.org/10.1146/annurev-ecolsys-032513-100555} diff --git a/test/TestDocument/header.tex b/test/TestDocument/header.tex index a98e475..d2bbfe5 100644 --- a/test/TestDocument/header.tex +++ b/test/TestDocument/header.tex @@ -8,6 +8,7 @@ \affil[1]{Indiana University} % Add here any LaTeX macros you would like to load in all document blocks % \def\example{This is an example macro.} +\setcounter{secnumdepth}{2} % ----- diff --git a/test/TestDocument/nat261l8ito.html b/test/TestDocument/nat261l8ito.html index 61fe1f8..1727c09 100644 --- a/test/TestDocument/nat261l8ito.html +++ b/test/TestDocument/nat261l8ito.html @@ -1 +1 @@ -
Some troublesome dollar signs: $100, $200, $300
\ No newline at end of file +
Some troublesome dollar signs: $100, $200, $300
Section \ref{850151}
\ No newline at end of file From 3f99e7e982f93d9a1c13103bf01c7d383bf59994 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Mon, 15 Jul 2019 15:43:21 -0400 Subject: [PATCH 15/19] Add zipfiles to .gitignore --- .gitignore | 1 + test/TestDocument/Test document.zip | Bin 51697 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100644 test/TestDocument/Test document.zip diff --git a/.gitignore b/.gitignore index 99e39f6..e819891 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,4 @@ README.rst **/title.tex Session.vim .tags +**/*.zip diff --git a/test/TestDocument/Test document.zip b/test/TestDocument/Test document.zip deleted file mode 100644 index 799447cea8d3cc16b1c935bc40453e0e2815f0f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51697 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 M2e>2c`Tgnt0YEc?ivR!s From 19b9b7030c774b5a74314f9f302fe4383b766f98 Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Tue, 16 Jul 2019 10:13:19 -0400 Subject: [PATCH 16/19] Fix caption handling --- authorea_scripts/local_build.py | 15 +- authorea_scripts/stripreftags.py | 37 ++-- changelog.md | 4 + setup.py | 2 +- .../figures/scatterplot/caption.html | 2 +- test/TestDocument/full_article.tex | 185 ------------------ test/TestDocument/rtdm09a2c6g.tex | 2 +- test/TestDocument/untitled.html | 2 +- 8 files changed, 37 insertions(+), 212 deletions(-) delete mode 100644 test/TestDocument/full_article.tex diff --git a/authorea_scripts/local_build.py b/authorea_scripts/local_build.py index 1260e6a..93d4690 100755 --- a/authorea_scripts/local_build.py +++ b/authorea_scripts/local_build.py @@ -41,10 +41,11 @@ {preamblein} \usepackage{{graphicx}} -\usepackage{{hyperref}} \usepackage{{natbib}} \usepackage{{latexml}} \usepackage{{setspace}} +\usepackage{{hyperref}} +\usepackage[english]{{babel}} % From pandoc \usepackage{{lmodern}} @@ -156,22 +157,20 @@ def get_figure_string(filename, localdir, inputdir, flatten=False, copyto=False) raise IOError('Could not find figure file {}'.format(figpath)) shutil.copy(figpath, os.path.join(copyto, os.path.split(figpath)[1])) else: - if ( os.path.exists(pdffn) + if ( os.path.exists(pdffn) or os.path.exists(epsfn) or os.path.exists(pngfn) - ): + ): figfn = os.path.join(inputdir, figdir, fignamebase, fignamebase) if os.path.exists(os.path.join(localdir, figdir, 'caption.tex')): capinput = get_input_string('caption', os.path.join(inputdir, figdir), False, flatten=flatten) caption = r'\caption{ \protect' + capinput.strip() + '}' - elif os.path.exists( - os.path.join(localdir, figdir, 'caption.html') - ): + elif os.path.exists(os.path.join(localdir, figdir, 'caption.html')): caption = convert_file( os.path.join(localdir, figdir, 'caption.html'), - 'latex', format='html+tex_math_dollars', filters=['stripreftags'], - ) + 'latex', format='html+tex_math_dollars', filters=['stripreftags'] + ) else: caption = '' diff --git a/authorea_scripts/stripreftags.py b/authorea_scripts/stripreftags.py index 620178a..ee0836d 100755 --- a/authorea_scripts/stripreftags.py +++ b/authorea_scripts/stripreftags.py @@ -7,7 +7,6 @@ import panflute as pf - def multireplace(string, replacements): """ Given a string and a replacement map, it returns the replaced string. @@ -44,20 +43,28 @@ def destring(elem, doc, replacements): def labels(elem, doc, replacements): - try: - if 'label' in elem.attributes.keys(): - return (pf.Plain( - pf.RawInline('\\caption{' + '\\label{' - + elem.attributes['label'] + '}', - format='latex'), - *elem.content[0].content, - pf.Str('}') - )) - except AttributeError: - pass - # Extra section headers with not content can cause an IndexError. - except IndexError: - pass + if ( isinstance(elem, pf.Header) + or isinstance(elem, pf.Div)): + try: + if 'label' in elem.attributes: + elem.identifier = label = elem.attributes['label'] + mytext = (r'\caption{\hypertarget{' + + label + + r'}{\label{' + + label + + r'}}') + first_child = elem.content[0] + first_child.content.insert(0, pf.RawInline(mytext, format='latex')) + first_child.content.append(pf.RawInline(r'}', format='latex')) + return (elem if isinstance(elem, pf.Header) + else pf.Div(first_child)) + except AttributeError: + pass + # Extra section headers with not content can cause an IndexError. + except IndexError: + pass + except KeyError: + pass def main(doc=None): diff --git a/changelog.md b/changelog.md index 7e0bf3a..e70b9dd 100644 --- a/changelog.md +++ b/changelog.md @@ -17,3 +17,7 @@ ## 0.0.6 - Added markdown support. + +## 0.0.7 + +- Fixed handling of captions. diff --git a/setup.py b/setup.py index 3756488..e472ef7 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ pypandoc.convert_file('README.md', 'rst', outputfile='README.rst') setup( name='authorea-scripts', - version='0.0.6', + version='0.0.7', py_modules=['build-authorea'], description='Tools for working locally with Authorea projects', url='https://github.com/mpjuers/authorea-scripts', diff --git a/test/TestDocument/figures/scatterplot/caption.html b/test/TestDocument/figures/scatterplot/caption.html index e45c309..9bdcc4b 100644 --- a/test/TestDocument/figures/scatterplot/caption.html +++ b/test/TestDocument/figures/scatterplot/caption.html @@ -1 +1 @@ -
A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369.
\ No newline at end of file +
A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369.
diff --git a/test/TestDocument/full_article.tex b/test/TestDocument/full_article.tex deleted file mode 100644 index 3a5b498..0000000 --- a/test/TestDocument/full_article.tex +++ /dev/null @@ -1,185 +0,0 @@ -\documentclass[10pt]{article} - -\usepackage{fullpage} -\usepackage{setspace} -\usepackage{parskip} -\usepackage{titlesec} -\usepackage{placeins} -\usepackage{xcolor} -\usepackage{lineno} - - - - - -\PassOptionsToPackage{hyphens}{url} -\usepackage[colorlinks = true, - linkcolor = blue, - urlcolor = blue, - citecolor = blue, - anchorcolor = blue]{hyperref} -\usepackage{etoolbox} -\makeatletter -\patchcmd\@combinedblfloats{\box\@outputbox}{\unvbox\@outputbox}{}{% - \errmessage{\noexpand\@combinedblfloats could not be patched}% -}% -\makeatother - - -\usepackage{natbib} - - - - -\renewenvironment{abstract} - {{\bfseries\noindent{\abstractname}\par\nobreak}\footnotesize} - {\bigskip} - -\renewenvironment{quote} - {\begin{tabular}{|p{13cm}}} - {\end{tabular}} - -\titlespacing{\section}{0pt}{*3}{*1} -\titlespacing{\subsection}{0pt}{*2}{*0.5} -\titlespacing{\subsubsection}{0pt}{*1.5}{0pt} - - -\usepackage{authblk} - - -\usepackage{graphicx} -\usepackage[space]{grffile} -\usepackage{latexsym} -\usepackage{textcomp} -\usepackage{longtable} -\usepackage{tabulary} -\usepackage{booktabs,array,multirow} -\usepackage{amsfonts,amsmath,amssymb} -\providecommand\citet{\cite} -\providecommand\citep{\cite} -\providecommand\citealt{\cite} -% You can conditionalize code for latexml or normal latex using this. -\newif\iflatexml\latexmlfalse -\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}% - -\AtBeginDocument{\DeclareGraphicsExtensions{.pdf,.PDF,.eps,.EPS,.png,.PNG,.tif,.TIF,.jpg,.JPG,.jpeg,.JPEG}} - -\usepackage[utf8]{inputenc} -\usepackage[english]{babel} - - - - - - -% Edit this header.tex file to include frontmatter definitions and global macros - -% Add here any LaTeX packages you would like to load in all document blocks -% \usepackage{xspace} -\usepackage{authblk} - -\author[1]{Mark Juers} -\affil[1]{Indiana University} -% Add here any LaTeX macros you would like to load in all document blocks -% \def\example{This is an example macro.} -\setcounter{secnumdepth}{2} - - -% ----- - -\iflatexml -% Add here any LaTeXML-specific commands - -% ----- - -\else -% Add here any export style-specific LaTeX commands. These will only be loaded upon document export. -% \paperfield{Subject domain of my document} -% \keywords{keyword1, keyword2} -% \corraddress{Author One PhD, Department, Institution, City, State or Province, Postal Code, Country} -% \fundinginfo{Funder One, Funder One Department, Grant/Award Number: 123456.} -\fi - - -\begin{document} - -\title{Test document} - - - -\author[1]{Mark Juers}% -\affil[1]{Affiliation not available}% - - -\vspace{-1em} - - - - \date{\today} - - -\begingroup -\let\center\flushleft -\let\endcenter\endflushleft -\maketitle -\endgroup - - - - - - - - - -\section*{A heading} - -{\label{850151}} - -\subsection*{Another heading} - -{\label{367935}} - -\hyperref[csl:1]{(Ebert, 2013)} - -\hyperref[csl:1]{(Ebert, 2013)} - -\hyperref[csl:1]{(Ebert, 2013)} - -Figure {\ref{286335}} - -Eq~{\ref{eq:eq1}} - -An inline equation:~\(\int_0^xf\left(t\right)\mathrm{d}t\). And a display equation. - -\begin{equation} -\label{eq:eq1} -\int_0^x f(t) \mathrm{d}t -\end{equation} - -Some troublesome dollar signs: \$100, \$200, \$300 - -Section~{\ref{850151}} - -\section*{Some markdown}\label{some-markdown} - -Once, there was a cuttlefish, who we'll call \emph{Sepia apama}. Now, -some math: \(a + b = c\).\selectlanguage{english} -\begin{figure}[h!] -\begin{center} -\includegraphics[width=0.70\columnwidth]{figures/scatterplot/scatterplot} -\caption{{A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, -\url{https://commons.wikimedia.org/w/index.php?curid=9402369}. -{\label{286335}}% -}} -\end{center} -\end{figure} - -\selectlanguage{english} -\FloatBarrier -\section*{References}\sloppy -\phantomsection -\label{csl:1}Ebert, D. (2013). {The epidemiology and evolution of symbionts with mixed-mode transmission}. \textit{Annual Review of Ecology, Evolution, and Systematics}, \textit{44}(1), 623–643. \url{https://doi.org/10.1146/annurev-ecolsys-032513-100555} - -\end{document} - diff --git a/test/TestDocument/rtdm09a2c6g.tex b/test/TestDocument/rtdm09a2c6g.tex index 328b7ce..5dd88dc 100644 --- a/test/TestDocument/rtdm09a2c6g.tex +++ b/test/TestDocument/rtdm09a2c6g.tex @@ -1,4 +1,4 @@ \begin{equation} \label{eq:eq1} \int_0^x f(t) \mathrm{d}t -\end{equation} \ No newline at end of file +\end{equation} diff --git a/test/TestDocument/untitled.html b/test/TestDocument/untitled.html index 5f8be20..1fc1f2f 100644 --- a/test/TestDocument/untitled.html +++ b/test/TestDocument/untitled.html @@ -1 +1 @@ -

A heading

Another heading

\cite{ebert_epidemiology_2013}
\citet{ebert_epidemiology_2013}
\citep[see][]{ebert_epidemiology_2013}
Figure \ref{286335}
Eq \ref{eq:eq1}
\ No newline at end of file +

A heading

Another heading

\cite{ebert_epidemiology_2013}
\citet{ebert_epidemiology_2013}
\citep[see][]{ebert_epidemiology_2013}
Figure \ref{286335}
Eq \ref{eq:eq1}
From 274805e2693ce6b6d6a8078c99e2e4068a935f7b Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Tue, 23 Jul 2019 10:50:44 -0400 Subject: [PATCH 17/19] Add abstract to TestDocument --- test/TestDocument/abstract.html | 1 + .../figures/scatterplot/caption.html | 2 +- test/TestDocument/full_article.tex | 189 ++++++++++++++++++ test/TestDocument/layout.md | 1 + test/TestDocument/rtdm09a2c6g.tex | 2 +- test/TestDocument/untitled.html | 2 +- 6 files changed, 194 insertions(+), 3 deletions(-) create mode 100644 test/TestDocument/abstract.html create mode 100644 test/TestDocument/full_article.tex diff --git a/test/TestDocument/abstract.html b/test/TestDocument/abstract.html new file mode 100644 index 0000000..3d3cc02 --- /dev/null +++ b/test/TestDocument/abstract.html @@ -0,0 +1 @@ +
An abstract.
\ No newline at end of file diff --git a/test/TestDocument/figures/scatterplot/caption.html b/test/TestDocument/figures/scatterplot/caption.html index 9bdcc4b..e45c309 100644 --- a/test/TestDocument/figures/scatterplot/caption.html +++ b/test/TestDocument/figures/scatterplot/caption.html @@ -1 +1 @@ -
A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369.
+
A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=9402369.
\ No newline at end of file diff --git a/test/TestDocument/full_article.tex b/test/TestDocument/full_article.tex new file mode 100644 index 0000000..a53851c --- /dev/null +++ b/test/TestDocument/full_article.tex @@ -0,0 +1,189 @@ +\documentclass[10pt]{article} + +\usepackage{fullpage} +\usepackage{setspace} +\usepackage{parskip} +\usepackage{titlesec} +\usepackage{placeins} +\usepackage{xcolor} +\usepackage{lineno} + + + + + +\PassOptionsToPackage{hyphens}{url} +\usepackage[colorlinks = true, + linkcolor = blue, + urlcolor = blue, + citecolor = blue, + anchorcolor = blue]{hyperref} +\usepackage{etoolbox} +\makeatletter +\patchcmd\@combinedblfloats{\box\@outputbox}{\unvbox\@outputbox}{}{% + \errmessage{\noexpand\@combinedblfloats could not be patched}% +}% +\makeatother + + +\usepackage{natbib} + + + + +\renewenvironment{abstract} + {{\bfseries\noindent{\abstractname}\par\nobreak}\footnotesize} + {\bigskip} + +\renewenvironment{quote} + {\begin{tabular}{|p{13cm}}} + {\end{tabular}} + +\titlespacing{\section}{0pt}{*3}{*1} +\titlespacing{\subsection}{0pt}{*2}{*0.5} +\titlespacing{\subsubsection}{0pt}{*1.5}{0pt} + + +\usepackage{authblk} + + +\usepackage{graphicx} +\usepackage[space]{grffile} +\usepackage{latexsym} +\usepackage{textcomp} +\usepackage{longtable} +\usepackage{tabulary} +\usepackage{booktabs,array,multirow} +\usepackage{amsfonts,amsmath,amssymb} +\providecommand\citet{\cite} +\providecommand\citep{\cite} +\providecommand\citealt{\cite} +% You can conditionalize code for latexml or normal latex using this. +\newif\iflatexml\latexmlfalse +\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}% + +\AtBeginDocument{\DeclareGraphicsExtensions{.pdf,.PDF,.eps,.EPS,.png,.PNG,.tif,.TIF,.jpg,.JPG,.jpeg,.JPEG}} + +\usepackage[utf8]{inputenc} +\usepackage[english]{babel} + + + + + + +% Edit this header.tex file to include frontmatter definitions and global macros + +% Add here any LaTeX packages you would like to load in all document blocks +% \usepackage{xspace} +\usepackage{authblk} + +\author[1]{Mark Juers} +\affil[1]{Indiana University} +% Add here any LaTeX macros you would like to load in all document blocks +% \def\example{This is an example macro.} +\setcounter{secnumdepth}{2} + + +% ----- + +\iflatexml +% Add here any LaTeXML-specific commands + +% ----- + +\else +% Add here any export style-specific LaTeX commands. These will only be loaded upon document export. +% \paperfield{Subject domain of my document} +% \keywords{keyword1, keyword2} +% \corraddress{Author One PhD, Department, Institution, City, State or Province, Postal Code, Country} +% \fundinginfo{Funder One, Funder One Department, Grant/Award Number: 123456.} +\fi + + +\begin{document} + +\title{Test document} + + + +\author[1]{Mark Juers}% +\affil[1]{Affiliation not available}% + + +\vspace{-1em} + + + + \date{\today} + + +\begingroup +\let\center\flushleft +\let\endcenter\endflushleft +\maketitle +\endgroup + + + + + +\selectlanguage{english} +\begin{abstract} +An abstract.% +\end{abstract}% + + + + +\section*{A heading} + +{\label{850151}} + +\subsection*{Another heading} + +{\label{367935}} + +\hyperref[csl:1]{(Ebert, 2013)} + +\hyperref[csl:1]{(Ebert, 2013)} + +\hyperref[csl:1]{(Ebert, 2013)} + +Figure {\ref{286335}} + +Eq~{\ref{eq:eq1}} + +An inline equation:~\(\int_0^xf\left(t\right)\mathrm{d}t\). And a display equation. + +\begin{equation} +\label{eq:eq1} +\int_0^x f(t) \mathrm{d}t +\end{equation} + +Some troublesome dollar signs: \$100, \$200, \$300 + +Section~{\ref{850151}} + +\section*{Some markdown}\label{some-markdown} + +Once, there was a cuttlefish, who we'll call \emph{Sepia apama}. Now, +some math: \(a + b = c\).\selectlanguage{english} +\begin{figure}[h!] +\begin{center} +\includegraphics[width=0.70\columnwidth]{figures/scatterplot/scatterplot} +\caption{{A scatterplot by By DanielPenfield - Own work, CC BY-SA 3.0, +\url{https://commons.wikimedia.org/w/index.php?curid=9402369}. +{\label{286335}}% +}} +\end{center} +\end{figure} + +\selectlanguage{english} +\FloatBarrier +\section*{References}\sloppy +\phantomsection +\label{csl:1}Ebert, D. (2013). {The epidemiology and evolution of symbionts with mixed-mode transmission}. \textit{Annual Review of Ecology, Evolution, and Systematics}, \textit{44}(1), 623–643. \url{https://doi.org/10.1146/annurev-ecolsys-032513-100555} + +\end{document} + diff --git a/test/TestDocument/layout.md b/test/TestDocument/layout.md index 6b30b74..d4f5844 100644 --- a/test/TestDocument/layout.md +++ b/test/TestDocument/layout.md @@ -1,3 +1,4 @@ +abstract.html untitled.html li1fpi8krbo.html rtdm09a2c6g.tex diff --git a/test/TestDocument/rtdm09a2c6g.tex b/test/TestDocument/rtdm09a2c6g.tex index 5dd88dc..328b7ce 100644 --- a/test/TestDocument/rtdm09a2c6g.tex +++ b/test/TestDocument/rtdm09a2c6g.tex @@ -1,4 +1,4 @@ \begin{equation} \label{eq:eq1} \int_0^x f(t) \mathrm{d}t -\end{equation} +\end{equation} \ No newline at end of file diff --git a/test/TestDocument/untitled.html b/test/TestDocument/untitled.html index 1fc1f2f..5f8be20 100644 --- a/test/TestDocument/untitled.html +++ b/test/TestDocument/untitled.html @@ -1 +1 @@ -

A heading

Another heading

\cite{ebert_epidemiology_2013}
\citet{ebert_epidemiology_2013}
\citep[see][]{ebert_epidemiology_2013}
Figure \ref{286335}
Eq \ref{eq:eq1}
+

A heading

Another heading

\cite{ebert_epidemiology_2013}
\citet{ebert_epidemiology_2013}
\citep[see][]{ebert_epidemiology_2013}
Figure \ref{286335}
Eq \ref{eq:eq1}
\ No newline at end of file From 5e7e4666a60c24b5c95c241b090b8473fdc88b9a Mon Sep 17 00:00:00 2001 From: Mark Juers Date: Tue, 23 Jul 2019 11:11:27 -0400 Subject: [PATCH 18/19] Add correct abstract formatting --- authorea_scripts/local_build.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/authorea_scripts/local_build.py b/authorea_scripts/local_build.py index 93d4690..82f9433 100755 --- a/authorea_scripts/local_build.py +++ b/authorea_scripts/local_build.py @@ -294,10 +294,12 @@ def build_authorea_latex(localdir, builddir, latex_exec, bibtex_exec, outname, pass elif ls in ('posttitle.tex', 'title.tex', 'preamble.tex', 'header.tex'): pass # skip any that have been processed above - elif ls in ('abstract.tex'): + elif ls in ('abstract.html'): # add abstract to title content - titlein = get_input_string('abstract', get_in_path(localdir, builddir, pathtype), flatten=flatten) - titlecontent.append(r'\begin{abstract}' + titlein + '\end{abstract}') + html_to_tex = convert_file( + os.path.join(localdir, ls), + 'latex', format='html+tex_math_dollars', filters=['stripreftags']) + sectioninputs.append(r'\begin{abstract}' + '\n' + html_to_tex + r'\end{abstract}') elif ls.endswith('.html') or ls.endswith('.htm'): html_to_tex = convert_file( os.path.join(localdir, ls), From 819a06b41d5d0fc6907fb8167109416034b0a8f5 Mon Sep 17 00:00:00 2001 From: Mark Juers <30603264+mpjuers@users.noreply.github.com> Date: Mon, 19 Jul 2021 13:29:17 -0400 Subject: [PATCH 19/19] Add help option to getting started. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ff7a890..dee57c5 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ Scripts for working with Authorea articles. Installation: pip install authorea-scripts -Usage of build-authorea-latex: build-authorea-latex [options] +Usage of build-authorea-latex: `$build-authorea-latex [options] ` + +Help: `$build-authorea-latex --help` You must install latexml.sty from https://github.com/brucemiller/LaTeXML/blob/master/lib/LaTeXML/texmf/latexml.sty