Test if tikzmark exists on same page The 2019 Stack Overflow Developer Survey Results Are InTikz - How to overlay Decorations over longtableExporting animation created with animate packageMark (highlight) a paragraph (item…) with a squiggly line for later attentiontikzmarknode lines with hooksTikz picture with tikzmark across page boundary won't print if inside environmentRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?TikZ: Drawing an arc from an intersection to an intersectionLine up nested tikz enviroments or how to get rid of themProblems with nested TikZpicturesDrawing tikz line in the margin for multiple pagesUsing Tikzmark and ArrowsLabelings with Tikzmark
Keeping a retro style to sci-fi spaceships?
Pretty sure I'm over complicating my loops but unsure how to simplify
Did the UK government pay "millions and millions of dollars" to try to snag Julian Assange?
Mortgage adviser recommends a longer term than necessary combined with overpayments
Merge multiple DataFrames Pandas
How to read αἱμύλιος or when to aspirate
How to determine omitted units in a publication
Word to describe a time interval
Homework question about an engine pulling a train
What information about me do stores get via my credit card?
Is this wall load bearing? Blueprints and photos attached
Why doesn't shell automatically fix "useless use of cat"?
How to politely respond to generic emails requesting a PhD/job in my lab? Without wasting too much time
For what reasons would an animal species NOT cross a *horizontal* land bridge?
One-dimensional Japanese puzzle
Word for: a synonym with a positive connotation?
The following signatures were invalid: EXPKEYSIG 1397BC53640DB551
How do spell lists change if the party levels up without taking a long rest?
Solving overdetermined system by QR decomposition
How to substitute curly brackets with round brackets in a grid of list
Button changing its text & action. Good or terrible?
Why doesn't a hydraulic lever violate conservation of energy?
Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?
Do warforged have souls?
Test if tikzmark exists on same page
The 2019 Stack Overflow Developer Survey Results Are InTikz - How to overlay Decorations over longtableExporting animation created with animate packageMark (highlight) a paragraph (item…) with a squiggly line for later attentiontikzmarknode lines with hooksTikz picture with tikzmark across page boundary won't print if inside environmentRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?TikZ: Drawing an arc from an intersection to an intersectionLine up nested tikz enviroments or how to get rid of themProblems with nested TikZpicturesDrawing tikz line in the margin for multiple pagesUsing Tikzmark and ArrowsLabelings with Tikzmark
Apologies for flooding the site with tikzmark problems ... :)
I know that with iftikzmark I can test if a given tikzmark exists in general. Is there a way to test if a particular tikzmark exists on the same page?
Use case: I'm trying to design macros that I can insert anywhere in a text that would draw a line between them –- a linestart and a linefinish command. However, when the linefinish command happens to fall on a subsequent page, the line gets drawn to where the linestart command was on the previous page. I would rather have it instead "do something else", here, just for purpose of illustration, draw me a black square – or, ideally "point across" the page in the direction to where the other mark is sitting.
In the code below, I've tried to construct what I'm envisioning using iftikzmark but that does not work.
documentclassarticle
usepackagetikz
usetikzlibrarytikzmark
newcountertikzmkstartsetcountertikzmkstart0 %
newcountertikzmkfinishsetcountertikzmkfinish0 %
newcommandlinestart%
stepcountertikzmkfinishiftikzmarkbthetikzmkfinish% tikzmark exists on same page
stepcountertikzmkstarttikzmarknodeathetikzmkstartvphantomxaddtocountertikzmkfinish-1
% tikzmark doesn't exist on page
begintikzpicture draw [line width=4] (0,0) -- (.1,0); endtikzpictureaddtocountertikzmkfinish-1% black square if linefinish on next page
newcommandlinefinish%
iftikzmarkathetikzmkstart% tikzmark exists on same page
stepcountertikzmkfinishtikzmarknodebthetikzmkfinishvphantomxbegintikzpicture[remember picture] draw[overlay] (athetikzmkstart.west) -- (bthetikzmkfinish.west); endtikzpicture
% tikzmark doesn't exist on page
begintikzpicture draw [line width=4] (0,0) -- (.1,0); endtikzpicture
begindocument
Text linestart text text
Text text text
%newpage
Text text linefinish text
enddocument
Any ideas of how else I might accomplish something like this would be very welcome!
Update: Based on @marmot's suggestion to look at this answer, I've now come up with the following. However, I'm stuck with how to make the lines "point across" the page breaks ...
documentclassarticle
usepackagerefcount
usepackagetikz
usetikzlibrarycalc
newcountertmp
newcommandtikzmark[1]%
tikz[overlay,remember picture] node (#1) ;
newcommandlinestart%
stepcountertmp%
tikzmarkalabelathetmp%
ifnumgetpagerefnumberathetmp=getpagerefnumberbthetmp else
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
fi%
newcommandlinefinish%
tikzmarkblabelbthetmp
ifnumgetpagerefnumberathetmp=getpagerefnumberbthetmp
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
else
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
fi
newcommandSqu[1]linestart#1linefinish
begindocument
Text linestart text text
Text text text
Text text linefinish text
Text linestart text text
Text text text
newpage
Text text linefinish text
enddocument
tikz-pgf macros tikzmark
|
show 5 more comments
Apologies for flooding the site with tikzmark problems ... :)
I know that with iftikzmark I can test if a given tikzmark exists in general. Is there a way to test if a particular tikzmark exists on the same page?
Use case: I'm trying to design macros that I can insert anywhere in a text that would draw a line between them –- a linestart and a linefinish command. However, when the linefinish command happens to fall on a subsequent page, the line gets drawn to where the linestart command was on the previous page. I would rather have it instead "do something else", here, just for purpose of illustration, draw me a black square – or, ideally "point across" the page in the direction to where the other mark is sitting.
In the code below, I've tried to construct what I'm envisioning using iftikzmark but that does not work.
documentclassarticle
usepackagetikz
usetikzlibrarytikzmark
newcountertikzmkstartsetcountertikzmkstart0 %
newcountertikzmkfinishsetcountertikzmkfinish0 %
newcommandlinestart%
stepcountertikzmkfinishiftikzmarkbthetikzmkfinish% tikzmark exists on same page
stepcountertikzmkstarttikzmarknodeathetikzmkstartvphantomxaddtocountertikzmkfinish-1
% tikzmark doesn't exist on page
begintikzpicture draw [line width=4] (0,0) -- (.1,0); endtikzpictureaddtocountertikzmkfinish-1% black square if linefinish on next page
newcommandlinefinish%
iftikzmarkathetikzmkstart% tikzmark exists on same page
stepcountertikzmkfinishtikzmarknodebthetikzmkfinishvphantomxbegintikzpicture[remember picture] draw[overlay] (athetikzmkstart.west) -- (bthetikzmkfinish.west); endtikzpicture
% tikzmark doesn't exist on page
begintikzpicture draw [line width=4] (0,0) -- (.1,0); endtikzpicture
begindocument
Text linestart text text
Text text text
%newpage
Text text linefinish text
enddocument
Any ideas of how else I might accomplish something like this would be very welcome!
Update: Based on @marmot's suggestion to look at this answer, I've now come up with the following. However, I'm stuck with how to make the lines "point across" the page breaks ...
documentclassarticle
usepackagerefcount
usepackagetikz
usetikzlibrarycalc
newcountertmp
newcommandtikzmark[1]%
tikz[overlay,remember picture] node (#1) ;
newcommandlinestart%
stepcountertmp%
tikzmarkalabelathetmp%
ifnumgetpagerefnumberathetmp=getpagerefnumberbthetmp else
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
fi%
newcommandlinefinish%
tikzmarkblabelbthetmp
ifnumgetpagerefnumberathetmp=getpagerefnumberbthetmp
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
else
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
fi
newcommandSqu[1]linestart#1linefinish
begindocument
Text linestart text text
Text text text
Text text linefinish text
Text linestart text text
Text text text
newpage
Text text linefinish text
enddocument
tikz-pgf macros tikzmark
The way you write the questions may indicate that you are about to construct a tikzmar version of something like this answer. The basic trick is that you build in the page number.
– marmot
Apr 6 at 16:51
@marmot Oh, you mean incorporating the pagenumber into the label for the node. Ha, that's clever.
– jan
Apr 6 at 16:53
Yes, basically. If you also want the line to also run over page breaks, you may needrefcount, like in Gonzalo's answer.
– marmot
Apr 6 at 16:56
1
tikzmarkalready saves the page number on which it is defined (see tex.stackexchange.com/q/79121/86 for a use of this, and look atnext pagein the documentation). There isn't a current direct interface to that information; it is stored assave@pg@<picture id of the tikzmark>so you could do a test on that. I'm not going to attempt to get the expansions right in a comment, but something likeifnumcsname save@pg@pgfpictureidendcsname=csname save@pg@csname save@pt@tmk@labelendcsnameendcsname
– Loop Space
Apr 6 at 17:10
@LoopSpace Hmm, that looks fairly complex. Would you be able to explain where I incorporate that?
– jan
Apr 6 at 17:14
|
show 5 more comments
Apologies for flooding the site with tikzmark problems ... :)
I know that with iftikzmark I can test if a given tikzmark exists in general. Is there a way to test if a particular tikzmark exists on the same page?
Use case: I'm trying to design macros that I can insert anywhere in a text that would draw a line between them –- a linestart and a linefinish command. However, when the linefinish command happens to fall on a subsequent page, the line gets drawn to where the linestart command was on the previous page. I would rather have it instead "do something else", here, just for purpose of illustration, draw me a black square – or, ideally "point across" the page in the direction to where the other mark is sitting.
In the code below, I've tried to construct what I'm envisioning using iftikzmark but that does not work.
documentclassarticle
usepackagetikz
usetikzlibrarytikzmark
newcountertikzmkstartsetcountertikzmkstart0 %
newcountertikzmkfinishsetcountertikzmkfinish0 %
newcommandlinestart%
stepcountertikzmkfinishiftikzmarkbthetikzmkfinish% tikzmark exists on same page
stepcountertikzmkstarttikzmarknodeathetikzmkstartvphantomxaddtocountertikzmkfinish-1
% tikzmark doesn't exist on page
begintikzpicture draw [line width=4] (0,0) -- (.1,0); endtikzpictureaddtocountertikzmkfinish-1% black square if linefinish on next page
newcommandlinefinish%
iftikzmarkathetikzmkstart% tikzmark exists on same page
stepcountertikzmkfinishtikzmarknodebthetikzmkfinishvphantomxbegintikzpicture[remember picture] draw[overlay] (athetikzmkstart.west) -- (bthetikzmkfinish.west); endtikzpicture
% tikzmark doesn't exist on page
begintikzpicture draw [line width=4] (0,0) -- (.1,0); endtikzpicture
begindocument
Text linestart text text
Text text text
%newpage
Text text linefinish text
enddocument
Any ideas of how else I might accomplish something like this would be very welcome!
Update: Based on @marmot's suggestion to look at this answer, I've now come up with the following. However, I'm stuck with how to make the lines "point across" the page breaks ...
documentclassarticle
usepackagerefcount
usepackagetikz
usetikzlibrarycalc
newcountertmp
newcommandtikzmark[1]%
tikz[overlay,remember picture] node (#1) ;
newcommandlinestart%
stepcountertmp%
tikzmarkalabelathetmp%
ifnumgetpagerefnumberathetmp=getpagerefnumberbthetmp else
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
fi%
newcommandlinefinish%
tikzmarkblabelbthetmp
ifnumgetpagerefnumberathetmp=getpagerefnumberbthetmp
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
else
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
fi
newcommandSqu[1]linestart#1linefinish
begindocument
Text linestart text text
Text text text
Text text linefinish text
Text linestart text text
Text text text
newpage
Text text linefinish text
enddocument
tikz-pgf macros tikzmark
Apologies for flooding the site with tikzmark problems ... :)
I know that with iftikzmark I can test if a given tikzmark exists in general. Is there a way to test if a particular tikzmark exists on the same page?
Use case: I'm trying to design macros that I can insert anywhere in a text that would draw a line between them –- a linestart and a linefinish command. However, when the linefinish command happens to fall on a subsequent page, the line gets drawn to where the linestart command was on the previous page. I would rather have it instead "do something else", here, just for purpose of illustration, draw me a black square – or, ideally "point across" the page in the direction to where the other mark is sitting.
In the code below, I've tried to construct what I'm envisioning using iftikzmark but that does not work.
documentclassarticle
usepackagetikz
usetikzlibrarytikzmark
newcountertikzmkstartsetcountertikzmkstart0 %
newcountertikzmkfinishsetcountertikzmkfinish0 %
newcommandlinestart%
stepcountertikzmkfinishiftikzmarkbthetikzmkfinish% tikzmark exists on same page
stepcountertikzmkstarttikzmarknodeathetikzmkstartvphantomxaddtocountertikzmkfinish-1
% tikzmark doesn't exist on page
begintikzpicture draw [line width=4] (0,0) -- (.1,0); endtikzpictureaddtocountertikzmkfinish-1% black square if linefinish on next page
newcommandlinefinish%
iftikzmarkathetikzmkstart% tikzmark exists on same page
stepcountertikzmkfinishtikzmarknodebthetikzmkfinishvphantomxbegintikzpicture[remember picture] draw[overlay] (athetikzmkstart.west) -- (bthetikzmkfinish.west); endtikzpicture
% tikzmark doesn't exist on page
begintikzpicture draw [line width=4] (0,0) -- (.1,0); endtikzpicture
begindocument
Text linestart text text
Text text text
%newpage
Text text linefinish text
enddocument
Any ideas of how else I might accomplish something like this would be very welcome!
Update: Based on @marmot's suggestion to look at this answer, I've now come up with the following. However, I'm stuck with how to make the lines "point across" the page breaks ...
documentclassarticle
usepackagerefcount
usepackagetikz
usetikzlibrarycalc
newcountertmp
newcommandtikzmark[1]%
tikz[overlay,remember picture] node (#1) ;
newcommandlinestart%
stepcountertmp%
tikzmarkalabelathetmp%
ifnumgetpagerefnumberathetmp=getpagerefnumberbthetmp else
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
fi%
newcommandlinefinish%
tikzmarkblabelbthetmp
ifnumgetpagerefnumberathetmp=getpagerefnumberbthetmp
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
else
begintikzpicture[overlay, remember picture]
draw [thick]
(a.west) -- (b.west);
endtikzpicture%
fi
newcommandSqu[1]linestart#1linefinish
begindocument
Text linestart text text
Text text text
Text text linefinish text
Text linestart text text
Text text text
newpage
Text text linefinish text
enddocument
tikz-pgf macros tikzmark
tikz-pgf macros tikzmark
edited Apr 6 at 18:01
jan
asked Apr 6 at 16:43
janjan
1,0971519
1,0971519
The way you write the questions may indicate that you are about to construct a tikzmar version of something like this answer. The basic trick is that you build in the page number.
– marmot
Apr 6 at 16:51
@marmot Oh, you mean incorporating the pagenumber into the label for the node. Ha, that's clever.
– jan
Apr 6 at 16:53
Yes, basically. If you also want the line to also run over page breaks, you may needrefcount, like in Gonzalo's answer.
– marmot
Apr 6 at 16:56
1
tikzmarkalready saves the page number on which it is defined (see tex.stackexchange.com/q/79121/86 for a use of this, and look atnext pagein the documentation). There isn't a current direct interface to that information; it is stored assave@pg@<picture id of the tikzmark>so you could do a test on that. I'm not going to attempt to get the expansions right in a comment, but something likeifnumcsname save@pg@pgfpictureidendcsname=csname save@pg@csname save@pt@tmk@labelendcsnameendcsname
– Loop Space
Apr 6 at 17:10
@LoopSpace Hmm, that looks fairly complex. Would you be able to explain where I incorporate that?
– jan
Apr 6 at 17:14
|
show 5 more comments
The way you write the questions may indicate that you are about to construct a tikzmar version of something like this answer. The basic trick is that you build in the page number.
– marmot
Apr 6 at 16:51
@marmot Oh, you mean incorporating the pagenumber into the label for the node. Ha, that's clever.
– jan
Apr 6 at 16:53
Yes, basically. If you also want the line to also run over page breaks, you may needrefcount, like in Gonzalo's answer.
– marmot
Apr 6 at 16:56
1
tikzmarkalready saves the page number on which it is defined (see tex.stackexchange.com/q/79121/86 for a use of this, and look atnext pagein the documentation). There isn't a current direct interface to that information; it is stored assave@pg@<picture id of the tikzmark>so you could do a test on that. I'm not going to attempt to get the expansions right in a comment, but something likeifnumcsname save@pg@pgfpictureidendcsname=csname save@pg@csname save@pt@tmk@labelendcsnameendcsname
– Loop Space
Apr 6 at 17:10
@LoopSpace Hmm, that looks fairly complex. Would you be able to explain where I incorporate that?
– jan
Apr 6 at 17:14
The way you write the questions may indicate that you are about to construct a tikzmar version of something like this answer. The basic trick is that you build in the page number.
– marmot
Apr 6 at 16:51
The way you write the questions may indicate that you are about to construct a tikzmar version of something like this answer. The basic trick is that you build in the page number.
– marmot
Apr 6 at 16:51
@marmot Oh, you mean incorporating the pagenumber into the label for the node. Ha, that's clever.
– jan
Apr 6 at 16:53
@marmot Oh, you mean incorporating the pagenumber into the label for the node. Ha, that's clever.
– jan
Apr 6 at 16:53
Yes, basically. If you also want the line to also run over page breaks, you may need
refcount, like in Gonzalo's answer.– marmot
Apr 6 at 16:56
Yes, basically. If you also want the line to also run over page breaks, you may need
refcount, like in Gonzalo's answer.– marmot
Apr 6 at 16:56
1
1
tikzmark already saves the page number on which it is defined (see tex.stackexchange.com/q/79121/86 for a use of this, and look at next page in the documentation). There isn't a current direct interface to that information; it is stored as save@pg@<picture id of the tikzmark> so you could do a test on that. I'm not going to attempt to get the expansions right in a comment, but something like ifnumcsname save@pg@pgfpictureidendcsname=csname save@pg@csname save@pt@tmk@labelendcsnameendcsname– Loop Space
Apr 6 at 17:10
tikzmark already saves the page number on which it is defined (see tex.stackexchange.com/q/79121/86 for a use of this, and look at next page in the documentation). There isn't a current direct interface to that information; it is stored as save@pg@<picture id of the tikzmark> so you could do a test on that. I'm not going to attempt to get the expansions right in a comment, but something like ifnumcsname save@pg@pgfpictureidendcsname=csname save@pg@csname save@pt@tmk@labelendcsnameendcsname– Loop Space
Apr 6 at 17:10
@LoopSpace Hmm, that looks fairly complex. Would you be able to explain where I incorporate that?
– jan
Apr 6 at 17:14
@LoopSpace Hmm, that looks fairly complex. Would you be able to explain where I incorporate that?
– jan
Apr 6 at 17:14
|
show 5 more comments
1 Answer
1
active
oldest
votes
I can see the point of having a iftikzmarkonpage conditional, so I've added it to the tikzmark package (download tikzmark.dtx and run tex tikzmark.dtx to get the latest version). This introduces a new conditional, iftikzmarkoncurrentpage<tikzmark name>. That copes with the issue about the lines being drawn on both pages when needed.
documentclassarticle
usepackage[a6paper]geometry
%urlhttps://tex.stackexchange.com/q/483547/86
usepackagetikz
usepackagetikzpagenodes
usetikzlibrarytikzmark
newcountertikzmarklinessetcountertikzmarklines0 %
tikzset
tikzmark prefix=prefix-,
tikzmark suffix=-suffix
newcommandlinestart%
stepcountertikzmarklines%
tikzmarkathetikzmarklines%
iftikzmarkoncurrentpagebthetikzmarklines%
else
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=4] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
fi
newcommandlinefinish%
tikzmarkbthetikzmarklines%
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=1] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
begindocument
Text linestart text text
Text text text
Text text linefinish text
newpage
Text text text
Text linestart text text
Text text text
newpage
Text text text
Text text linefinish text
enddocument

