Imitate Email-reply layout: Vertical line in left margin, except for responses
Edit: I am not happy with the 3 answers my first, smaller bounty got me. So I rewrote the question to set clear rules and a proper bounty.
The solution should create two environments, originalemail
and response
with the following effects:
- Text in the
originalemail
is typeset in a way that slightly (4pt) indents all text and adds a vertical line on the left. - The
response
environment can only be used inside the environment and results in the vertical line being broken and the text being aligned on the left without theoriginalemail
s indentation. What is more, theresponse
has to be aligned to the same margin on the left, irrespective of where in theoriginalemail
it is placed (e.g., be within a (nested)itemize
orenumerate
).
Summary
- leave the layout of the original email in-tact (it should be possible to use sections, lists, paragraphs, floats, etc. as if it as was a plain TeX document and there were no responses and the numbering should be the same with and without respones)
- using these environments should require no editing of the code outside the
response
environment. In particular any suspension or resume ofenumerate
oritemize
environments, if required by the solution should be automatic. - The only way in which the original layout should change is that it show vertical line (
2pt
) on the left margin and ideally a slight indentation (4pt
). - responses and the fragments of the original email have to break pages as normal. (if you use
parbox
for the responses they wont) - allow to insert
reply
s anywhere in the the original text - bonus if the solution is nesteable (i.e. the outer
originalemail
contains an olderoriginalemail
and responses)
Rules: for the bounty, you're free to build on the existing answers, i.e. @marmot's/Gonzalo Medina's TikZ approach to draw the line in the left margin, @Vinccool96's tcolorbox
or my own rudimentary approach to automatically suspending and resuming lists.
Screenshot from Gmail that roughly summarizes what I need:
marginpar layout
This question has an open bounty worth +500
reputation from sheß ending in 5 days.
This question has not received enough attention.
The bounty winner should address all the points raised in the current edit (after the first bounty). Ask if something is unclear
|
show 9 more comments
Edit: I am not happy with the 3 answers my first, smaller bounty got me. So I rewrote the question to set clear rules and a proper bounty.
The solution should create two environments, originalemail
and response
with the following effects:
- Text in the
originalemail
is typeset in a way that slightly (4pt) indents all text and adds a vertical line on the left. - The
response
environment can only be used inside the environment and results in the vertical line being broken and the text being aligned on the left without theoriginalemail
s indentation. What is more, theresponse
has to be aligned to the same margin on the left, irrespective of where in theoriginalemail
it is placed (e.g., be within a (nested)itemize
orenumerate
).
Summary
- leave the layout of the original email in-tact (it should be possible to use sections, lists, paragraphs, floats, etc. as if it as was a plain TeX document and there were no responses and the numbering should be the same with and without respones)
- using these environments should require no editing of the code outside the
response
environment. In particular any suspension or resume ofenumerate
oritemize
environments, if required by the solution should be automatic. - The only way in which the original layout should change is that it show vertical line (
2pt
) on the left margin and ideally a slight indentation (4pt
). - responses and the fragments of the original email have to break pages as normal. (if you use
parbox
for the responses they wont) - allow to insert
reply
s anywhere in the the original text - bonus if the solution is nesteable (i.e. the outer
originalemail
contains an olderoriginalemail
and responses)
Rules: for the bounty, you're free to build on the existing answers, i.e. @marmot's/Gonzalo Medina's TikZ approach to draw the line in the left margin, @Vinccool96's tcolorbox
or my own rudimentary approach to automatically suspending and resuming lists.
Screenshot from Gmail that roughly summarizes what I need:
marginpar layout
This question has an open bounty worth +500
reputation from sheß ending in 5 days.
This question has not received enough attention.
The bounty winner should address all the points raised in the current edit (after the first bounty). Ask if something is unclear
1
Maybe related: tex.stackexchange.com/questions/68251/…
– Steven B. Segletes
Mar 20 at 16:26
2
Not a solution, but if you are looking into this I would try to usetcolorbox
instead ofmdframed
.tcolorbox
is actively maintained and has an awesome manual whilemdframed
development seems to have stalled a while ago.
– moewe
Mar 20 at 16:31
2
@sheß Could you clarify? One can indeed put enumerations inside theembed
. So are you looking to suspend the embed to provide a response and then continue the enumeration where it left off?
– Steven B. Segletes
Mar 20 at 16:37
1
What if you just draw a line on the left margin (using a suitably prepared background image perhaps), and use your definedresponse
environment to draw a box with a white border on the left to cover up the pre-drawn line?
– Willie Wong
Mar 21 at 13:31
1
Isn't this an instance of a XY problem, where your actual ultimate objective is to nicely add your comment on a document submitted to you? If so, you might want to have a look at thetodonotes
package. (I.e. this package doesn't do the "bar in the left margin" thing, but might be of greater help for what you ultimately want to do. See notably inline notes.) See alsochanges
package.
– ebosi
Mar 28 at 11:13
|
show 9 more comments
Edit: I am not happy with the 3 answers my first, smaller bounty got me. So I rewrote the question to set clear rules and a proper bounty.
The solution should create two environments, originalemail
and response
with the following effects:
- Text in the
originalemail
is typeset in a way that slightly (4pt) indents all text and adds a vertical line on the left. - The
response
environment can only be used inside the environment and results in the vertical line being broken and the text being aligned on the left without theoriginalemail
s indentation. What is more, theresponse
has to be aligned to the same margin on the left, irrespective of where in theoriginalemail
it is placed (e.g., be within a (nested)itemize
orenumerate
).
Summary
- leave the layout of the original email in-tact (it should be possible to use sections, lists, paragraphs, floats, etc. as if it as was a plain TeX document and there were no responses and the numbering should be the same with and without respones)
- using these environments should require no editing of the code outside the
response
environment. In particular any suspension or resume ofenumerate
oritemize
environments, if required by the solution should be automatic. - The only way in which the original layout should change is that it show vertical line (
2pt
) on the left margin and ideally a slight indentation (4pt
). - responses and the fragments of the original email have to break pages as normal. (if you use
parbox
for the responses they wont) - allow to insert
reply
s anywhere in the the original text - bonus if the solution is nesteable (i.e. the outer
originalemail
contains an olderoriginalemail
and responses)
Rules: for the bounty, you're free to build on the existing answers, i.e. @marmot's/Gonzalo Medina's TikZ approach to draw the line in the left margin, @Vinccool96's tcolorbox
or my own rudimentary approach to automatically suspending and resuming lists.
Screenshot from Gmail that roughly summarizes what I need:
marginpar layout
Edit: I am not happy with the 3 answers my first, smaller bounty got me. So I rewrote the question to set clear rules and a proper bounty.
The solution should create two environments, originalemail
and response
with the following effects:
- Text in the
originalemail
is typeset in a way that slightly (4pt) indents all text and adds a vertical line on the left. - The
response
environment can only be used inside the environment and results in the vertical line being broken and the text being aligned on the left without theoriginalemail
s indentation. What is more, theresponse
has to be aligned to the same margin on the left, irrespective of where in theoriginalemail
it is placed (e.g., be within a (nested)itemize
orenumerate
).
Summary
- leave the layout of the original email in-tact (it should be possible to use sections, lists, paragraphs, floats, etc. as if it as was a plain TeX document and there were no responses and the numbering should be the same with and without respones)
- using these environments should require no editing of the code outside the
response
environment. In particular any suspension or resume ofenumerate
oritemize
environments, if required by the solution should be automatic. - The only way in which the original layout should change is that it show vertical line (
2pt
) on the left margin and ideally a slight indentation (4pt
). - responses and the fragments of the original email have to break pages as normal. (if you use
parbox
for the responses they wont) - allow to insert
reply
s anywhere in the the original text - bonus if the solution is nesteable (i.e. the outer
originalemail
contains an olderoriginalemail
and responses)
Rules: for the bounty, you're free to build on the existing answers, i.e. @marmot's/Gonzalo Medina's TikZ approach to draw the line in the left margin, @Vinccool96's tcolorbox
or my own rudimentary approach to automatically suspending and resuming lists.
Screenshot from Gmail that roughly summarizes what I need:
marginpar layout
marginpar layout
edited 17 hours ago
sheß
asked Mar 20 at 16:24
sheßsheß
2,00711436
2,00711436
This question has an open bounty worth +500
reputation from sheß ending in 5 days.
This question has not received enough attention.
The bounty winner should address all the points raised in the current edit (after the first bounty). Ask if something is unclear
This question has an open bounty worth +500
reputation from sheß ending in 5 days.
This question has not received enough attention.
The bounty winner should address all the points raised in the current edit (after the first bounty). Ask if something is unclear
1
Maybe related: tex.stackexchange.com/questions/68251/…
– Steven B. Segletes
Mar 20 at 16:26
2
Not a solution, but if you are looking into this I would try to usetcolorbox
instead ofmdframed
.tcolorbox
is actively maintained and has an awesome manual whilemdframed
development seems to have stalled a while ago.
– moewe
Mar 20 at 16:31
2
@sheß Could you clarify? One can indeed put enumerations inside theembed
. So are you looking to suspend the embed to provide a response and then continue the enumeration where it left off?
– Steven B. Segletes
Mar 20 at 16:37
1
What if you just draw a line on the left margin (using a suitably prepared background image perhaps), and use your definedresponse
environment to draw a box with a white border on the left to cover up the pre-drawn line?
– Willie Wong
Mar 21 at 13:31
1
Isn't this an instance of a XY problem, where your actual ultimate objective is to nicely add your comment on a document submitted to you? If so, you might want to have a look at thetodonotes
package. (I.e. this package doesn't do the "bar in the left margin" thing, but might be of greater help for what you ultimately want to do. See notably inline notes.) See alsochanges
package.
– ebosi
Mar 28 at 11:13
|
show 9 more comments
1
Maybe related: tex.stackexchange.com/questions/68251/…
– Steven B. Segletes
Mar 20 at 16:26
2
Not a solution, but if you are looking into this I would try to usetcolorbox
instead ofmdframed
.tcolorbox
is actively maintained and has an awesome manual whilemdframed
development seems to have stalled a while ago.
– moewe
Mar 20 at 16:31
2
@sheß Could you clarify? One can indeed put enumerations inside theembed
. So are you looking to suspend the embed to provide a response and then continue the enumeration where it left off?
– Steven B. Segletes
Mar 20 at 16:37
1
What if you just draw a line on the left margin (using a suitably prepared background image perhaps), and use your definedresponse
environment to draw a box with a white border on the left to cover up the pre-drawn line?
– Willie Wong
Mar 21 at 13:31
1
Isn't this an instance of a XY problem, where your actual ultimate objective is to nicely add your comment on a document submitted to you? If so, you might want to have a look at thetodonotes
package. (I.e. this package doesn't do the "bar in the left margin" thing, but might be of greater help for what you ultimately want to do. See notably inline notes.) See alsochanges
package.
– ebosi
Mar 28 at 11:13
1
1
Maybe related: tex.stackexchange.com/questions/68251/…
– Steven B. Segletes
Mar 20 at 16:26
Maybe related: tex.stackexchange.com/questions/68251/…
– Steven B. Segletes
Mar 20 at 16:26
2
2
Not a solution, but if you are looking into this I would try to use
tcolorbox
instead of mdframed
. tcolorbox
is actively maintained and has an awesome manual while mdframed
development seems to have stalled a while ago.– moewe
Mar 20 at 16:31
Not a solution, but if you are looking into this I would try to use
tcolorbox
instead of mdframed
. tcolorbox
is actively maintained and has an awesome manual while mdframed
development seems to have stalled a while ago.– moewe
Mar 20 at 16:31
2
2
@sheß Could you clarify? One can indeed put enumerations inside the
embed
. So are you looking to suspend the embed to provide a response and then continue the enumeration where it left off?– Steven B. Segletes
Mar 20 at 16:37
@sheß Could you clarify? One can indeed put enumerations inside the
embed
. So are you looking to suspend the embed to provide a response and then continue the enumeration where it left off?– Steven B. Segletes
Mar 20 at 16:37
1
1
What if you just draw a line on the left margin (using a suitably prepared background image perhaps), and use your defined
response
environment to draw a box with a white border on the left to cover up the pre-drawn line?– Willie Wong
Mar 21 at 13:31
What if you just draw a line on the left margin (using a suitably prepared background image perhaps), and use your defined
response
environment to draw a box with a white border on the left to cover up the pre-drawn line?– Willie Wong
Mar 21 at 13:31
1
1
Isn't this an instance of a XY problem, where your actual ultimate objective is to nicely add your comment on a document submitted to you? If so, you might want to have a look at the
todonotes
package. (I.e. this package doesn't do the "bar in the left margin" thing, but might be of greater help for what you ultimately want to do. See notably inline notes.) See also changes
package.– ebosi
Mar 28 at 11:13
Isn't this an instance of a XY problem, where your actual ultimate objective is to nicely add your comment on a document submitted to you? If so, you might want to have a look at the
todonotes
package. (I.e. this package doesn't do the "bar in the left margin" thing, but might be of greater help for what you ultimately want to do. See notably inline notes.) See also changes
package.– ebosi
Mar 28 at 11:13
|
show 9 more comments
3 Answers
3
active
oldest
votes
documentclass{article}
usepackage[most]{tcolorbox}
tcbuselibrary{breakable}
tcbuselibrary{skins}
newtcolorbox{emailstart}[3]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
title={On #2, #3 wrotepar},
coltitle={black},
attach title to upper={},
borderline west={4pt}{0pt}{black},
overlay unbroken and first={draw[shorten >=1.4pt, shorten <=1.4pt] ([yshift=-1.5em]frame.north west) -- ([yshift=-1.5em]frame.north east);},
#1,
}
newtcolorbox{emailresume}[1]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{black},
#1,
}
newcounter{enumicounter} %counter that will save the enumeration counter
begin{document}
begin{emailstart}{2019}{Einstein}
begin{emailstart}{2018}{Sheß}
Text Text Text Text
Text Text Text Text Text Text Text
end{emailstart}
Here I am putting my answer text
end{emailstart}
Oh, now I see your point
begin{emailresume}
begin{emailresume}
section{A section}
Some content a list
begin{enumerate}
item One
setcounter{enumicounter}{value{enumi}} % save the enumeration counter
end{enumerate}
end{emailresume}
Here even more, there's no indentation, because you closed the enumaration and the email
end{emailresume}
This is an answer to your answer
begin{emailresume}
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Two
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
end{emailresume}
Answer
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Three
item Four
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
section{another section}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
subsection{a subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
subsection{another subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
Bye,
Sheß
end{emailresume}
Bye,
Einstein
end{emailresume}
Bye
end{document}
So what you want is to get it with the indentation, except when you specifiy there's an answer?
– Vinccool96
Mar 23 at 23:03
I modified my answer
– Vinccool96
Mar 25 at 16:20
That's because it's in anenumerate
environment. You'll need to add aend{enumerate}
beforeresponse
and abegin{enumerate}
after.
– Vinccool96
Mar 26 at 16:07
Again edited. Is it good now?
– Vinccool96
Mar 27 at 16:39
I proposed you something first where you only had to specify to resume the enumeration, but you rejected it.
– Vinccool96
Mar 28 at 16:48
|
show 4 more comments
All I did here is to slightly modify Gonzalo Medina's nice answer. One can of course tune it a bit more. (I also understand that there is nothing squiggly here, I was too lazy to rename the macros.)
documentclass{article}
usepackage{refcount}
usepackage{tikz}
usetikzlibrary{calc,tikzmark}
usepackage{lipsum}
newcounter{tmp}
% newcommandtikzmark[1]{%
% tikz[overlay,remember picture] node (#1) {};}
newcommandStartsquiggly{%
stepcounter{tmp}%
tikzmarknode{a}{strut}label{athetmp}%
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp} else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,0) $ ) -- ( $ (x3,y3) + (-0.55textwidth,-0.5textheight) $ );
end{tikzpicture}%
fi%
}
newcommandEndsquiggly{%
tikzmarknode{b}{strut}label{bthetmp}
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp}
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,1em) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y3) + (-.55textwidth,.5textheight) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
fi
}
newcommandSqu[1]{Startsquiggly#1Endsquiggly}
AtBeginDocument{Startsquiggly}
AtEndDocument{parEndsquiggly}
newcommand{response}[1]{parEndsquiggly#1parStartsquiggly}
begin{document}
Some text, with pictures, lists, sections
begin{enumerate}
item Some text, with pictures, lists, sections
response{answer1}
item Some text, with pictures, lists, sections
response{answer2}
end{enumerate}
Some text, with pictures, lists, sections
response{this is my answer}
Some text, with pictures, lists, sections
section{section}
subsection{subsection1}
Some text, with pictures, lists, sections
subsection{subsection2}
Some text, with pictures, lists, sections
subsection{subsection3}
Some text, with pictures, lists, sections
response{I also have an answer here}
More text
end{document}
1
@sheß Absolutely. Please note that there are also many posts linked to Gonzalo's nice answer, some of which may become relevant if you have something likeraggedbottom
and so on. (I really just very quickly wrote that before I went cycling, there are many things one may want to add/consider/improve.)
– marmot
Mar 23 at 23:14
@sheß This point I do not understand. There are two things: (1) Draw the interrupted line on the margin and (2) add indentation. I didn't know you want to have (2) (which is clearer after the edit). So you wish to indent sections and so on? (In this case the question is very different from what I originally thought it is.) Or only texts as in the email conversation?
– marmot
Mar 28 at 17:30
1
Whoever downvoted this answer may want to take into account that this was an attempt to answer the question before the edit(s).
– marmot
2 days ago
Sorry, I missed the grace period and the bounty was out awarded
– sheß
yesterday
add a comment |
A solution I came up with, but I'm still fairly unhappy with the amount of things that are hard-coded. E.g.
- it requires that I change all
begin{enumerate}[some arguments]
tobegin{enumerate}{some arguments}
- works only for up to a fixed number of nested
enumerate
s and - probably fails if the original document uses an
itemize
or something else. - it cannot be nested
So, eventhough I'm posting this as an aswer to my own post, I do not consider this complete and would be happy for anyone who adapts it to be more general
documentclass{article}
newcounter{breakdepth}
usepackage{enumitem}
usepackage{letltxmacro}
%redefine enumerates so that they are automatically resumable
LetLtxMacroooenumerateenumerate
LetLtxMacroendooenumerateendenumerate
makeatletter
renewenvironment{enumerate}[2][0]{%
ifx0#1%i.e. this is not a resume, but a new list, so start naming it.
ooenumerate[series=levelthe@enumdepth,#2]%
else
ooenumerate[#2]%
fi
}{
endooenumerate%
}
%define the command that breaks the report environment, closes all enumerates, but resumes them afterwards
newcommand{response}[1]{%
setcounter{breakdepth}{the@enumdepth}%
ifnumvalue{breakdepth}>3 end{enumerate} fi%
ifnumvalue{breakdepth}>2 end{enumerate} fi%
ifnumvalue{breakdepth}>1 end{enumerate} fi%
ifnumvalue{breakdepth}>0 end{enumerate} fi%
end{report}%
#1%
begin{report}%
ifnumvalue{breakdepth}>0 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>1 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>2 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>3 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
}
makeatother
%define the environment that has a slight indentation and a vertical line for the original text
usepackage{mdframed}
newenvironment{report}{begin{mdframed}[linewidth=1pt,topline=false,rightline=false,bottomline=false,linecolor=black,innerleftmargin =0cm, leftmargin=2pt,innerrightmargin=1pt]}{end{mdframed}}
begin{document}
begin{report}
section{first section}
begin{enumerate}{label=roman*.}
item ione
begin{enumerate}{}
item aone
%%%%%%%%%
response{test}
%%%%%%%%%
item atwo
end{enumerate}
item itwo
response{test}
end{enumerate}
section{a section}
Some text that is not inside a list
response{test}
more text
end{report}
end{document}
add a comment |
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%2f480526%2fimitate-email-reply-layout-vertical-line-in-left-margin-except-for-responses%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
documentclass{article}
usepackage[most]{tcolorbox}
tcbuselibrary{breakable}
tcbuselibrary{skins}
newtcolorbox{emailstart}[3]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
title={On #2, #3 wrotepar},
coltitle={black},
attach title to upper={},
borderline west={4pt}{0pt}{black},
overlay unbroken and first={draw[shorten >=1.4pt, shorten <=1.4pt] ([yshift=-1.5em]frame.north west) -- ([yshift=-1.5em]frame.north east);},
#1,
}
newtcolorbox{emailresume}[1]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{black},
#1,
}
newcounter{enumicounter} %counter that will save the enumeration counter
begin{document}
begin{emailstart}{2019}{Einstein}
begin{emailstart}{2018}{Sheß}
Text Text Text Text
Text Text Text Text Text Text Text
end{emailstart}
Here I am putting my answer text
end{emailstart}
Oh, now I see your point
begin{emailresume}
begin{emailresume}
section{A section}
Some content a list
begin{enumerate}
item One
setcounter{enumicounter}{value{enumi}} % save the enumeration counter
end{enumerate}
end{emailresume}
Here even more, there's no indentation, because you closed the enumaration and the email
end{emailresume}
This is an answer to your answer
begin{emailresume}
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Two
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
end{emailresume}
Answer
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Three
item Four
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
section{another section}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
subsection{a subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
subsection{another subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
Bye,
Sheß
end{emailresume}
Bye,
Einstein
end{emailresume}
Bye
end{document}
So what you want is to get it with the indentation, except when you specifiy there's an answer?
– Vinccool96
Mar 23 at 23:03
I modified my answer
– Vinccool96
Mar 25 at 16:20
That's because it's in anenumerate
environment. You'll need to add aend{enumerate}
beforeresponse
and abegin{enumerate}
after.
– Vinccool96
Mar 26 at 16:07
Again edited. Is it good now?
– Vinccool96
Mar 27 at 16:39
I proposed you something first where you only had to specify to resume the enumeration, but you rejected it.
– Vinccool96
Mar 28 at 16:48
|
show 4 more comments
documentclass{article}
usepackage[most]{tcolorbox}
tcbuselibrary{breakable}
tcbuselibrary{skins}
newtcolorbox{emailstart}[3]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
title={On #2, #3 wrotepar},
coltitle={black},
attach title to upper={},
borderline west={4pt}{0pt}{black},
overlay unbroken and first={draw[shorten >=1.4pt, shorten <=1.4pt] ([yshift=-1.5em]frame.north west) -- ([yshift=-1.5em]frame.north east);},
#1,
}
newtcolorbox{emailresume}[1]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{black},
#1,
}
newcounter{enumicounter} %counter that will save the enumeration counter
begin{document}
begin{emailstart}{2019}{Einstein}
begin{emailstart}{2018}{Sheß}
Text Text Text Text
Text Text Text Text Text Text Text
end{emailstart}
Here I am putting my answer text
end{emailstart}
Oh, now I see your point
begin{emailresume}
begin{emailresume}
section{A section}
Some content a list
begin{enumerate}
item One
setcounter{enumicounter}{value{enumi}} % save the enumeration counter
end{enumerate}
end{emailresume}
Here even more, there's no indentation, because you closed the enumaration and the email
end{emailresume}
This is an answer to your answer
begin{emailresume}
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Two
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
end{emailresume}
Answer
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Three
item Four
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
section{another section}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
subsection{a subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
subsection{another subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
Bye,
Sheß
end{emailresume}
Bye,
Einstein
end{emailresume}
Bye
end{document}
So what you want is to get it with the indentation, except when you specifiy there's an answer?
– Vinccool96
Mar 23 at 23:03
I modified my answer
– Vinccool96
Mar 25 at 16:20
That's because it's in anenumerate
environment. You'll need to add aend{enumerate}
beforeresponse
and abegin{enumerate}
after.
– Vinccool96
Mar 26 at 16:07
Again edited. Is it good now?
– Vinccool96
Mar 27 at 16:39
I proposed you something first where you only had to specify to resume the enumeration, but you rejected it.
– Vinccool96
Mar 28 at 16:48
|
show 4 more comments
documentclass{article}
usepackage[most]{tcolorbox}
tcbuselibrary{breakable}
tcbuselibrary{skins}
newtcolorbox{emailstart}[3]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
title={On #2, #3 wrotepar},
coltitle={black},
attach title to upper={},
borderline west={4pt}{0pt}{black},
overlay unbroken and first={draw[shorten >=1.4pt, shorten <=1.4pt] ([yshift=-1.5em]frame.north west) -- ([yshift=-1.5em]frame.north east);},
#1,
}
newtcolorbox{emailresume}[1]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{black},
#1,
}
newcounter{enumicounter} %counter that will save the enumeration counter
begin{document}
begin{emailstart}{2019}{Einstein}
begin{emailstart}{2018}{Sheß}
Text Text Text Text
Text Text Text Text Text Text Text
end{emailstart}
Here I am putting my answer text
end{emailstart}
Oh, now I see your point
begin{emailresume}
begin{emailresume}
section{A section}
Some content a list
begin{enumerate}
item One
setcounter{enumicounter}{value{enumi}} % save the enumeration counter
end{enumerate}
end{emailresume}
Here even more, there's no indentation, because you closed the enumaration and the email
end{emailresume}
This is an answer to your answer
begin{emailresume}
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Two
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
end{emailresume}
Answer
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Three
item Four
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
section{another section}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
subsection{a subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
subsection{another subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
Bye,
Sheß
end{emailresume}
Bye,
Einstein
end{emailresume}
Bye
end{document}
documentclass{article}
usepackage[most]{tcolorbox}
tcbuselibrary{breakable}
tcbuselibrary{skins}
newtcolorbox{emailstart}[3]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
title={On #2, #3 wrotepar},
coltitle={black},
attach title to upper={},
borderline west={4pt}{0pt}{black},
overlay unbroken and first={draw[shorten >=1.4pt, shorten <=1.4pt] ([yshift=-1.5em]frame.north west) -- ([yshift=-1.5em]frame.north east);},
#1,
}
newtcolorbox{emailresume}[1]{%
standard jigsaw,
opacityframe=0,
opacityback=0,
colback=transparent,
grow to left by=-1.5em,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{black},
#1,
}
newcounter{enumicounter} %counter that will save the enumeration counter
begin{document}
begin{emailstart}{2019}{Einstein}
begin{emailstart}{2018}{Sheß}
Text Text Text Text
Text Text Text Text Text Text Text
end{emailstart}
Here I am putting my answer text
end{emailstart}
Oh, now I see your point
begin{emailresume}
begin{emailresume}
section{A section}
Some content a list
begin{enumerate}
item One
setcounter{enumicounter}{value{enumi}} % save the enumeration counter
end{enumerate}
end{emailresume}
Here even more, there's no indentation, because you closed the enumaration and the email
end{emailresume}
This is an answer to your answer
begin{emailresume}
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Two
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
end{emailresume}
Answer
begin{emailresume}
begin{enumerate}
setcounter{enumi}{value{enumicounter}} % continue the enumeration
item Three
item Four
setcounter{enumicounter}{value{enumi}} %save the enumeration counter
end{enumerate}
section{another section}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
subsection{a subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
subsection{another subsection}
More Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
end{emailresume}
More
begin{emailresume}
Bye,
Sheß
end{emailresume}
Bye,
Einstein
end{emailresume}
Bye
end{document}
edited yesterday
sheß
2,00711436
2,00711436
answered Mar 23 at 17:59
Vinccool96Vinccool96
50211
50211
So what you want is to get it with the indentation, except when you specifiy there's an answer?
– Vinccool96
Mar 23 at 23:03
I modified my answer
– Vinccool96
Mar 25 at 16:20
That's because it's in anenumerate
environment. You'll need to add aend{enumerate}
beforeresponse
and abegin{enumerate}
after.
– Vinccool96
Mar 26 at 16:07
Again edited. Is it good now?
– Vinccool96
Mar 27 at 16:39
I proposed you something first where you only had to specify to resume the enumeration, but you rejected it.
– Vinccool96
Mar 28 at 16:48
|
show 4 more comments
So what you want is to get it with the indentation, except when you specifiy there's an answer?
– Vinccool96
Mar 23 at 23:03
I modified my answer
– Vinccool96
Mar 25 at 16:20
That's because it's in anenumerate
environment. You'll need to add aend{enumerate}
beforeresponse
and abegin{enumerate}
after.
– Vinccool96
Mar 26 at 16:07
Again edited. Is it good now?
– Vinccool96
Mar 27 at 16:39
I proposed you something first where you only had to specify to resume the enumeration, but you rejected it.
– Vinccool96
Mar 28 at 16:48
So what you want is to get it with the indentation, except when you specifiy there's an answer?
– Vinccool96
Mar 23 at 23:03
So what you want is to get it with the indentation, except when you specifiy there's an answer?
– Vinccool96
Mar 23 at 23:03
I modified my answer
– Vinccool96
Mar 25 at 16:20
I modified my answer
– Vinccool96
Mar 25 at 16:20
That's because it's in an
enumerate
environment. You'll need to add a end{enumerate}
before response
and a begin{enumerate}
after.– Vinccool96
Mar 26 at 16:07
That's because it's in an
enumerate
environment. You'll need to add a end{enumerate}
before response
and a begin{enumerate}
after.– Vinccool96
Mar 26 at 16:07
Again edited. Is it good now?
– Vinccool96
Mar 27 at 16:39
Again edited. Is it good now?
– Vinccool96
Mar 27 at 16:39
I proposed you something first where you only had to specify to resume the enumeration, but you rejected it.
– Vinccool96
Mar 28 at 16:48
I proposed you something first where you only had to specify to resume the enumeration, but you rejected it.
– Vinccool96
Mar 28 at 16:48
|
show 4 more comments
All I did here is to slightly modify Gonzalo Medina's nice answer. One can of course tune it a bit more. (I also understand that there is nothing squiggly here, I was too lazy to rename the macros.)
documentclass{article}
usepackage{refcount}
usepackage{tikz}
usetikzlibrary{calc,tikzmark}
usepackage{lipsum}
newcounter{tmp}
% newcommandtikzmark[1]{%
% tikz[overlay,remember picture] node (#1) {};}
newcommandStartsquiggly{%
stepcounter{tmp}%
tikzmarknode{a}{strut}label{athetmp}%
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp} else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,0) $ ) -- ( $ (x3,y3) + (-0.55textwidth,-0.5textheight) $ );
end{tikzpicture}%
fi%
}
newcommandEndsquiggly{%
tikzmarknode{b}{strut}label{bthetmp}
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp}
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,1em) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y3) + (-.55textwidth,.5textheight) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
fi
}
newcommandSqu[1]{Startsquiggly#1Endsquiggly}
AtBeginDocument{Startsquiggly}
AtEndDocument{parEndsquiggly}
newcommand{response}[1]{parEndsquiggly#1parStartsquiggly}
begin{document}
Some text, with pictures, lists, sections
begin{enumerate}
item Some text, with pictures, lists, sections
response{answer1}
item Some text, with pictures, lists, sections
response{answer2}
end{enumerate}
Some text, with pictures, lists, sections
response{this is my answer}
Some text, with pictures, lists, sections
section{section}
subsection{subsection1}
Some text, with pictures, lists, sections
subsection{subsection2}
Some text, with pictures, lists, sections
subsection{subsection3}
Some text, with pictures, lists, sections
response{I also have an answer here}
More text
end{document}
1
@sheß Absolutely. Please note that there are also many posts linked to Gonzalo's nice answer, some of which may become relevant if you have something likeraggedbottom
and so on. (I really just very quickly wrote that before I went cycling, there are many things one may want to add/consider/improve.)
– marmot
Mar 23 at 23:14
@sheß This point I do not understand. There are two things: (1) Draw the interrupted line on the margin and (2) add indentation. I didn't know you want to have (2) (which is clearer after the edit). So you wish to indent sections and so on? (In this case the question is very different from what I originally thought it is.) Or only texts as in the email conversation?
– marmot
Mar 28 at 17:30
1
Whoever downvoted this answer may want to take into account that this was an attempt to answer the question before the edit(s).
– marmot
2 days ago
Sorry, I missed the grace period and the bounty was out awarded
– sheß
yesterday
add a comment |
All I did here is to slightly modify Gonzalo Medina's nice answer. One can of course tune it a bit more. (I also understand that there is nothing squiggly here, I was too lazy to rename the macros.)
documentclass{article}
usepackage{refcount}
usepackage{tikz}
usetikzlibrary{calc,tikzmark}
usepackage{lipsum}
newcounter{tmp}
% newcommandtikzmark[1]{%
% tikz[overlay,remember picture] node (#1) {};}
newcommandStartsquiggly{%
stepcounter{tmp}%
tikzmarknode{a}{strut}label{athetmp}%
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp} else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,0) $ ) -- ( $ (x3,y3) + (-0.55textwidth,-0.5textheight) $ );
end{tikzpicture}%
fi%
}
newcommandEndsquiggly{%
tikzmarknode{b}{strut}label{bthetmp}
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp}
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,1em) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y3) + (-.55textwidth,.5textheight) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
fi
}
newcommandSqu[1]{Startsquiggly#1Endsquiggly}
AtBeginDocument{Startsquiggly}
AtEndDocument{parEndsquiggly}
newcommand{response}[1]{parEndsquiggly#1parStartsquiggly}
begin{document}
Some text, with pictures, lists, sections
begin{enumerate}
item Some text, with pictures, lists, sections
response{answer1}
item Some text, with pictures, lists, sections
response{answer2}
end{enumerate}
Some text, with pictures, lists, sections
response{this is my answer}
Some text, with pictures, lists, sections
section{section}
subsection{subsection1}
Some text, with pictures, lists, sections
subsection{subsection2}
Some text, with pictures, lists, sections
subsection{subsection3}
Some text, with pictures, lists, sections
response{I also have an answer here}
More text
end{document}
1
@sheß Absolutely. Please note that there are also many posts linked to Gonzalo's nice answer, some of which may become relevant if you have something likeraggedbottom
and so on. (I really just very quickly wrote that before I went cycling, there are many things one may want to add/consider/improve.)
– marmot
Mar 23 at 23:14
@sheß This point I do not understand. There are two things: (1) Draw the interrupted line on the margin and (2) add indentation. I didn't know you want to have (2) (which is clearer after the edit). So you wish to indent sections and so on? (In this case the question is very different from what I originally thought it is.) Or only texts as in the email conversation?
– marmot
Mar 28 at 17:30
1
Whoever downvoted this answer may want to take into account that this was an attempt to answer the question before the edit(s).
– marmot
2 days ago
Sorry, I missed the grace period and the bounty was out awarded
– sheß
yesterday
add a comment |
All I did here is to slightly modify Gonzalo Medina's nice answer. One can of course tune it a bit more. (I also understand that there is nothing squiggly here, I was too lazy to rename the macros.)
documentclass{article}
usepackage{refcount}
usepackage{tikz}
usetikzlibrary{calc,tikzmark}
usepackage{lipsum}
newcounter{tmp}
% newcommandtikzmark[1]{%
% tikz[overlay,remember picture] node (#1) {};}
newcommandStartsquiggly{%
stepcounter{tmp}%
tikzmarknode{a}{strut}label{athetmp}%
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp} else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,0) $ ) -- ( $ (x3,y3) + (-0.55textwidth,-0.5textheight) $ );
end{tikzpicture}%
fi%
}
newcommandEndsquiggly{%
tikzmarknode{b}{strut}label{bthetmp}
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp}
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,1em) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y3) + (-.55textwidth,.5textheight) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
fi
}
newcommandSqu[1]{Startsquiggly#1Endsquiggly}
AtBeginDocument{Startsquiggly}
AtEndDocument{parEndsquiggly}
newcommand{response}[1]{parEndsquiggly#1parStartsquiggly}
begin{document}
Some text, with pictures, lists, sections
begin{enumerate}
item Some text, with pictures, lists, sections
response{answer1}
item Some text, with pictures, lists, sections
response{answer2}
end{enumerate}
Some text, with pictures, lists, sections
response{this is my answer}
Some text, with pictures, lists, sections
section{section}
subsection{subsection1}
Some text, with pictures, lists, sections
subsection{subsection2}
Some text, with pictures, lists, sections
subsection{subsection3}
Some text, with pictures, lists, sections
response{I also have an answer here}
More text
end{document}
All I did here is to slightly modify Gonzalo Medina's nice answer. One can of course tune it a bit more. (I also understand that there is nothing squiggly here, I was too lazy to rename the macros.)
documentclass{article}
usepackage{refcount}
usepackage{tikz}
usetikzlibrary{calc,tikzmark}
usepackage{lipsum}
newcounter{tmp}
% newcommandtikzmark[1]{%
% tikz[overlay,remember picture] node (#1) {};}
newcommandStartsquiggly{%
stepcounter{tmp}%
tikzmarknode{a}{strut}label{athetmp}%
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp} else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,0) $ ) -- ( $ (x3,y3) + (-0.55textwidth,-0.5textheight) $ );
end{tikzpicture}%
fi%
}
newcommandEndsquiggly{%
tikzmarknode{b}{strut}label{bthetmp}
ifnumgetpagerefnumber{athetmp}=getpagerefnumber{bthetmp}
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y1) + (-.55textwidth,1em) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
else
begin{tikzpicture}[overlay, remember picture]
draw [ultra thick,gray]
let p1 = (a.south), p2 = (b), p3 = (current page.center) in
( $ (x3,y3) + (-.55textwidth,.5textheight) $ ) -- ( $ (x3,y2) + (-.55textwidth,1em) $ );
end{tikzpicture}%
fi
}
newcommandSqu[1]{Startsquiggly#1Endsquiggly}
AtBeginDocument{Startsquiggly}
AtEndDocument{parEndsquiggly}
newcommand{response}[1]{parEndsquiggly#1parStartsquiggly}
begin{document}
Some text, with pictures, lists, sections
begin{enumerate}
item Some text, with pictures, lists, sections
response{answer1}
item Some text, with pictures, lists, sections
response{answer2}
end{enumerate}
Some text, with pictures, lists, sections
response{this is my answer}
Some text, with pictures, lists, sections
section{section}
subsection{subsection1}
Some text, with pictures, lists, sections
subsection{subsection2}
Some text, with pictures, lists, sections
subsection{subsection3}
Some text, with pictures, lists, sections
response{I also have an answer here}
More text
end{document}
answered Mar 23 at 19:47
marmotmarmot
113k5145275
113k5145275
1
@sheß Absolutely. Please note that there are also many posts linked to Gonzalo's nice answer, some of which may become relevant if you have something likeraggedbottom
and so on. (I really just very quickly wrote that before I went cycling, there are many things one may want to add/consider/improve.)
– marmot
Mar 23 at 23:14
@sheß This point I do not understand. There are two things: (1) Draw the interrupted line on the margin and (2) add indentation. I didn't know you want to have (2) (which is clearer after the edit). So you wish to indent sections and so on? (In this case the question is very different from what I originally thought it is.) Or only texts as in the email conversation?
– marmot
Mar 28 at 17:30
1
Whoever downvoted this answer may want to take into account that this was an attempt to answer the question before the edit(s).
– marmot
2 days ago
Sorry, I missed the grace period and the bounty was out awarded
– sheß
yesterday
add a comment |
1
@sheß Absolutely. Please note that there are also many posts linked to Gonzalo's nice answer, some of which may become relevant if you have something likeraggedbottom
and so on. (I really just very quickly wrote that before I went cycling, there are many things one may want to add/consider/improve.)
– marmot
Mar 23 at 23:14
@sheß This point I do not understand. There are two things: (1) Draw the interrupted line on the margin and (2) add indentation. I didn't know you want to have (2) (which is clearer after the edit). So you wish to indent sections and so on? (In this case the question is very different from what I originally thought it is.) Or only texts as in the email conversation?
– marmot
Mar 28 at 17:30
1
Whoever downvoted this answer may want to take into account that this was an attempt to answer the question before the edit(s).
– marmot
2 days ago
Sorry, I missed the grace period and the bounty was out awarded
– sheß
yesterday
1
1
@sheß Absolutely. Please note that there are also many posts linked to Gonzalo's nice answer, some of which may become relevant if you have something like
raggedbottom
and so on. (I really just very quickly wrote that before I went cycling, there are many things one may want to add/consider/improve.)– marmot
Mar 23 at 23:14
@sheß Absolutely. Please note that there are also many posts linked to Gonzalo's nice answer, some of which may become relevant if you have something like
raggedbottom
and so on. (I really just very quickly wrote that before I went cycling, there are many things one may want to add/consider/improve.)– marmot
Mar 23 at 23:14
@sheß This point I do not understand. There are two things: (1) Draw the interrupted line on the margin and (2) add indentation. I didn't know you want to have (2) (which is clearer after the edit). So you wish to indent sections and so on? (In this case the question is very different from what I originally thought it is.) Or only texts as in the email conversation?
– marmot
Mar 28 at 17:30
@sheß This point I do not understand. There are two things: (1) Draw the interrupted line on the margin and (2) add indentation. I didn't know you want to have (2) (which is clearer after the edit). So you wish to indent sections and so on? (In this case the question is very different from what I originally thought it is.) Or only texts as in the email conversation?
– marmot
Mar 28 at 17:30
1
1
Whoever downvoted this answer may want to take into account that this was an attempt to answer the question before the edit(s).
– marmot
2 days ago
Whoever downvoted this answer may want to take into account that this was an attempt to answer the question before the edit(s).
– marmot
2 days ago
Sorry, I missed the grace period and the bounty was out awarded
– sheß
yesterday
Sorry, I missed the grace period and the bounty was out awarded
– sheß
yesterday
add a comment |
A solution I came up with, but I'm still fairly unhappy with the amount of things that are hard-coded. E.g.
- it requires that I change all
begin{enumerate}[some arguments]
tobegin{enumerate}{some arguments}
- works only for up to a fixed number of nested
enumerate
s and - probably fails if the original document uses an
itemize
or something else. - it cannot be nested
So, eventhough I'm posting this as an aswer to my own post, I do not consider this complete and would be happy for anyone who adapts it to be more general
documentclass{article}
newcounter{breakdepth}
usepackage{enumitem}
usepackage{letltxmacro}
%redefine enumerates so that they are automatically resumable
LetLtxMacroooenumerateenumerate
LetLtxMacroendooenumerateendenumerate
makeatletter
renewenvironment{enumerate}[2][0]{%
ifx0#1%i.e. this is not a resume, but a new list, so start naming it.
ooenumerate[series=levelthe@enumdepth,#2]%
else
ooenumerate[#2]%
fi
}{
endooenumerate%
}
%define the command that breaks the report environment, closes all enumerates, but resumes them afterwards
newcommand{response}[1]{%
setcounter{breakdepth}{the@enumdepth}%
ifnumvalue{breakdepth}>3 end{enumerate} fi%
ifnumvalue{breakdepth}>2 end{enumerate} fi%
ifnumvalue{breakdepth}>1 end{enumerate} fi%
ifnumvalue{breakdepth}>0 end{enumerate} fi%
end{report}%
#1%
begin{report}%
ifnumvalue{breakdepth}>0 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>1 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>2 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>3 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
}
makeatother
%define the environment that has a slight indentation and a vertical line for the original text
usepackage{mdframed}
newenvironment{report}{begin{mdframed}[linewidth=1pt,topline=false,rightline=false,bottomline=false,linecolor=black,innerleftmargin =0cm, leftmargin=2pt,innerrightmargin=1pt]}{end{mdframed}}
begin{document}
begin{report}
section{first section}
begin{enumerate}{label=roman*.}
item ione
begin{enumerate}{}
item aone
%%%%%%%%%
response{test}
%%%%%%%%%
item atwo
end{enumerate}
item itwo
response{test}
end{enumerate}
section{a section}
Some text that is not inside a list
response{test}
more text
end{report}
end{document}
add a comment |
A solution I came up with, but I'm still fairly unhappy with the amount of things that are hard-coded. E.g.
- it requires that I change all
begin{enumerate}[some arguments]
tobegin{enumerate}{some arguments}
- works only for up to a fixed number of nested
enumerate
s and - probably fails if the original document uses an
itemize
or something else. - it cannot be nested
So, eventhough I'm posting this as an aswer to my own post, I do not consider this complete and would be happy for anyone who adapts it to be more general
documentclass{article}
newcounter{breakdepth}
usepackage{enumitem}
usepackage{letltxmacro}
%redefine enumerates so that they are automatically resumable
LetLtxMacroooenumerateenumerate
LetLtxMacroendooenumerateendenumerate
makeatletter
renewenvironment{enumerate}[2][0]{%
ifx0#1%i.e. this is not a resume, but a new list, so start naming it.
ooenumerate[series=levelthe@enumdepth,#2]%
else
ooenumerate[#2]%
fi
}{
endooenumerate%
}
%define the command that breaks the report environment, closes all enumerates, but resumes them afterwards
newcommand{response}[1]{%
setcounter{breakdepth}{the@enumdepth}%
ifnumvalue{breakdepth}>3 end{enumerate} fi%
ifnumvalue{breakdepth}>2 end{enumerate} fi%
ifnumvalue{breakdepth}>1 end{enumerate} fi%
ifnumvalue{breakdepth}>0 end{enumerate} fi%
end{report}%
#1%
begin{report}%
ifnumvalue{breakdepth}>0 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>1 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>2 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>3 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
}
makeatother
%define the environment that has a slight indentation and a vertical line for the original text
usepackage{mdframed}
newenvironment{report}{begin{mdframed}[linewidth=1pt,topline=false,rightline=false,bottomline=false,linecolor=black,innerleftmargin =0cm, leftmargin=2pt,innerrightmargin=1pt]}{end{mdframed}}
begin{document}
begin{report}
section{first section}
begin{enumerate}{label=roman*.}
item ione
begin{enumerate}{}
item aone
%%%%%%%%%
response{test}
%%%%%%%%%
item atwo
end{enumerate}
item itwo
response{test}
end{enumerate}
section{a section}
Some text that is not inside a list
response{test}
more text
end{report}
end{document}
add a comment |
A solution I came up with, but I'm still fairly unhappy with the amount of things that are hard-coded. E.g.
- it requires that I change all
begin{enumerate}[some arguments]
tobegin{enumerate}{some arguments}
- works only for up to a fixed number of nested
enumerate
s and - probably fails if the original document uses an
itemize
or something else. - it cannot be nested
So, eventhough I'm posting this as an aswer to my own post, I do not consider this complete and would be happy for anyone who adapts it to be more general
documentclass{article}
newcounter{breakdepth}
usepackage{enumitem}
usepackage{letltxmacro}
%redefine enumerates so that they are automatically resumable
LetLtxMacroooenumerateenumerate
LetLtxMacroendooenumerateendenumerate
makeatletter
renewenvironment{enumerate}[2][0]{%
ifx0#1%i.e. this is not a resume, but a new list, so start naming it.
ooenumerate[series=levelthe@enumdepth,#2]%
else
ooenumerate[#2]%
fi
}{
endooenumerate%
}
%define the command that breaks the report environment, closes all enumerates, but resumes them afterwards
newcommand{response}[1]{%
setcounter{breakdepth}{the@enumdepth}%
ifnumvalue{breakdepth}>3 end{enumerate} fi%
ifnumvalue{breakdepth}>2 end{enumerate} fi%
ifnumvalue{breakdepth}>1 end{enumerate} fi%
ifnumvalue{breakdepth}>0 end{enumerate} fi%
end{report}%
#1%
begin{report}%
ifnumvalue{breakdepth}>0 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>1 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>2 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>3 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
}
makeatother
%define the environment that has a slight indentation and a vertical line for the original text
usepackage{mdframed}
newenvironment{report}{begin{mdframed}[linewidth=1pt,topline=false,rightline=false,bottomline=false,linecolor=black,innerleftmargin =0cm, leftmargin=2pt,innerrightmargin=1pt]}{end{mdframed}}
begin{document}
begin{report}
section{first section}
begin{enumerate}{label=roman*.}
item ione
begin{enumerate}{}
item aone
%%%%%%%%%
response{test}
%%%%%%%%%
item atwo
end{enumerate}
item itwo
response{test}
end{enumerate}
section{a section}
Some text that is not inside a list
response{test}
more text
end{report}
end{document}
A solution I came up with, but I'm still fairly unhappy with the amount of things that are hard-coded. E.g.
- it requires that I change all
begin{enumerate}[some arguments]
tobegin{enumerate}{some arguments}
- works only for up to a fixed number of nested
enumerate
s and - probably fails if the original document uses an
itemize
or something else. - it cannot be nested
So, eventhough I'm posting this as an aswer to my own post, I do not consider this complete and would be happy for anyone who adapts it to be more general
documentclass{article}
newcounter{breakdepth}
usepackage{enumitem}
usepackage{letltxmacro}
%redefine enumerates so that they are automatically resumable
LetLtxMacroooenumerateenumerate
LetLtxMacroendooenumerateendenumerate
makeatletter
renewenvironment{enumerate}[2][0]{%
ifx0#1%i.e. this is not a resume, but a new list, so start naming it.
ooenumerate[series=levelthe@enumdepth,#2]%
else
ooenumerate[#2]%
fi
}{
endooenumerate%
}
%define the command that breaks the report environment, closes all enumerates, but resumes them afterwards
newcommand{response}[1]{%
setcounter{breakdepth}{the@enumdepth}%
ifnumvalue{breakdepth}>3 end{enumerate} fi%
ifnumvalue{breakdepth}>2 end{enumerate} fi%
ifnumvalue{breakdepth}>1 end{enumerate} fi%
ifnumvalue{breakdepth}>0 end{enumerate} fi%
end{report}%
#1%
begin{report}%
ifnumvalue{breakdepth}>0 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>1 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>2 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
ifnumvalue{breakdepth}>3 begin{enumerate}{resume*=levelthe@enumdepth}itemfi%
}
makeatother
%define the environment that has a slight indentation and a vertical line for the original text
usepackage{mdframed}
newenvironment{report}{begin{mdframed}[linewidth=1pt,topline=false,rightline=false,bottomline=false,linecolor=black,innerleftmargin =0cm, leftmargin=2pt,innerrightmargin=1pt]}{end{mdframed}}
begin{document}
begin{report}
section{first section}
begin{enumerate}{label=roman*.}
item ione
begin{enumerate}{}
item aone
%%%%%%%%%
response{test}
%%%%%%%%%
item atwo
end{enumerate}
item itwo
response{test}
end{enumerate}
section{a section}
Some text that is not inside a list
response{test}
more text
end{report}
end{document}
edited Mar 29 at 17:45
answered Mar 29 at 13:49
sheßsheß
2,00711436
2,00711436
add a comment |
add a comment |
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%2f480526%2fimitate-email-reply-layout-vertical-line-in-left-margin-except-for-responses%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
1
Maybe related: tex.stackexchange.com/questions/68251/…
– Steven B. Segletes
Mar 20 at 16:26
2
Not a solution, but if you are looking into this I would try to use
tcolorbox
instead ofmdframed
.tcolorbox
is actively maintained and has an awesome manual whilemdframed
development seems to have stalled a while ago.– moewe
Mar 20 at 16:31
2
@sheß Could you clarify? One can indeed put enumerations inside the
embed
. So are you looking to suspend the embed to provide a response and then continue the enumeration where it left off?– Steven B. Segletes
Mar 20 at 16:37
1
What if you just draw a line on the left margin (using a suitably prepared background image perhaps), and use your defined
response
environment to draw a box with a white border on the left to cover up the pre-drawn line?– Willie Wong
Mar 21 at 13:31
1
Isn't this an instance of a XY problem, where your actual ultimate objective is to nicely add your comment on a document submitted to you? If so, you might want to have a look at the
todonotes
package. (I.e. this package doesn't do the "bar in the left margin" thing, but might be of greater help for what you ultimately want to do. See notably inline notes.) See alsochanges
package.– ebosi
Mar 28 at 11:13