* [NTG-context] mtx-synctex.lua question @ 2023-12-07 18:23 Jim 2023-12-08 14:03 ` [NTG-context] " Hans Hagen via ntg-context 0 siblings, 1 reply; 6+ messages in thread From: Jim @ 2023-12-07 18:23 UTC (permalink / raw) To: ntg-context Hi, In mtx-synctex.lua, inside local function findlocation(filename,page,xpos,ypos,tolerance) there is the following code: for s=1,tolerance,max(tolerance//10,1) do locate( s, 0) if fi ~= 0 then tl = s ; goto done end locate(-s, 0) if fi ~= 0 then tl = s ; goto done end locate( s, s) if fi ~= 0 then tl = s ; goto done end locate( s,-s) if fi ~= 0 then tl = s ; goto done end locate(-s, s) if fi ~= 0 then tl = s ; goto done end locate(-s,-s) if fi ~= 0 then tl = s ; goto done end end Is the omission of the locate(0, s) ... and locate(0, -s) ... cases intentional, or is that an oversight? If intentional, can someone explain the rationale to me? Thanks. Jim ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* [NTG-context] Re: mtx-synctex.lua question 2023-12-07 18:23 [NTG-context] mtx-synctex.lua question Jim @ 2023-12-08 14:03 ` Hans Hagen via ntg-context 2023-12-08 15:38 ` Jim 0 siblings, 1 reply; 6+ messages in thread From: Hans Hagen via ntg-context @ 2023-12-08 14:03 UTC (permalink / raw) To: Jim, mailing list for ConTeXt users; +Cc: Hans Hagen On 12/7/2023 7:23 PM, Jim wrote: > Hi, > > In mtx-synctex.lua, inside > local function findlocation(filename,page,xpos,ypos,tolerance) > there is the following code: > for s=1,tolerance,max(tolerance//10,1) do > locate( s, 0) if fi ~= 0 then tl = s ; goto done end > locate(-s, 0) if fi ~= 0 then tl = s ; goto done end > locate( s, s) if fi ~= 0 then tl = s ; goto done end > locate( s,-s) if fi ~= 0 then tl = s ; goto done end > locate(-s, s) if fi ~= 0 then tl = s ; goto done end > locate(-s,-s) if fi ~= 0 then tl = s ; goto done end > end > > Is the omission of the > locate(0, s) ... > and > locate(0, -s) ... > cases intentional, or is that an oversight? > > If intentional, can someone explain the rationale to me? it's too long ago to remember the reason ... did you test with and without? Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl ----------------------------------------------------------------- ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* [NTG-context] Re: mtx-synctex.lua question 2023-12-08 14:03 ` [NTG-context] " Hans Hagen via ntg-context @ 2023-12-08 15:38 ` Jim 2023-12-08 18:51 ` Jim 0 siblings, 1 reply; 6+ messages in thread From: Jim @ 2023-12-08 15:38 UTC (permalink / raw) To: Hans Hagen; +Cc: ntg-context Hi Hans, On Fri, Dec 8, 2023 at 15:03 (+0100), Hans Hagen wrote: > On 12/7/2023 7:23 PM, Jim wrote: >> Hi, >> In mtx-synctex.lua, inside >> local function findlocation(filename,page,xpos,ypos,tolerance) >> there is the following code: >> for s=1,tolerance,max(tolerance//10,1) do >> locate( s, 0) if fi ~= 0 then tl = s ; goto done end >> locate(-s, 0) if fi ~= 0 then tl = s ; goto done end >> locate( s, s) if fi ~= 0 then tl = s ; goto done end >> locate( s,-s) if fi ~= 0 then tl = s ; goto done end >> locate(-s, s) if fi ~= 0 then tl = s ; goto done end >> locate(-s,-s) if fi ~= 0 then tl = s ; goto done end >> end >> Is the omission of the >> locate(0, s) ... >> and >> locate(0, -s) ... >> cases intentional, or is that an oversight? >> If intentional, can someone explain the rationale to me? > it's too long ago to remember the reason ... did you test with and without? I did not. Yet. But on your suggestion, I will give it a try and get back to you. Jim ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* [NTG-context] Re: mtx-synctex.lua question 2023-12-08 15:38 ` Jim @ 2023-12-08 18:51 ` Jim 2023-12-08 20:18 ` Hans Hagen 0 siblings, 1 reply; 6+ messages in thread From: Jim @ 2023-12-08 18:51 UTC (permalink / raw) To: mailing list for ConTeXt users Hi Hans (and anyone else interested in synctex), On Fri, Dec 8, 2023 at 11:38 (-0400), Jim wrote: > Hi Hans, > On Fri, Dec 8, 2023 at 15:03 (+0100), Hans Hagen wrote: >> On 12/7/2023 7:23 PM, Jim wrote: >>> Hi, >>> In mtx-synctex.lua, inside >>> local function findlocation(filename,page,xpos,ypos,tolerance) >>> there is the following code: >>> for s=1,tolerance,max(tolerance//10,1) do >>> locate( s, 0) if fi ~= 0 then tl = s ; goto done end >>> locate(-s, 0) if fi ~= 0 then tl = s ; goto done end >>> locate( s, s) if fi ~= 0 then tl = s ; goto done end >>> locate( s,-s) if fi ~= 0 then tl = s ; goto done end >>> locate(-s, s) if fi ~= 0 then tl = s ; goto done end >>> locate(-s,-s) if fi ~= 0 then tl = s ; goto done end >>> end >>> Is the omission of the >>> locate(0, s) ... >>> and >>> locate(0, -s) ... >>> cases intentional, or is that an oversight? >>> If intentional, can someone explain the rationale to me? >> it's too long ago to remember the reason ... did you test with and without? > I did not. Yet. > But on your suggestion, I will give it a try and get back to you. I modified mtx-synctex.lua as follows: % diff /usr/local/context/tex/texmf-context/scripts/context/lua/mtx-synctex.lua mtx-synctex-jd.lua 279a280 > -- JD added (0, +/-s) cases for testing 282a284,285 > locate( 0, s) if fi ~= 0 then tl = s ; goto done end > locate( 0,-s) if fi ~= 0 then tl = s ; goto done end and then wrote the following quick and dirty shell script to create log files for comparison: --------------------------------------------------------------------- #! /bin/zsh # File: compare-my-synctex-version # Author: Jim Diamond # Created: 2023/12/08 13:27:23 # # Purpose: Run some tests to compare ConTeXt's mtx-synctex-lua to # my own version, vis-a-vis the backward-search # functionality. # # Notes: Assumes $1 is a valid ConTeXt synctex file, # $2 is a valid page within that file, and # $3, if present, is a valid DEFAULT_TOLERANCE=300 if [[ $# < 2 || $# > 3 || ! -r $1 ]] then echo >&2 "Usage: $0 <synctex file> <page> [tolerance]" echo >&2 " tolerance default is $DEFAULT_TOLERANCE." exit 1 fi st_file=$1 page=$2 if [[ $3 != "" ]] then tolerance=$3 else tolerance=$DEFAULT_TOLERANCE fi x_vals=`seq 100 50 550` y_vals=`seq 100 50 700` old_results=${st_file}_page_${page}_tol_${tolerance}_using_current.out new_results=${st_file}_page_${page}_tol_${tolerance}_using_new.out if [[ -e $old_results || -e $new_results ]] then printf >&2 "$0: at least one of\n\t%s\nor\n\t%s\nexists; quitting.\n" \ $old_results $new_results exit 1 fi # Get rid of the extra newline from mtxrun as done below. for x in $=x_vals do for y in $=y_vals do printf "%3d, %3d: " $x $y out=`mtxrun --script synctex --goto --direct \ --page=$page --x=$x --y=$y --tolerance=$tolerance $st_file` echo $out done done | tee $old_results echo for x in $=x_vals do for y in $=y_vals do printf "%3d, %3d: " $x $y out=`mtxrun --script mtx-synctex-jd.lua --goto --direct \ --page=$page --x=$x --y=$y --tolerance=$tolerance $st_file` echo $out done done | tee $new_results --------------------------------------------------------------------- and ran it on one page of one synctex file for a few different values of tolerance (300, 200, 100 and 50). To briefly summarize, the modified script found a small number of matches that the original script didn't, occasionally the line number was different (almost always by 1, but a few times more), and the tolerance returned by this test version was also <= the tolerance returned by the current version. Admittedly, with the other two directions added in, a more extensive test (a total of a bit under 14 minutes CPU time on a Ryzen 4700U) showed the new version is about 0.5% slower, so there is a very minor downside. (I'd happily spend the extra matches for the minuscule amount of CPU time, but others may not.) Cheers. Jim ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* [NTG-context] Re: mtx-synctex.lua question 2023-12-08 18:51 ` Jim @ 2023-12-08 20:18 ` Hans Hagen 2023-12-08 21:36 ` Jim 0 siblings, 1 reply; 6+ messages in thread From: Hans Hagen @ 2023-12-08 20:18 UTC (permalink / raw) To: ntg-context On 12/8/2023 7:51 PM, Jim wrote: > Hi Hans (and anyone else interested in synctex), > 282a284,285 >> locate( 0, s) if fi ~= 0 then tl = s ; goto done end >> locate( 0,-s) if fi ~= 0 then tl = s ; goto done end > > and then wrote the following quick and dirty shell script to create log > files for comparison: ok > Admittedly, with the other two directions added in, a more extensive test > (a total of a bit under 14 minutes CPU time on a Ryzen 4700U) showed the > new version is about 0.5% slower, so there is a very minor downside. (I'd > happily spend the extra matches for the minuscule amount of CPU time, but > others may not.) the .5% precen tis no big deal, also because this script is not that time critical (the code could be made a bit faster anyway) so i'll add the few lines so those 14 minutes, was that N times a file or 1 time a huge file? Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl ----------------------------------------------------------------- ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
* [NTG-context] Re: mtx-synctex.lua question 2023-12-08 20:18 ` Hans Hagen @ 2023-12-08 21:36 ` Jim 0 siblings, 0 replies; 6+ messages in thread From: Jim @ 2023-12-08 21:36 UTC (permalink / raw) To: mailing list for ConTeXt users On Fri, Dec 8, 2023 at 21:18 (+0100), Hans Hagen wrote: > On 12/8/2023 7:51 PM, Jim wrote: >> Hi Hans (and anyone else interested in synctex), >> 282a284,285 >>> locate( 0, s) if fi ~= 0 then tl = s ; goto done end >>> locate( 0,-s) if fi ~= 0 then tl = s ; goto done end >> and then wrote the following quick and dirty shell script to create log >> files for comparison: > ok >> Admittedly, with the other two directions added in, a more extensive test >> (a total of a bit under 14 minutes CPU time on a Ryzen 4700U) showed the >> new version is about 0.5% slower, so there is a very minor downside. (I'd >> happily spend the extra matches for the minuscule amount of CPU time, but >> others may not.) > the .5% precen tis no big deal, also because this script is not that time > critical (the code could be made a bit faster anyway) so i'll add the few > lines Great. If nothing else, it will keep other people from asking the same question in the future. :-) > so those 14 minutes, was that N times a file or 1 time a huge file? N times a file: I swiped the code from the program and defined two functions, one (test_old) one for the current code and one for the new code: test_new () { for x in $=x_vals do for y in $=y_vals do printf "%3d, %3d: " $x $y out=`mtxrun --script mtx-synctex-jd.lua --goto --direct \ --page=$page --x=$x --y=$y --tolerance=$tolerance $st_file` echo $out done done } (The test_old was the same except for the argument to --script, which is 'synctext'.) I defined $page=15, $tolerance=300 and $st_file to be a file with 3441 lines (there are 19 pages in total, so I was skipping a lot of stuff) and changed x_vals and y_vals to create a lot of iterations: x_vals=`seq 100 5 550` y_vals=`seq 100 5 700` and finally I ran time (test_new > /dev/null) and time (test_old > /dev/null) So mtxrun was called for each of these 11,011 times. Not the best possible benchmark, but probably good enough to show that adding the other two cases isn't hurtful. Cheers. Jim ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-12-08 21:38 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-12-07 18:23 [NTG-context] mtx-synctex.lua question Jim 2023-12-08 14:03 ` [NTG-context] " Hans Hagen via ntg-context 2023-12-08 15:38 ` Jim 2023-12-08 18:51 ` Jim 2023-12-08 20:18 ` Hans Hagen 2023-12-08 21:36 ` Jim
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).