tikzmarknode lines with hooks
I'm trying to get a line produced by tikzmarknode
s to start and end with little hooks, i.e., horizontal thinner lines protruding from the ends, more or less to resemble a bracket. I couldn't figure out how to manipulate the node code.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}this is some text.
This is some text and tikzmarknode{b}this is some text.
begin{tikzpicture}[remember picture] draw[overlay,semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,very thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,very thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
The code of the two last lines produce more or less what I am envisioning:
Any help here from the tikz masters?
tikz-pgf tikz-node tikzmark
add a comment |
I'm trying to get a line produced by tikzmarknode
s to start and end with little hooks, i.e., horizontal thinner lines protruding from the ends, more or less to resemble a bracket. I couldn't figure out how to manipulate the node code.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}this is some text.
This is some text and tikzmarknode{b}this is some text.
begin{tikzpicture}[remember picture] draw[overlay,semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,very thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,very thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
The code of the two last lines produce more or less what I am envisioning:
Any help here from the tikz masters?
tikz-pgf tikz-node tikzmark
add a comment |
I'm trying to get a line produced by tikzmarknode
s to start and end with little hooks, i.e., horizontal thinner lines protruding from the ends, more or less to resemble a bracket. I couldn't figure out how to manipulate the node code.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}this is some text.
This is some text and tikzmarknode{b}this is some text.
begin{tikzpicture}[remember picture] draw[overlay,semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,very thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,very thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
The code of the two last lines produce more or less what I am envisioning:
Any help here from the tikz masters?
tikz-pgf tikz-node tikzmark
I'm trying to get a line produced by tikzmarknode
s to start and end with little hooks, i.e., horizontal thinner lines protruding from the ends, more or less to resemble a bracket. I couldn't figure out how to manipulate the node code.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}this is some text.
This is some text and tikzmarknode{b}this is some text.
begin{tikzpicture}[remember picture] draw[overlay,semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,very thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,very thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
The code of the two last lines produce more or less what I am envisioning:
Any help here from the tikz masters?
tikz-pgf tikz-node tikzmark
tikz-pgf tikz-node tikzmark
edited 11 hours ago
jan
asked 12 hours ago
janjan
9971519
9971519
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
One possible way.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture] draw[very thin]
([xshift=0.2em]a.west) -- ([xshift=-0.3pt]a.west)
([xshift=0.2em]b.west) -- ([xshift=-0.3pt]b.west);
draw[semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
ADDENDUM: For more general settings, you may want to work with styles and fill
.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
tikzset{brace me/.style n args={2}{insert path={([xshift=0.2em,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=-0.1pt]#1.west) --
([xshift=0.2em,yshift=-0.1pt]#1.west) --
cycle}}}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a}{b}] ;
end{tikzpicture}
This is some text and tikzmarknode{a'}{~this} is some text.
This is some text ~and tikzmarknode{b'}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a'}{b'}] ;
end{tikzpicture}
end{document}
Almost ;) Is there a way to have the hooksvery thin
?
– jan
11 hours ago
@jan only the hooks or the full bracket?
– marmot
11 hours ago
Only the hooks, like in the code below the vertical line wassemithick
and the horizontal linesvery thin
– jan
11 hours ago
@jan I added something. (If you want to make sure that the line is always vertical regardless of whether or not the nodes are precisely on top of each other, this also possible but requires more work and more input in the form of a prescription of what is to be done in that case.)
– marmot
11 hours ago
The hooks should always be horizontal, even if the line ends up not being. So that's ok. But one more thing: Now given the different thicknesses, they thin lines don't connect nicely at the ends (I had the same problem with the bad solution below.) Is there a way to get them to connect fully to the vertical line, i.e., the thing being treated as one drawing? I guess that might be a more general question: Can I change the thickness in a draw command on the go?
– jan
11 hours ago
|
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%2f483398%2ftikzmarknode-lines-with-hooks%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
One possible way.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture] draw[very thin]
([xshift=0.2em]a.west) -- ([xshift=-0.3pt]a.west)
([xshift=0.2em]b.west) -- ([xshift=-0.3pt]b.west);
draw[semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
ADDENDUM: For more general settings, you may want to work with styles and fill
.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
tikzset{brace me/.style n args={2}{insert path={([xshift=0.2em,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=-0.1pt]#1.west) --
([xshift=0.2em,yshift=-0.1pt]#1.west) --
cycle}}}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a}{b}] ;
end{tikzpicture}
This is some text and tikzmarknode{a'}{~this} is some text.
This is some text ~and tikzmarknode{b'}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a'}{b'}] ;
end{tikzpicture}
end{document}
Almost ;) Is there a way to have the hooksvery thin
?
– jan
11 hours ago
@jan only the hooks or the full bracket?
– marmot
11 hours ago
Only the hooks, like in the code below the vertical line wassemithick
and the horizontal linesvery thin
– jan
11 hours ago
@jan I added something. (If you want to make sure that the line is always vertical regardless of whether or not the nodes are precisely on top of each other, this also possible but requires more work and more input in the form of a prescription of what is to be done in that case.)
– marmot
11 hours ago
The hooks should always be horizontal, even if the line ends up not being. So that's ok. But one more thing: Now given the different thicknesses, they thin lines don't connect nicely at the ends (I had the same problem with the bad solution below.) Is there a way to get them to connect fully to the vertical line, i.e., the thing being treated as one drawing? I guess that might be a more general question: Can I change the thickness in a draw command on the go?
– jan
11 hours ago
|
show 7 more comments
One possible way.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture] draw[very thin]
([xshift=0.2em]a.west) -- ([xshift=-0.3pt]a.west)
([xshift=0.2em]b.west) -- ([xshift=-0.3pt]b.west);
draw[semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
ADDENDUM: For more general settings, you may want to work with styles and fill
.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
tikzset{brace me/.style n args={2}{insert path={([xshift=0.2em,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=-0.1pt]#1.west) --
([xshift=0.2em,yshift=-0.1pt]#1.west) --
cycle}}}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a}{b}] ;
end{tikzpicture}
This is some text and tikzmarknode{a'}{~this} is some text.
This is some text ~and tikzmarknode{b'}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a'}{b'}] ;
end{tikzpicture}
end{document}
Almost ;) Is there a way to have the hooksvery thin
?
– jan
11 hours ago
@jan only the hooks or the full bracket?
– marmot
11 hours ago
Only the hooks, like in the code below the vertical line wassemithick
and the horizontal linesvery thin
– jan
11 hours ago
@jan I added something. (If you want to make sure that the line is always vertical regardless of whether or not the nodes are precisely on top of each other, this also possible but requires more work and more input in the form of a prescription of what is to be done in that case.)
– marmot
11 hours ago
The hooks should always be horizontal, even if the line ends up not being. So that's ok. But one more thing: Now given the different thicknesses, they thin lines don't connect nicely at the ends (I had the same problem with the bad solution below.) Is there a way to get them to connect fully to the vertical line, i.e., the thing being treated as one drawing? I guess that might be a more general question: Can I change the thickness in a draw command on the go?
– jan
11 hours ago
|
show 7 more comments
One possible way.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture] draw[very thin]
([xshift=0.2em]a.west) -- ([xshift=-0.3pt]a.west)
([xshift=0.2em]b.west) -- ([xshift=-0.3pt]b.west);
draw[semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
ADDENDUM: For more general settings, you may want to work with styles and fill
.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
tikzset{brace me/.style n args={2}{insert path={([xshift=0.2em,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=-0.1pt]#1.west) --
([xshift=0.2em,yshift=-0.1pt]#1.west) --
cycle}}}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a}{b}] ;
end{tikzpicture}
This is some text and tikzmarknode{a'}{~this} is some text.
This is some text ~and tikzmarknode{b'}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a'}{b'}] ;
end{tikzpicture}
end{document}
One possible way.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture] draw[very thin]
([xshift=0.2em]a.west) -- ([xshift=-0.3pt]a.west)
([xshift=0.2em]b.west) -- ([xshift=-0.3pt]b.west);
draw[semithick] (a.west) -- (b.west); end{tikzpicture}
This is some text and begin{tikzpicture}draw[overlay,thin] (0.05,0.1) -- (0,0.1); draw[overlay,semithick] (0,0.1) -- (0,-0.35); draw[overlay,thin] (0,-0.35) -- (0.05,-0.35); end{tikzpicture}~this is some text.
This is some text and ~this is some text.
end{document}
ADDENDUM: For more general settings, you may want to work with styles and fill
.
documentclass{article}
usepackage{tikz}
usetikzlibrary{tikzmark}
tikzset{brace me/.style n args={2}{insert path={([xshift=0.2em,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=0.1pt]#1.west) --
([xshift=-0.3pt,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=-0.1pt]#2.west) --
([xshift=0.2em,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=0.1pt]#2.west) --
([xshift=0.3pt,yshift=-0.1pt]#1.west) --
([xshift=0.2em,yshift=-0.1pt]#1.west) --
cycle}}}
begin{document}
This is some text and tikzmarknode{a}{~this} is some text.
This is some text and tikzmarknode{b}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a}{b}] ;
end{tikzpicture}
This is some text and tikzmarknode{a'}{~this} is some text.
This is some text ~and tikzmarknode{b'}{~this} is some text.
begin{tikzpicture}[overlay,remember picture]
fill[brace me={a'}{b'}] ;
end{tikzpicture}
end{document}
edited 11 hours ago
answered 11 hours ago
marmotmarmot
115k5145276
115k5145276
Almost ;) Is there a way to have the hooksvery thin
?
– jan
11 hours ago
@jan only the hooks or the full bracket?
– marmot
11 hours ago
Only the hooks, like in the code below the vertical line wassemithick
and the horizontal linesvery thin
– jan
11 hours ago
@jan I added something. (If you want to make sure that the line is always vertical regardless of whether or not the nodes are precisely on top of each other, this also possible but requires more work and more input in the form of a prescription of what is to be done in that case.)
– marmot
11 hours ago
The hooks should always be horizontal, even if the line ends up not being. So that's ok. But one more thing: Now given the different thicknesses, they thin lines don't connect nicely at the ends (I had the same problem with the bad solution below.) Is there a way to get them to connect fully to the vertical line, i.e., the thing being treated as one drawing? I guess that might be a more general question: Can I change the thickness in a draw command on the go?
– jan
11 hours ago
|
show 7 more comments
Almost ;) Is there a way to have the hooksvery thin
?
– jan
11 hours ago
@jan only the hooks or the full bracket?
– marmot
11 hours ago
Only the hooks, like in the code below the vertical line wassemithick
and the horizontal linesvery thin
– jan
11 hours ago
@jan I added something. (If you want to make sure that the line is always vertical regardless of whether or not the nodes are precisely on top of each other, this also possible but requires more work and more input in the form of a prescription of what is to be done in that case.)
– marmot
11 hours ago
The hooks should always be horizontal, even if the line ends up not being. So that's ok. But one more thing: Now given the different thicknesses, they thin lines don't connect nicely at the ends (I had the same problem with the bad solution below.) Is there a way to get them to connect fully to the vertical line, i.e., the thing being treated as one drawing? I guess that might be a more general question: Can I change the thickness in a draw command on the go?
– jan
11 hours ago
Almost ;) Is there a way to have the hooks
very thin
?– jan
11 hours ago
Almost ;) Is there a way to have the hooks
very thin
?– jan
11 hours ago
@jan only the hooks or the full bracket?
– marmot
11 hours ago
@jan only the hooks or the full bracket?
– marmot
11 hours ago
Only the hooks, like in the code below the vertical line was
semithick
and the horizontal lines very thin
– jan
11 hours ago
Only the hooks, like in the code below the vertical line was
semithick
and the horizontal lines very thin
– jan
11 hours ago
@jan I added something. (If you want to make sure that the line is always vertical regardless of whether or not the nodes are precisely on top of each other, this also possible but requires more work and more input in the form of a prescription of what is to be done in that case.)
– marmot
11 hours ago
@jan I added something. (If you want to make sure that the line is always vertical regardless of whether or not the nodes are precisely on top of each other, this also possible but requires more work and more input in the form of a prescription of what is to be done in that case.)
– marmot
11 hours ago
The hooks should always be horizontal, even if the line ends up not being. So that's ok. But one more thing: Now given the different thicknesses, they thin lines don't connect nicely at the ends (I had the same problem with the bad solution below.) Is there a way to get them to connect fully to the vertical line, i.e., the thing being treated as one drawing? I guess that might be a more general question: Can I change the thickness in a draw command on the go?
– jan
11 hours ago
The hooks should always be horizontal, even if the line ends up not being. So that's ok. But one more thing: Now given the different thicknesses, they thin lines don't connect nicely at the ends (I had the same problem with the bad solution below.) Is there a way to get them to connect fully to the vertical line, i.e., the thing being treated as one drawing? I guess that might be a more general question: Can I change the thickness in a draw command on the go?
– jan
11 hours ago
|
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%2f483398%2ftikzmarknode-lines-with-hooks%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