Add a way to request two pythontex runs.

master
Michael Georg Hansen 4 years ago
parent 7b3ff3914f
commit 6819cddc80

@ -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…
Cancel
Save