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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sage-support/d6b2a259-f516-4fad-b82e-19cbec8a74d7%40googlegroups.com.