Hi David, On Wed, May 13, 2020 at 11:53 PM David Sevilla <sevil...@gmail.com> wrote:
> Hi, I have been trying to use SageTeX in a document where I also use the > fancyhdr package, and I am not able to put Sage computations in the header > (or the footer). A minimal example follows. > > \documentclass{article} > \usepackage{sagetex} > \usepackage{fancyhdr} > > \begin{document} > > \begin{sagesilent} > n = 1 > \end{sagesilent} > > \fancyhead[R]{$\sage{n}$} > \title > {$\sage{n}$} > \maketitle > \thispagestyle{fancy} > > \end{document} > > > After pdflatex, and running sage on the .sagetex.sage file, I get the > following error: > > Processing Sage code for test02.tex... > Code block (line 7) begin...end > Inline formula 0 (line 14) > Sage processing complete. Run LaTeX on test02.tex again. > Inline formula 1 (line 17) > > **** Error in Sage code on line 17 of test02.tex! Traceback follows. > Traceback (most recent call last): > File "test02.sagetex.sage.py", line 24, in <module> > _st_.inline(_sage_const_1 , latex(n)) > File "/usr/lib/python2.7/dist-packages/sagetex.py", line 121, in inline > '}{{%\n' + s.rstrip() + '}{}{}{}{}}\n') > ValueError: I/O operation on closed file > > **** Running Sage on test02.sage failed! Fix test02.tex and try again. > Traceback (most recent call last): > File "test02.sagetex.sage.py", line 26, in <module> > _st_.goboom(_sage_const_17 ) > File "/usr/lib/python2.7/dist-packages/sagetex.py", line 264, in goboom > os.remove(self.filename + '.sagetex.sout.tmp') > OSError: [Errno 2] No such file or directory: 'test02.sagetex.sout.tmp' > > As you can see, "inline formula 0" was generated properly and the processing > ended there; that line (14) is the \maketitle. On the other hand, inline > formula 1 was not resolved because the file was already closed (note the > "Sage processing complete" before); the line 17 where it arose is the > \end{document}. After the second pdflatex, the Sage result appears correctly > in the title but "??" appears instead in the header, and I get the: > > LaTeX Warning: Reference `@sageinline1' on page 1 undefined on input line 17. > > > > Any suggestions on how to combine these two packages is very welcome, or at > least an explanation of this behaviour (why did Sage think that there was > nothing else to do after formula 0???). I cannot think of a workaround, other > than avoiding fancyhdr and searching for smart LaTeX to be able to put things > into place. > Thanks for the record. A hotfix is to edit /usr/lib/python2.7/dist-packages/sagetex.py and replace the line 285, which is self.souttmp.close() with the following 2 lines: self.souttmp.flush() os.fsync(self.souttmp.fileno()) Then it should work. The problem is that fancyhdr does some kind of postprocessing, after sagetex thinks all is done. Indeed, with this fix I see running sage with the pdflatex output of your file hh.tex $ sage hh.sagetex.sage Processing Sage code for hh.tex... Code block (line 7) begin...end Inline formula 0 (line 14) Sage processing complete. Run LaTeX on hh.tex again. Inline formula 1 (line 17) This should be of course properly fixed - please open an issue on https://github.com/sagemath/sagetex Best Dmirii > Thanks! > > -- > You received this message because you are subscribed to the Google Groups > "sage-support" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-support+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sage-support/fabb1997-a5c5-4a5f-819c-1f5a4fb63ff3%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/CAAWYfq2i4TzbEFaC4XAV-B%3Dk9GMO5r-smvNRNNbvV44PU_F57w%40mail.gmail.com.