That looks like it does what I'm after :) thank you ... and if you incorporate a conditional into the package, even better :) Although ... didn't Gonzalo's answer solve that? Why would his solution be bad?
– jan
Apr 6 at 18:28
Please feel free to revert my edit. +1
– marmot
Apr 6 at 18:29
@marmot, I like the gifs ;)
– jan
Apr 6 at 18:30
1
@janconvert -density 300 -delay 144 -loop 0 -alpha remove multipage.pdf animated.gif, see tex.stackexchange.com/a/136919/121799.
– marmot
Apr 6 at 18:31
1
@jan You can use tikz-pagenodes, which has thecurrent page text areanode. And I think you are doing it right because in their present form the questions and answers are useful for many, which they are not if you do some highly specialized things. (Will be off now.)
– marmot
Apr 6 at 18:37
|
show 7 more comments
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "85"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f483547%2ftest-if-tikzmark-exists-on-same-page%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I can see the point of having a iftikzmarkonpage conditional, so I've added it to the tikzmark package (download tikzmark.dtx and run tex tikzmark.dtx to get the latest version). This introduces a new conditional, iftikzmarkoncurrentpage<tikzmark name>. That copes with the issue about the lines being drawn on both pages when needed.
documentclassarticle
usepackage[a6paper]geometry
%urlhttps://tex.stackexchange.com/q/483547/86
usepackagetikz
usepackagetikzpagenodes
usetikzlibrarytikzmark
newcountertikzmarklinessetcountertikzmarklines0 %
tikzset
tikzmark prefix=prefix-,
tikzmark suffix=-suffix
newcommandlinestart%
stepcountertikzmarklines%
tikzmarkathetikzmarklines%
iftikzmarkoncurrentpagebthetikzmarklines%
else
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=4] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
fi
newcommandlinefinish%
tikzmarkbthetikzmarklines%
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=1] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
begindocument
Text linestart text text
Text text text
Text text linefinish text
newpage
Text text text
Text linestart text text
Text text text
newpage
Text text text
Text text linefinish text
enddocument

