mirror of
https://github.com/mghansen256/pythontex-wrapper.git
synced 2024-10-27 20:34:03 +00:00
Add a way to request two pythontex runs.
This commit is contained in:
parent
7b3ff3914f
commit
6819cddc80
329
demo-multirun.lyx
Normal file
329
demo-multirun.lyx
Normal file
@ -0,0 +1,329 @@
|
||||
#LyX 2.3 created this file. For more info see http://www.lyx.org/
|
||||
\lyxformat 544
|
||||
\begin_document
|
||||
\begin_header
|
||||
\save_transient_properties true
|
||||
\origin unavailable
|
||||
\textclass article
|
||||
\begin_preamble
|
||||
\usepackage[gobble=auto]{pythontex}
|
||||
\end_preamble
|
||||
\use_default_options true
|
||||
\maintain_unincluded_children false
|
||||
\language english
|
||||
\language_package default
|
||||
\inputencoding auto
|
||||
\fontencoding global
|
||||
\font_roman "default" "default"
|
||||
\font_sans "default" "default"
|
||||
\font_typewriter "default" "default"
|
||||
\font_math "auto" "auto"
|
||||
\font_default_family default
|
||||
\use_non_tex_fonts false
|
||||
\font_sc false
|
||||
\font_osf false
|
||||
\font_sf_scale 100 100
|
||||
\font_tt_scale 100 100
|
||||
\use_microtype false
|
||||
\use_dash_ligatures true
|
||||
\graphics default
|
||||
\default_output_format pdf2
|
||||
\output_sync 0
|
||||
\bibtex_command default
|
||||
\index_command default
|
||||
\paperfontsize default
|
||||
\spacing single
|
||||
\use_hyperref true
|
||||
\pdf_title "pythontex-wrapper for lyx demo document"
|
||||
\pdf_author "Michael G. Hansen"
|
||||
\pdf_bookmarks true
|
||||
\pdf_bookmarksnumbered false
|
||||
\pdf_bookmarksopen false
|
||||
\pdf_bookmarksopenlevel 1
|
||||
\pdf_breaklinks false
|
||||
\pdf_pdfborder false
|
||||
\pdf_colorlinks false
|
||||
\pdf_backref false
|
||||
\pdf_pdfusetitle true
|
||||
\papersize default
|
||||
\use_geometry false
|
||||
\use_package amsmath 1
|
||||
\use_package amssymb 1
|
||||
\use_package cancel 1
|
||||
\use_package esint 1
|
||||
\use_package mathdots 1
|
||||
\use_package mathtools 1
|
||||
\use_package mhchem 1
|
||||
\use_package stackrel 1
|
||||
\use_package stmaryrd 1
|
||||
\use_package undertilde 1
|
||||
\cite_engine basic
|
||||
\cite_engine_type default
|
||||
\biblio_style plain
|
||||
\use_bibtopic false
|
||||
\use_indices false
|
||||
\paperorientation portrait
|
||||
\suppress_date false
|
||||
\justification true
|
||||
\use_refstyle 1
|
||||
\use_minted 0
|
||||
\index Index
|
||||
\shortcut idx
|
||||
\color #008000
|
||||
\end_index
|
||||
\secnumdepth 3
|
||||
\tocdepth 3
|
||||
\paragraph_separation indent
|
||||
\paragraph_indentation default
|
||||
\is_math_indent 0
|
||||
\math_numbering_side default
|
||||
\quotes_style english
|
||||
\dynamic_quotes 0
|
||||
\papercolumns 1
|
||||
\papersides 1
|
||||
\paperpagestyle default
|
||||
\tracking_changes false
|
||||
\output_changes false
|
||||
\html_math_output 0
|
||||
\html_css_as_file 0
|
||||
\html_be_strict false
|
||||
\end_header
|
||||
|
||||
\begin_body
|
||||
|
||||
\begin_layout Title
|
||||
pythontex-wrapper for lyx demo document
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
Check how many times Python code was actually executed:
|
||||
\end_layout
|
||||
|
||||
\begin_deeper
|
||||
\begin_layout Itemize
|
||||
\begin_inset ERT
|
||||
status open
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
|
||||
\backslash
|
||||
begin{pycode}[sessionA]
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
import os
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
import json
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
myFileName=
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
test.json
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
if (os.path.exists(myFileName)):
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
with open(myFileName,
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
r
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
) as myFile:
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
myData=json.load(myFile)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
myFile.close()
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
else:
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
myData={
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
value
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
:0}
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
myData[
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
value
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
]=myData[
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
value
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
]+1
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
print(
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
pythontex has been run
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
+str(myData[
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
value
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
])+
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
times.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
with open(
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
test.json
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
,
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
w
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
) as myFile:
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
json.dump(myData, myFile)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
myFile.close()
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
# force two runs of pythontex
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
signfile=open(
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
pythontex-wrapper-runagain.tmp
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
,
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
w
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
signfile.close()
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
|
||||
\backslash
|
||||
end{pycode}
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_deeper
|
||||
\end_body
|
||||
\end_document
|
@ -8,6 +8,7 @@
|
||||
# by changing the executable name
|
||||
latexcommand="pdflatex"
|
||||
pythontexcommand="pythontex3"
|
||||
secondrunfile="pythontex-wrapper-runagain.tmp"
|
||||
|
||||
if [ "$1" = "--help" ] || [ "$1" = "-h" ] ; then
|
||||
echo "pythontex-wrapper V0.1, licensed CC0-1.0"
|
||||
@ -49,6 +50,9 @@ if [ ! -e ${pytxcodefilename} ] ; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# remove second-run-request file
|
||||
rm -f ${secondrunfile}
|
||||
|
||||
echo -e "\n\npythontex-wrapper: Calling ${pythontexcommand}"
|
||||
echo -e "------------------------------------------\n\n"
|
||||
${pythontexcommand} $1
|
||||
@ -65,6 +69,25 @@ if [ ${lastResult} -gt 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -e ${secondrunfile} ] ; then
|
||||
# 2nd run of pythontex requested
|
||||
echo -e "\n\npythontex-wrapper: Calling ${pythontexcommand} for 2nd run"
|
||||
echo -e "------------------------------------------\n\n"
|
||||
${pythontexcommand} --rerun always $1
|
||||
lastResult=$?
|
||||
echo "pythontex run: ${lastResult}" >> pythontex-wrapper.log
|
||||
if [ ${lastResult} -gt 0 ]; then
|
||||
# running pythontex failed
|
||||
# lyx expects LaTeX error messages in the log file
|
||||
# Add a fake latex error message which lyx understands
|
||||
echo "! Undefined control sequence." >>${logfilename}
|
||||
echo "l.17 \\pythontexError" >>${logfilename}
|
||||
echo "\\Actually there is a pythontex error, see complete log for details." >>${logfilename}
|
||||
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# pythontex worked, run latex again
|
||||
echo -e "\n\npythontex-wrapper: Calling ${latexcommand}"
|
||||
echo -e "------------------------------------------\n\n"
|
||||
|
Loading…
Reference in New Issue
Block a user