How can I center arbitrary content between two horizontal lines?
I want to implement a macro that takes exactly one parameter and will create a line above and below the content and ignores the text indentation.
This is meant to place some event information in protocols no matter what context I am in right now (e.g. within an enumerate or itemize).
It should interrupt the current block and always use the complete column width and then continue the block afterwards.
However, I am having problems with the vertical centering:
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
% Example Usage:
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
fouth point
end{itemize}
The text "Charlie enters the meeting" should begin at the left, like the "Some text before".
also the lines are placed pretty odd an the text within the lines isnt vertically centered.
Any clues/ suggestions?
formatting
add a comment |
I want to implement a macro that takes exactly one parameter and will create a line above and below the content and ignores the text indentation.
This is meant to place some event information in protocols no matter what context I am in right now (e.g. within an enumerate or itemize).
It should interrupt the current block and always use the complete column width and then continue the block afterwards.
However, I am having problems with the vertical centering:
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
% Example Usage:
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
fouth point
end{itemize}
The text "Charlie enters the meeting" should begin at the left, like the "Some text before".
also the lines are placed pretty odd an the text within the lines isnt vertically centered.
Any clues/ suggestions?
formatting
1
Why not useitem Second Point end{itemize} bartext{Charlie enters the meeting} begin{itemize}[resume*] item third point
and the ` enumitem` package?
– leandriis
Feb 3 at 21:45
add a comment |
I want to implement a macro that takes exactly one parameter and will create a line above and below the content and ignores the text indentation.
This is meant to place some event information in protocols no matter what context I am in right now (e.g. within an enumerate or itemize).
It should interrupt the current block and always use the complete column width and then continue the block afterwards.
However, I am having problems with the vertical centering:
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
% Example Usage:
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
fouth point
end{itemize}
The text "Charlie enters the meeting" should begin at the left, like the "Some text before".
also the lines are placed pretty odd an the text within the lines isnt vertically centered.
Any clues/ suggestions?
formatting
I want to implement a macro that takes exactly one parameter and will create a line above and below the content and ignores the text indentation.
This is meant to place some event information in protocols no matter what context I am in right now (e.g. within an enumerate or itemize).
It should interrupt the current block and always use the complete column width and then continue the block afterwards.
However, I am having problems with the vertical centering:
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
% Example Usage:
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
fouth point
end{itemize}
The text "Charlie enters the meeting" should begin at the left, like the "Some text before".
also the lines are placed pretty odd an the text within the lines isnt vertically centered.
Any clues/ suggestions?
formatting
formatting
edited Feb 3 at 21:39
Bernard
174k776206
174k776206
asked Feb 3 at 21:35
TobiTobi
1296
1296
1
Why not useitem Second Point end{itemize} bartext{Charlie enters the meeting} begin{itemize}[resume*] item third point
and the ` enumitem` package?
– leandriis
Feb 3 at 21:45
add a comment |
1
Why not useitem Second Point end{itemize} bartext{Charlie enters the meeting} begin{itemize}[resume*] item third point
and the ` enumitem` package?
– leandriis
Feb 3 at 21:45
1
1
Why not use
item Second Point end{itemize} bartext{Charlie enters the meeting} begin{itemize}[resume*] item third point
and the ` enumitem` package?– leandriis
Feb 3 at 21:45
Why not use
item Second Point end{itemize} bartext{Charlie enters the meeting} begin{itemize}[resume*] item third point
and the ` enumitem` package?– leandriis
Feb 3 at 21:45
add a comment |
3 Answers
3
active
oldest
votes
You can use a (non-floating) float:
documentclass{article}
usepackage{array,float}
newcommand{bartext}[1]{%
parmedskip
begingroup
intextsep=smallskipamount
extrarowheight =3pt %or perhaps a bit less ...
arrayrulewidth=.5pt
begin{figure}[H]%
begin{tabular}{@{}p{textwidth}@{}}
hline
#1
\hline
end{tabular}%
end{figure}%
parendgroup}
begin{document}
a
bartext{Charlie enters the meeting}
b
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
end{document}
Thanks, Ulrike. Very elegant solution. My documents are starting to look pretty now and start to be usable. Thanks.
– Tobi
Feb 3 at 23:08
add a comment |
Assuming that you do not want to use something like
end{itemize}
bartext{...}
begin{itemize}[resume*]
you could use the following code that is inspired by How can I check if the current code is inside a certain environment?
documentclass{article}
usepackage{enumitem}
usepackage{lipsum}
makeatletter
defitemizename{itemize}
defenumeratename{enumerate}
newcommand{bartext}[1]{%
ifx@currenviritemizename
end{itemize}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{itemize}[resume*]
else
ifx@currenvirenumeratename
end{enumerate}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{enumerate}[resume*]
else
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
fi
fi}
newcommand@myenvname{myenv}
makeatother
begin{document}
lipsum[5]
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
lipsum[5]
begin{enumerate}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{enumerate}
lipsum[5]
bartext{Charlie enters the meeting}
end{document}
Good but very complex solution. I went with the solution of Ulrike in the end
– Tobi
Feb 3 at 23:07
add a comment |
You can use the functionalities of enumitem
:
documentclass{report}%{memoir}
usepackage{enumitem}
usepackage{lipsum}
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
begin{document}
Some text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.
begin{itemize}[after=vspace*{-topsep}]
item First Point
item Second Point
end{itemize}
bartext{Charlie enters the meeting}
begin{itemize}[resume*, before=vspace*{-topsep}]
item third point
item fourth point
end{itemize}
end{document}
add a comment |
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%2f473244%2fhow-can-i-center-arbitrary-content-between-two-horizontal-lines%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
You can use a (non-floating) float:
documentclass{article}
usepackage{array,float}
newcommand{bartext}[1]{%
parmedskip
begingroup
intextsep=smallskipamount
extrarowheight =3pt %or perhaps a bit less ...
arrayrulewidth=.5pt
begin{figure}[H]%
begin{tabular}{@{}p{textwidth}@{}}
hline
#1
\hline
end{tabular}%
end{figure}%
parendgroup}
begin{document}
a
bartext{Charlie enters the meeting}
b
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
end{document}
Thanks, Ulrike. Very elegant solution. My documents are starting to look pretty now and start to be usable. Thanks.
– Tobi
Feb 3 at 23:08
add a comment |
You can use a (non-floating) float:
documentclass{article}
usepackage{array,float}
newcommand{bartext}[1]{%
parmedskip
begingroup
intextsep=smallskipamount
extrarowheight =3pt %or perhaps a bit less ...
arrayrulewidth=.5pt
begin{figure}[H]%
begin{tabular}{@{}p{textwidth}@{}}
hline
#1
\hline
end{tabular}%
end{figure}%
parendgroup}
begin{document}
a
bartext{Charlie enters the meeting}
b
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
end{document}
Thanks, Ulrike. Very elegant solution. My documents are starting to look pretty now and start to be usable. Thanks.
– Tobi
Feb 3 at 23:08
add a comment |
You can use a (non-floating) float:
documentclass{article}
usepackage{array,float}
newcommand{bartext}[1]{%
parmedskip
begingroup
intextsep=smallskipamount
extrarowheight =3pt %or perhaps a bit less ...
arrayrulewidth=.5pt
begin{figure}[H]%
begin{tabular}{@{}p{textwidth}@{}}
hline
#1
\hline
end{tabular}%
end{figure}%
parendgroup}
begin{document}
a
bartext{Charlie enters the meeting}
b
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
end{document}
You can use a (non-floating) float:
documentclass{article}
usepackage{array,float}
newcommand{bartext}[1]{%
parmedskip
begingroup
intextsep=smallskipamount
extrarowheight =3pt %or perhaps a bit less ...
arrayrulewidth=.5pt
begin{figure}[H]%
begin{tabular}{@{}p{textwidth}@{}}
hline
#1
\hline
end{tabular}%
end{figure}%
parendgroup}
begin{document}
a
bartext{Charlie enters the meeting}
b
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
end{document}
answered Feb 3 at 22:26
Ulrike FischerUlrike Fischer
196k8303689
196k8303689
Thanks, Ulrike. Very elegant solution. My documents are starting to look pretty now and start to be usable. Thanks.
– Tobi
Feb 3 at 23:08
add a comment |
Thanks, Ulrike. Very elegant solution. My documents are starting to look pretty now and start to be usable. Thanks.
– Tobi
Feb 3 at 23:08
Thanks, Ulrike. Very elegant solution. My documents are starting to look pretty now and start to be usable. Thanks.
– Tobi
Feb 3 at 23:08
Thanks, Ulrike. Very elegant solution. My documents are starting to look pretty now and start to be usable. Thanks.
– Tobi
Feb 3 at 23:08
add a comment |
Assuming that you do not want to use something like
end{itemize}
bartext{...}
begin{itemize}[resume*]
you could use the following code that is inspired by How can I check if the current code is inside a certain environment?
documentclass{article}
usepackage{enumitem}
usepackage{lipsum}
makeatletter
defitemizename{itemize}
defenumeratename{enumerate}
newcommand{bartext}[1]{%
ifx@currenviritemizename
end{itemize}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{itemize}[resume*]
else
ifx@currenvirenumeratename
end{enumerate}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{enumerate}[resume*]
else
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
fi
fi}
newcommand@myenvname{myenv}
makeatother
begin{document}
lipsum[5]
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
lipsum[5]
begin{enumerate}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{enumerate}
lipsum[5]
bartext{Charlie enters the meeting}
end{document}
Good but very complex solution. I went with the solution of Ulrike in the end
– Tobi
Feb 3 at 23:07
add a comment |
Assuming that you do not want to use something like
end{itemize}
bartext{...}
begin{itemize}[resume*]
you could use the following code that is inspired by How can I check if the current code is inside a certain environment?
documentclass{article}
usepackage{enumitem}
usepackage{lipsum}
makeatletter
defitemizename{itemize}
defenumeratename{enumerate}
newcommand{bartext}[1]{%
ifx@currenviritemizename
end{itemize}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{itemize}[resume*]
else
ifx@currenvirenumeratename
end{enumerate}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{enumerate}[resume*]
else
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
fi
fi}
newcommand@myenvname{myenv}
makeatother
begin{document}
lipsum[5]
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
lipsum[5]
begin{enumerate}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{enumerate}
lipsum[5]
bartext{Charlie enters the meeting}
end{document}
Good but very complex solution. I went with the solution of Ulrike in the end
– Tobi
Feb 3 at 23:07
add a comment |
Assuming that you do not want to use something like
end{itemize}
bartext{...}
begin{itemize}[resume*]
you could use the following code that is inspired by How can I check if the current code is inside a certain environment?
documentclass{article}
usepackage{enumitem}
usepackage{lipsum}
makeatletter
defitemizename{itemize}
defenumeratename{enumerate}
newcommand{bartext}[1]{%
ifx@currenviritemizename
end{itemize}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{itemize}[resume*]
else
ifx@currenvirenumeratename
end{enumerate}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{enumerate}[resume*]
else
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
fi
fi}
newcommand@myenvname{myenv}
makeatother
begin{document}
lipsum[5]
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
lipsum[5]
begin{enumerate}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{enumerate}
lipsum[5]
bartext{Charlie enters the meeting}
end{document}
Assuming that you do not want to use something like
end{itemize}
bartext{...}
begin{itemize}[resume*]
you could use the following code that is inspired by How can I check if the current code is inside a certain environment?
documentclass{article}
usepackage{enumitem}
usepackage{lipsum}
makeatletter
defitemizename{itemize}
defenumeratename{enumerate}
newcommand{bartext}[1]{%
ifx@currenviritemizename
end{itemize}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{itemize}[resume*]
else
ifx@currenvirenumeratename
end{enumerate}
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
begin{enumerate}[resume*]
else
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt
fi
fi}
newcommand@myenvname{myenv}
makeatother
begin{document}
lipsum[5]
begin{itemize}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{itemize}
lipsum[5]
begin{enumerate}
item First Point
item Second Point
bartext{Charlie enters the meeting}
item third point
item fouth point
end{enumerate}
lipsum[5]
bartext{Charlie enters the meeting}
end{document}
answered Feb 3 at 22:01
leandriisleandriis
10.5k1732
10.5k1732
Good but very complex solution. I went with the solution of Ulrike in the end
– Tobi
Feb 3 at 23:07
add a comment |
Good but very complex solution. I went with the solution of Ulrike in the end
– Tobi
Feb 3 at 23:07
Good but very complex solution. I went with the solution of Ulrike in the end
– Tobi
Feb 3 at 23:07
Good but very complex solution. I went with the solution of Ulrike in the end
– Tobi
Feb 3 at 23:07
add a comment |
You can use the functionalities of enumitem
:
documentclass{report}%{memoir}
usepackage{enumitem}
usepackage{lipsum}
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
begin{document}
Some text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.
begin{itemize}[after=vspace*{-topsep}]
item First Point
item Second Point
end{itemize}
bartext{Charlie enters the meeting}
begin{itemize}[resume*, before=vspace*{-topsep}]
item third point
item fourth point
end{itemize}
end{document}
add a comment |
You can use the functionalities of enumitem
:
documentclass{report}%{memoir}
usepackage{enumitem}
usepackage{lipsum}
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
begin{document}
Some text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.
begin{itemize}[after=vspace*{-topsep}]
item First Point
item Second Point
end{itemize}
bartext{Charlie enters the meeting}
begin{itemize}[resume*, before=vspace*{-topsep}]
item third point
item fourth point
end{itemize}
end{document}
add a comment |
You can use the functionalities of enumitem
:
documentclass{report}%{memoir}
usepackage{enumitem}
usepackage{lipsum}
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
begin{document}
Some text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.
begin{itemize}[after=vspace*{-topsep}]
item First Point
item Second Point
end{itemize}
bartext{Charlie enters the meeting}
begin{itemize}[resume*, before=vspace*{-topsep}]
item third point
item fourth point
end{itemize}
end{document}
You can use the functionalities of enumitem
:
documentclass{report}%{memoir}
usepackage{enumitem}
usepackage{lipsum}
newcommand{bartext}[1]{
kern4pt % space above the rules
hrule height 0.5pt
vspace{0.1cm}
noindent #1
vspace{0.1cm}
hrule height 0.5pt
kern4pt % space below the rules
}
begin{document}
Some text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.
begin{itemize}[after=vspace*{-topsep}]
item First Point
item Second Point
end{itemize}
bartext{Charlie enters the meeting}
begin{itemize}[resume*, before=vspace*{-topsep}]
item third point
item fourth point
end{itemize}
end{document}
answered Feb 3 at 21:56
BernardBernard
174k776206
174k776206
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%2f473244%2fhow-can-i-center-arbitrary-content-between-two-horizontal-lines%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
Why not use
item Second Point end{itemize} bartext{Charlie enters the meeting} begin{itemize}[resume*] item third point
and the ` enumitem` package?– leandriis
Feb 3 at 21:45