That looks like it does what I'm after :) thank you ... and if you incorporate a conditional into the package, even better :) Although ... didn't Gonzalo's answer solve that? Why would his solution be bad?
– jan
Apr 6 at 18:28
Please feel free to revert my edit. +1
– marmot
Apr 6 at 18:29
@marmot, I like the gifs ;)
– jan
Apr 6 at 18:30
1
@janconvert -density 300 -delay 144 -loop 0 -alpha remove multipage.pdf animated.gif, see tex.stackexchange.com/a/136919/121799.
– marmot
Apr 6 at 18:31
1
@jan You can use tikz-pagenodes, which has thecurrent page text areanode. And I think you are doing it right because in their present form the questions and answers are useful for many, which they are not if you do some highly specialized things. (Will be off now.)
– marmot
Apr 6 at 18:37
|
show 7 more comments
I can see the point of having a iftikzmarkonpage conditional, so I've added it to the tikzmark package (download tikzmark.dtx and run tex tikzmark.dtx to get the latest version). This introduces a new conditional, iftikzmarkoncurrentpage<tikzmark name>. That copes with the issue about the lines being drawn on both pages when needed.
documentclassarticle
usepackage[a6paper]geometry
%urlhttps://tex.stackexchange.com/q/483547/86
usepackagetikz
usepackagetikzpagenodes
usetikzlibrarytikzmark
newcountertikzmarklinessetcountertikzmarklines0 %
tikzset
tikzmark prefix=prefix-,
tikzmark suffix=-suffix
newcommandlinestart%
stepcountertikzmarklines%
tikzmarkathetikzmarklines%
iftikzmarkoncurrentpagebthetikzmarklines%
else
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=4] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
fi
newcommandlinefinish%
tikzmarkbthetikzmarklines%
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=1] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
begindocument
Text linestart text text
Text text text
Text text linefinish text
newpage
Text text text
Text linestart text text
Text text text
newpage
Text text text
Text text linefinish text
enddocument

