On Thursday, May 14, 2020 at 12:14:36 PM UTC+1, Dima Pasechnik wrote:
>
> Hi David, 
>
> On Wed, May 13, 2020 at 11:53 PM David Sevilla <> 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 
>

I have opened https://github.com/sagemath/sagetex/issues/47
to fix this proprely.

-- 
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/8577c067-6367-473e-9ce5-a5a277a5dfd1%40googlegroups.com.

Reply via email to