summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/synctex/synctex-e-mem.ch0
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/synctex/synctex-e-mem.ch0')
-rw-r--r--Build/source/texk/web2c/synctex/synctex-e-mem.ch0164
1 files changed, 164 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/synctex/synctex-e-mem.ch0 b/Build/source/texk/web2c/synctex/synctex-e-mem.ch0
new file mode 100644
index 00000000000..d36577c7bfb
--- /dev/null
+++ b/Build/source/texk/web2c/synctex/synctex-e-mem.ch0
@@ -0,0 +1,164 @@
+Copyright (c) 2008 jerome DOT laurens AT u-bourgogne DOT fr
+
+This file is part of the SyncTeX package.
+
+License:
+--------
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE
+
+Except as contained in this notice, the name of the copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in this Software without prior written
+authorization from the copyright holder.
+
+Notice:
+-------
+This file contains TeX changes for core synctex support.
+It is missing some implementation details that are deferred to either
+sync-pdftex.ch or sync-xetex.ch
+synctex.ch is based on tex.web after the eTeX changes have been applied.
+So it might not apply as is to pdftex.web due to some typographical changes.
+In the building process, one may have to apply some suitable tex.ch0 first.
+See pdftexdir for details.
+
+@x etex.ch l.3852
+ begin free_node(LR_temp,small_node_size); p:=head;
+ while link(p)<>tail do p:=link(p);
+ free_node(tail,small_node_size); link(p):=null; tail:=p; goto done;
+ end;
+@y
+ begin free_node(LR_temp,medium_node_size); p:=head;
+ {{\sl SyncTeX}: |LR_temp| is a math node}
+ while link(p)<>tail do p:=link(p);
+ free_node(tail,medium_node_size); link(p):=null; tail:=p; goto done;
+ end;
+@z
+
+@x etex.ch l.3976
+@<Reverse an hlist segment...@>=
+begin save_h:=cur_h; temp_ptr:=link(p); rule_wd:=width(p);
+free_node(p,small_node_size);
+@y
+@<Reverse an hlist segment...@>=
+begin save_h:=cur_h; temp_ptr:=link(p); rule_wd:=width(p);
+free_node(p,medium_node_size); {{\sl Sync\TeX}: p is a |math_node|}
+@z
+
+@x etex.ch l.4036
+if type(p)=kern_node then if (rule_wd=0)or(l=null) then
+ begin free_node(p,small_node_size); p:=l;
+ end;
+@y
+if type(p)=kern_node then if (rule_wd=0)or(l=null) then
+ begin free_node(p,medium_node_size); p:=l;
+ end;
+@z
+
+@x etex.ch l.4088
+@<Finish the reversed...@>=
+begin free_node(p,small_node_size);
+link(t):=q; width(t):=rule_wd; edge_dist(t):=-cur_h-rule_wd; goto done;
+end
+@y
+@<Finish the reversed...@>=
+begin free_node(p,medium_node_size); {{\sl Sync\TeX}: p is a |kern_node|}
+link(t):=q; width(t):=rule_wd; edge_dist(t):=-cur_h-rule_wd; goto done;
+end
+@z
+
+@x etex.ch l.4137
+ kern_node,math_node: begin r:=get_node(small_node_size);
+ words:=small_node_size;
+ end;
+ glue_node: begin r:=get_node(small_node_size); add_glue_ref(glue_ptr(p));
+ glue_ptr(r):=glue_ptr(p); leader_ptr(r):=null;
+ end;
+@y
+ kern_node,math_node: begin
+ words:=medium_node_size; {{\sl Sync\TeX}: proper size for math and kern}
+ r:=get_node(words);
+ end;
+ glue_node: begin r:=get_node(medium_node_size); add_glue_ref(glue_ptr(p));
+ {{\sl Sync\TeX}: proper size for glue}
+ glue_ptr(r):=glue_ptr(p); leader_ptr(r):=null;
+ end;
+@z
+
+@x etex.ch l.4234
+found:width(t):=width(p); link(t):=q; free_node(p,small_node_size);
+done:link(temp_head):=l;
+end;
+
+@ @<Adjust \(t)the LR stack for the |j...@>=
+if end_LR(p) then
+ if info(LR_ptr)<>end_LR_type(p) then
+ begin type(p):=kern_node; incr(LR_problems);
+ end
+ else begin pop_LR;
+ if n>min_halfword then
+ begin decr(n); decr(subtype(p)); {change |after| into |before|}
+ end
+ else begin if m>min_halfword then decr(m)@+else goto found;
+ type(p):=kern_node;
+ end;
+ end
+else begin push_LR(p);
+ if (n>min_halfword)or(LR_dir(p)<>cur_dir) then
+ begin incr(n); incr(subtype(p)); {change |before| into |after|}
+ end
+ else begin type(p):=kern_node; incr(m);
+ end;
+ end
+@y
+found:width(t):=width(p); link(t):=q; free_node(p,small_node_size);
+ {{\sl Sync\TeX}: Unused label, see below}
+done:link(temp_head):=l;
+end;
+
+@ @<Adjust \(t)the LR stack for the |j...@>=
+if end_LR(p) then
+ if info(LR_ptr)<>end_LR_type(p) then
+ begin type(p):=kern_node; incr(LR_problems);
+ {{\sl Sync\TeX} node size watch point: |math_node| size == |kern_node| size}
+ end
+ else begin pop_LR;
+ if n>min_halfword then
+ begin decr(n); decr(subtype(p)); {change |after| into |before|}
+ end
+ else begin if m>min_halfword then decr(m)@+else begin
+ width(t):=width(p); link(t):=q; free_node(p,medium_node_size);
+{{\sl Sync\TeX}: no more "goto found", and proper node size}
+ goto done;
+ end;
+ type(p):=kern_node;
+ {{\sl Sync\TeX} node size watch point: |math_node| size == |kern_node| size}
+ end;
+ end
+else begin push_LR(p);
+ if (n>min_halfword)or(LR_dir(p)<>cur_dir) then
+ begin incr(n); incr(subtype(p)); {change |before| into |after|}
+ end
+ else begin type(p):=kern_node; incr(m);
+ {{\sl Sync\TeX} node size watch point: |math_node| size == |kern_node| size}
+ end;
+ end
+@z