That looks like it does what I'm after :) thank you ... and if you incorporate a conditional into the package, even better :) Although ... didn't Gonzalo's answer solve that? Why would his solution be bad?
– jan
Apr 6 at 18:28
Please feel free to revert my edit. +1
– marmot
Apr 6 at 18:29
@marmot, I like the gifs ;)
– jan
Apr 6 at 18:30
1
@janconvert -density 300 -delay 144 -loop 0 -alpha remove multipage.pdf animated.gif, see tex.stackexchange.com/a/136919/121799.
– marmot
Apr 6 at 18:31
1
@jan You can use tikz-pagenodes, which has thecurrent page text areanode. And I think you are doing it right because in their present form the questions and answers are useful for many, which they are not if you do some highly specialized things. (Will be off now.)
– marmot
Apr 6 at 18:37
|
show 7 more comments
I can see the point of having a iftikzmarkonpage conditional, so I've added it to the tikzmark package (download tikzmark.dtx and run tex tikzmark.dtx to get the latest version). This introduces a new conditional, iftikzmarkoncurrentpage<tikzmark name>. That copes with the issue about the lines being drawn on both pages when needed.
documentclassarticle
usepackage[a6paper]geometry
%urlhttps://tex.stackexchange.com/q/483547/86
usepackagetikz
usepackagetikzpagenodes
usetikzlibrarytikzmark
newcountertikzmarklinessetcountertikzmarklines0 %
tikzset
tikzmark prefix=prefix-,
tikzmark suffix=-suffix
newcommandlinestart%
stepcountertikzmarklines%
tikzmarkathetikzmarklines%
iftikzmarkoncurrentpagebthetikzmarklines%
else
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=4] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
fi
newcommandlinefinish%
tikzmarkbthetikzmarklines%
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=1] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
begindocument
Text linestart text text
Text text text
Text text linefinish text
newpage
Text text text
Text linestart text text
Text text text
newpage
Text text text
Text text linefinish text
enddocument

