Ask Your Question
1

TexShop sage.engine can't tell if running Sage is necessary

asked 2016-11-30 23:06:03 -0500

markus gravatar image

updated 2016-12-01 15:23:41 -0500

I have switched from sagetex.py version 2012/01/16 v2.3.3-69dcb0eb93de to version 2015/08/26 v3.0-92d9f7a. When I compile a tex file using sage.engine it can't determine whether sage needs to run or not. I've narrowed this down to the if statement in sage.engine

# do we need to run Sage?
if [ -f "$soutname" ]
then
    new_sum=$(egrep -v '^( _st_.goboom|print .SageT)' "$sagename" | md5)
    old_sum=$(egrep -o ^%[0-9a-f]{32}% "$soutname" | cut -b 2-33)
    if [ "$new_sum" != "$old_sum" ]
    then
        run_sage=yes
    fi
else
    # no .sout file, so run Sage
    run_sage=yes
fi

I think the first egrep call should also eliminate lines containing current_tex_line. I've tried

new_sum=$(egrep -v '^( _st_.goboom|print .SageT)' "$sagename" | egrep -v '^( _st_.current_tex_line)' | md5)

but to no avail.

Any ideas would be much appreciated. Thanks.

Here is an example: the test.tex file

% !TEX TS-program = sage
\documentclass[12pt]{article}
\usepackage{sagetex}
\begin{document}
$2+3=\sage{2+3}$
\end{document}

produces among other things a sagetex.sout file that contains

% This file was *autogenerated* from test.sagetex.sage with
 % sagetex.py version 2015/08/26 v3.0-92d9f7a
\newlabel{@sageinline0}{{%
5}{}{}{}{}}
%b22d43e1240df548df8cf6749b32284b% md5sum of corresponding .sage file (minus "goboom", "current_tex_line", and pause/unpause lines)

The sage.engine if statement should compare the md5 value of sagetex.sage minus a few lines to the md5sum in sagetex.sout.

edit retag flag offensive close merge delete

Comments

I feel like this might have happened to me before, but certainly not consistently enough to have noticed it for sure. Can you give a minimal example of a file and a change in it that (reproducibly) doesn't trigger the recompile? That is what we'd really need to think about this properly.

kcrisman gravatar imagekcrisman ( 2016-12-01 07:54:39 -0500 )edit
1

Thanks for your response. I've added an example.

markus gravatar imagemarkus ( 2016-12-01 15:25:00 -0500 )edit

Glad you figured out your problem, but I still don't see what the line you would change would be that in the current SageTeX causes it not to recompile with Sage.

kcrisman gravatar imagekcrisman ( 2016-12-01 22:16:15 -0500 )edit

2 answers

Sort by » oldest newest most voted
1

answered 2016-12-01 21:44:19 -0500

markus gravatar image

I've figured it out. Replacing the new_sum line sage.engine by

new_sum=$(egrep -v '^( _st_.goboom|print .SageT)' "$sagename" | egrep -v '(_st_.current_tex_line)' | md5)

does the trick.

edit flag offensive delete link more

Comments

If you think this is really a bug, I highly recommend emailing Richard Koch, the TeXShop author (http://pages.uoregon.edu/koch/texshop...) to report this. Apparently he is very responsive, or so the frequent updating would suggest.

kcrisman gravatar imagekcrisman ( 2016-12-01 22:22:11 -0500 )edit
0

answered 2017-04-20 10:02:50 -0500

Hi guys!

I think also line 8 in sage.engine can cause the same problem. In my experience if line 8 is soutname=${filename/%tex/.sout} md5 doesn’t recognise created file.

So I put soutname=${filename/%tex/sagetex.sout} and it can tell if running Sage is necessary.

What's your experience?

edit flag offensive delete link more

Comments

Again, you should bring these issues to the attention of the TeXShop developer, I don't think these files are in SageTeX itself - I think?

kcrisman gravatar imagekcrisman ( 2017-04-21 06:46:40 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2016-11-30 23:06:03 -0500

Seen: 56 times

Last updated: Dec 01 '16