On Thursday, May 14, 2020 at 7:00:34 PM UTC+2, Dima Pasechnik wrote:
>
>
>
> 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.
>

That was quick, thanks a lot Dima!!

-- 
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/d6b2a259-f516-4fad-b82e-19cbec8a74d7%40googlegroups.com.

Reply via email to