I can see the point of having a iftikzmarkonpage conditional, so I've added it to the tikzmark package (download tikzmark.dtx and run tex tikzmark.dtx to get the latest version). This introduces a new conditional, iftikzmarkoncurrentpage<tikzmark name>. That copes with the issue about the lines being drawn on both pages when needed.
documentclassarticle
usepackage[a6paper]geometry
%urlhttps://tex.stackexchange.com/q/483547/86
usepackagetikz
usepackagetikzpagenodes
usetikzlibrarytikzmark
newcountertikzmarklinessetcountertikzmarklines0 %
tikzset
tikzmark prefix=prefix-,
tikzmark suffix=-suffix
newcommandlinestart%
stepcountertikzmarklines%
tikzmarkathetikzmarklines%
iftikzmarkoncurrentpagebthetikzmarklines%
else
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=4] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
fi
newcommandlinefinish%
tikzmarkbthetikzmarklines%
begintikzpicture[remember picture,overlay,next page=below]%
clip (current page text area.south west) rectangle (current page text area.north east);
draw[line width=1] (pic cs:athetikzmarklines) -- (pic cs:bthetikzmarklines);
endtikzpicture%
begindocument
Text linestart text text
Text text text
Text text linefinish text
newpage
Text text text
Text linestart text text
Text text text
newpage
Text text text
Text text linefinish text
enddocument

edited Apr 6 at 20:37
answered Apr 6 at 18:23
Loop SpaceLoop Space
113k30310610
113k30310610
That looks like it does what I'm after :) thank you ... and if you incorporate a conditional into the package, even better :) Although ... didn't Gonzalo's answer solve that? Why would his solution be bad?
– jan
Apr 6 at 18:28
Please feel free to revert my edit. +1
– marmot
Apr 6 at 18:29
@marmot, I like the gifs ;)
– jan
Apr 6 at 18:30
1
@janconvert -density 300 -delay 144 -loop 0 -alpha remove multipage.pdf animated.gif, see tex.stackexchange.com/a/136919/121799.
– marmot
Apr 6 at 18:31
1
@jan You can use tikz-pagenodes, which has thecurrent page text areanode. And I think you are doing it right because in their present form the questions and answers are useful for many, which they are not if you do some highly specialized things. (Will be off now.)
– marmot
Apr 6 at 18:37
|
show 7 more comments
That looks like it does what I'm after :) thank you ... and if you incorporate a conditional into the package, even better :) Although ... didn't Gonzalo's answer solve that? Why would his solution be bad?
– jan
Apr 6 at 18:28
Please feel free to revert my edit. +1
– marmot
Apr 6 at 18:29
@marmot, I like the gifs ;)
– jan
Apr 6 at 18:30
1
@janconvert -density 300 -delay 144 -loop 0 -alpha remove multipage.pdf animated.gif, see tex.stackexchange.com/a/136919/121799.
– marmot
Apr 6 at 18:31
1
@jan You can use tikz-pagenodes, which has thecurrent page text areanode. And I think you are doing it right because in their present form the questions and answers are useful for many, which they are not if you do some highly specialized things. (Will be off now.)
– marmot
Apr 6 at 18:37
That looks like it does what I'm after :) thank you ... and if you incorporate a conditional into the package, even better :) Although ... didn't Gonzalo's answer solve that? Why would his solution be bad?
– jan
Apr 6 at 18:28
That looks like it does what I'm after :) thank you ... and if you incorporate a conditional into the package, even better :) Although ... didn't Gonzalo's answer solve that? Why would his solution be bad?
– jan
Apr 6 at 18:28
Please feel free to revert my edit. +1
– marmot
Apr 6 at 18:29
Please feel free to revert my edit. +1
– marmot
Apr 6 at 18:29
@marmot, I like the gifs ;)
– jan
Apr 6 at 18:30
@marmot, I like the gifs ;)
– jan
Apr 6 at 18:30
1
1
@jan
convert -density 300 -delay 144 -loop 0 -alpha remove multipage.pdf animated.gif, see tex.stackexchange.com/a/136919/121799.– marmot
Apr 6 at 18:31
@jan
convert -density 300 -delay 144 -loop 0 -alpha remove multipage.pdf animated.gif, see tex.stackexchange.com/a/136919/121799.– marmot
Apr 6 at 18:31
1
1
@jan You can use tikz-pagenodes, which has the
current page text area node. And I think you are doing it right because in their present form the questions and answers are useful for many, which they are not if you do some highly specialized things. (Will be off now.)– marmot
Apr 6 at 18:37
@jan You can use tikz-pagenodes, which has the
current page text area node. And I think you are doing it right because in their present form the questions and answers are useful for many, which they are not if you do some highly specialized things. (Will be off now.)– marmot
Apr 6 at 18:37
|
show 7 more comments
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f483547%2ftest-if-tikzmark-exists-on-same-page%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
The way you write the questions may indicate that you are about to construct a tikzmar version of something like this answer. The basic trick is that you build in the page number.
– marmot
Apr 6 at 16:51
@marmot Oh, you mean incorporating the pagenumber into the label for the node. Ha, that's clever.
– jan
Apr 6 at 16:53
Yes, basically. If you also want the line to also run over page breaks, you may need
refcount, like in Gonzalo's answer.– marmot
Apr 6 at 16:56
1
tikzmarkalready saves the page number on which it is defined (see tex.stackexchange.com/q/79121/86 for a use of this, and look atnext pagein the documentation). There isn't a current direct interface to that information; it is stored assave@pg@<picture id of the tikzmark>so you could do a test on that. I'm not going to attempt to get the expansions right in a comment, but something likeifnumcsname save@pg@pgfpictureidendcsname=csname save@pg@csname save@pt@tmk@labelendcsnameendcsname– Loop Space
Apr 6 at 17:10
@LoopSpace Hmm, that looks fairly complex. Would you be able to explain where I incorporate that?
– jan
Apr 6 at 17:14