Braces spanning multiple tables (whole tables, not rows or pages)Brace and text in side marginhow one can write a nice vector parser, something that does pgfvecparseA=B-C; D=E x F;Creating tables with spanning rows/columnsTable spanning multiple pagestable breaks spanning multiple pagesVertical braces spanning multiple items in an ennumeration-like environmentBrace spanning multiple rows in a table and horizontal alignmentExhaustive Information about text alignment in TabularChapter title and rotated table (with subtables) on the same pageProblem aligning decimals in multi-column tableHow to force a maximum cell height?SWP - Right column misaligned in table
Is alignment needed after replacing upper control arms?
Did WWII Japanese soldiers engage in cannibalism of their enemies?
How to avoid ci-driven development..?
Why do private jets such as Gulfstream fly higher than other civilian jets?
Why is there a need to prevent a racist, sexist, or otherwise bigoted vendor from discriminating who they sell to?
WordCloud: do not eliminate duplicates
What was the first multiprocessor x86 motherboard?
How do I say "Outdoor Pre-show"
Purchased new computer from DELL with pre-installed Ubuntu. Won't boot. Should assume its an error from DELL?
Finish the Mastermind
Is it true that control+alt+delete only became a thing because IBM would not build Bill Gates a computer with a task manager button?
Why does putting a dot after the URL remove login information?
Is it double speak?
Is it really ~648.69 km/s Delta-V to "Land" on the Surface of the Sun?
Would the Elder Wand have been able to destroy a Horcrux?
Double blind peer review when paper cites author's GitHub repo for code
How does The Fools Guild make its money?
Do other countries guarantee freedoms that the United States does not have?
Erratic behavior by an internal employee against an external employee
What can make Linux unresponsive for minutes when browsing certain websites?
Is there a loss of quality when converting RGB to HEX?
Does the Voyager team use a wrapper (Fortran(77?) to Python) to transmit current commands?
What does Fisher mean by this quote?
How does the oscilloscope trigger really work?
Braces spanning multiple tables (whole tables, not rows or pages)
Brace and text in side marginhow one can write a nice vector parser, something that does pgfvecparseA=B-C; D=E x F;Creating tables with spanning rows/columnsTable spanning multiple pagestable breaks spanning multiple pagesVertical braces spanning multiple items in an ennumeration-like environmentBrace spanning multiple rows in a table and horizontal alignmentExhaustive Information about text alignment in TabularChapter title and rotated table (with subtables) on the same pageProblem aligning decimals in multi-column tableHow to force a maximum cell height?SWP - Right column misaligned in table
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I've got a bunch of tables arranged like so:
documentclassarticle
begindocument
begintable
beginminipage[c][1totalheight][t]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
parendcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
parendcenter
captionTable #2
endminipagehfill%
beginminipage[c][1totalheight][t]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
parendcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
parendcenter
captionTable #4
endminipage
endtable
enddocument
And I'm trying to get braces to span multiple tables like so:

Or:

Here's an example of something I tried that uses the page margins. It works great for regular text, but not with objects like tables it seems:
newcommandBrText[2]{%
parsmallskip
noindentmakebox[textwidth][r]$text#1left
beginminipagetextwidth
#2
endminipage
right.nulldelimiterspace=0pt$parsmallskip
I tried working the problem a few other ways, but didn't think to hang on to non-working code at the time.
Anyway, I recall reading somewhere that it's possible, but not sure where.
Any ideas how to do this would be much appreciated.
tables braces marginnote layout
add a comment |
I've got a bunch of tables arranged like so:
documentclassarticle
begindocument
begintable
beginminipage[c][1totalheight][t]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
parendcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
parendcenter
captionTable #2
endminipagehfill%
beginminipage[c][1totalheight][t]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
parendcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
parendcenter
captionTable #4
endminipage
endtable
enddocument
And I'm trying to get braces to span multiple tables like so:

Or:

Here's an example of something I tried that uses the page margins. It works great for regular text, but not with objects like tables it seems:
newcommandBrText[2]{%
parsmallskip
noindentmakebox[textwidth][r]$text#1left
beginminipagetextwidth
#2
endminipage
right.nulldelimiterspace=0pt$parsmallskip
I tried working the problem a few other ways, but didn't think to hang on to non-working code at the time.
Anyway, I recall reading somewhere that it's possible, but not sure where.
Any ideas how to do this would be much appreciated.
tables braces marginnote layout
You really want the braces not to encompass the “Table 2” and “Table 4” captions?
– frougon
8 hours ago
@frougon I think either way is probably fine. Dealers choice :) Or both if you know both. Someone else might need the alternative
– tjt263
8 hours ago
add a comment |
I've got a bunch of tables arranged like so:
documentclassarticle
begindocument
begintable
beginminipage[c][1totalheight][t]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
parendcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
parendcenter
captionTable #2
endminipagehfill%
beginminipage[c][1totalheight][t]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
parendcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
parendcenter
captionTable #4
endminipage
endtable
enddocument
And I'm trying to get braces to span multiple tables like so:

Or:

Here's an example of something I tried that uses the page margins. It works great for regular text, but not with objects like tables it seems:
newcommandBrText[2]{%
parsmallskip
noindentmakebox[textwidth][r]$text#1left
beginminipagetextwidth
#2
endminipage
right.nulldelimiterspace=0pt$parsmallskip
I tried working the problem a few other ways, but didn't think to hang on to non-working code at the time.
Anyway, I recall reading somewhere that it's possible, but not sure where.
Any ideas how to do this would be much appreciated.
tables braces marginnote layout
I've got a bunch of tables arranged like so:
documentclassarticle
begindocument
begintable
beginminipage[c][1totalheight][t]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
parendcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
parendcenter
captionTable #2
endminipagehfill%
beginminipage[c][1totalheight][t]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
parendcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
parendcenter
captionTable #4
endminipage
endtable
enddocument
And I'm trying to get braces to span multiple tables like so:

Or:

Here's an example of something I tried that uses the page margins. It works great for regular text, but not with objects like tables it seems:
newcommandBrText[2]{%
parsmallskip
noindentmakebox[textwidth][r]$text#1left
beginminipagetextwidth
#2
endminipage
right.nulldelimiterspace=0pt$parsmallskip
I tried working the problem a few other ways, but didn't think to hang on to non-working code at the time.
Anyway, I recall reading somewhere that it's possible, but not sure where.
Any ideas how to do this would be much appreciated.
tables braces marginnote layout
tables braces marginnote layout
asked 8 hours ago
tjt263tjt263
6691 silver badge12 bronze badges
6691 silver badge12 bronze badges
You really want the braces not to encompass the “Table 2” and “Table 4” captions?
– frougon
8 hours ago
@frougon I think either way is probably fine. Dealers choice :) Or both if you know both. Someone else might need the alternative
– tjt263
8 hours ago
add a comment |
You really want the braces not to encompass the “Table 2” and “Table 4” captions?
– frougon
8 hours ago
@frougon I think either way is probably fine. Dealers choice :) Or both if you know both. Someone else might need the alternative
– tjt263
8 hours ago
You really want the braces not to encompass the “Table 2” and “Table 4” captions?
– frougon
8 hours ago
You really want the braces not to encompass the “Table 2” and “Table 4” captions?
– frougon
8 hours ago
@frougon I think either way is probably fine. Dealers choice :) Or both if you know both. Someone else might need the alternative
– tjt263
8 hours ago
@frougon I think either way is probably fine. Dealers choice :) Or both if you know both. Someone else might need the alternative
– tjt263
8 hours ago
add a comment |
2 Answers
2
active
oldest
votes

documentclassarticle
begindocument
begintable
$left
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #2
endminipage
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #4
endminipage
right$
endtable
enddocument
Beautiful, thanks. I actually tried that a bunch of times with minor variations and kept gettingNot in outer par mode,Undefined control sequence, etc. Guess I didn't have it quite right.
– tjt263
7 hours ago
parendcenter?
– egreg
5 hours ago
@egreg hmm yes copied from OP, I'll delete thepar
– David Carlisle
5 hours ago
add a comment |
I provide two environments, mybraceleft and mybraceright, for conveniently bracing horizontal material. They both produce horizontal material (you can use them in the middle of a paragraph) of just the required size.
One notable property of my solution as compared to David's one is that it produces horizontal material that tightly wraps the tabular environments, or whatever you decide to use in their place (you don't have to guess the 0.45textwidth length). If you reduce the width of these elements, you'll see that my braces remain at the customizable distance myhsep from the braced contents, which is not the case with David's solution (you'll have a larger gap between braces and contents because the minipage will have more whitespace inside, on the left and on the right of the tabular material).
A tricky part of the work with the requirements I set is to find the appropriate width for centering two tabular environments and two captions that go together. For this, I use the eqparbox package. This package relies on proper use of tags (for each tag, it finds the maximum width and allows you to use it as a normal length—this is extremely convenient, great package!). Watch for the tags in the source, they go by three (one for a minipage that tightly encloses two tabular environments and their associated captions). This process requires to compile the document at least twice.
With no table environment
In this solution, the table environment isn't used, therefore nothing floats. This is mainly boxing work. captionof from the caption package is used to produce the customary appearance of standard table captions.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
usepackagecaption
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
noindent
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #4
endminipage
endmybraceleft
vspace2cm
noindent
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #8
endminipage
endmybraceright
enddocument

Wrapping braced material inside tables
This is close to the previous example, the only difference is that we allow two big chunks (each containing four tabular environments) to float. Thus, we use the table environment and can use caption instead of captionof. No need for the caption package in this case. This is similar to what David did, except for the input syntax (mybraceleft and mybraceright here) and horizontal spacing around the braces: my braces stay at a constant, customizable distance from the braced material (myhsep).
As already mentioned, this requires two compilation runs to allow eqparbox to do its work.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #4
endminipage
endmybraceleft
endtable
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #8
endminipage
endmybraceright
endtable
enddocument

I am wondering if you could solve this problem.
– user121799
1 hour ago
@user121799 Well, well, well... I love parsing tasks (cf. link title), unfortunately the question you linked to is about 3D in TikZ and I haven't explored this field yet. I'm not even sure I understand what is missing from the already-accepted answer. I guess it has to do with the internal representation of 3D points in TikZ and how they undergo transformations, but I'm afraid I'm still too ignorant in these areas to contribute. :-/
– frougon
1 hour ago
OK, well. Anyway, maybe you can keep this question in the back of your mind if you ever go 3d. It would be great if one could somehow associate three instead of two coordinates to a symbolic coordinate, and if then veclen would spit out the distance between those. And so on. All my attempts to make 3d operations simpler struggled with that obstacle.
– user121799
11 mins ago
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%2f503397%2fbraces-spanning-multiple-tables-whole-tables-not-rows-or-pages%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes

documentclassarticle
begindocument
begintable
$left
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #2
endminipage
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #4
endminipage
right$
endtable
enddocument
Beautiful, thanks. I actually tried that a bunch of times with minor variations and kept gettingNot in outer par mode,Undefined control sequence, etc. Guess I didn't have it quite right.
– tjt263
7 hours ago
parendcenter?
– egreg
5 hours ago
@egreg hmm yes copied from OP, I'll delete thepar
– David Carlisle
5 hours ago
add a comment |

documentclassarticle
begindocument
begintable
$left
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #2
endminipage
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #4
endminipage
right$
endtable
enddocument
Beautiful, thanks. I actually tried that a bunch of times with minor variations and kept gettingNot in outer par mode,Undefined control sequence, etc. Guess I didn't have it quite right.
– tjt263
7 hours ago
parendcenter?
– egreg
5 hours ago
@egreg hmm yes copied from OP, I'll delete thepar
– David Carlisle
5 hours ago
add a comment |

documentclassarticle
begindocument
begintable
$left
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #2
endminipage
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #4
endminipage
right$
endtable
enddocument

documentclassarticle
begindocument
begintable
$left
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #1
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #2
endminipage
beginminipage[c]0.45textwidth%
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endcenter
captionTable #3
begincenter
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular%
endcenter
captionTable #4
endminipage
right$
endtable
enddocument
edited 5 hours ago
answered 8 hours ago
David CarlisleDavid Carlisle
518k44 gold badges1173 silver badges1943 bronze badges
518k44 gold badges1173 silver badges1943 bronze badges
Beautiful, thanks. I actually tried that a bunch of times with minor variations and kept gettingNot in outer par mode,Undefined control sequence, etc. Guess I didn't have it quite right.
– tjt263
7 hours ago
parendcenter?
– egreg
5 hours ago
@egreg hmm yes copied from OP, I'll delete thepar
– David Carlisle
5 hours ago
add a comment |
Beautiful, thanks. I actually tried that a bunch of times with minor variations and kept gettingNot in outer par mode,Undefined control sequence, etc. Guess I didn't have it quite right.
– tjt263
7 hours ago
parendcenter?
– egreg
5 hours ago
@egreg hmm yes copied from OP, I'll delete thepar
– David Carlisle
5 hours ago
Beautiful, thanks. I actually tried that a bunch of times with minor variations and kept getting
Not in outer par mode, Undefined control sequence, etc. Guess I didn't have it quite right.– tjt263
7 hours ago
Beautiful, thanks. I actually tried that a bunch of times with minor variations and kept getting
Not in outer par mode, Undefined control sequence, etc. Guess I didn't have it quite right.– tjt263
7 hours ago
parendcenter?– egreg
5 hours ago
parendcenter?– egreg
5 hours ago
@egreg hmm yes copied from OP, I'll delete the
par– David Carlisle
5 hours ago
@egreg hmm yes copied from OP, I'll delete the
par– David Carlisle
5 hours ago
add a comment |
I provide two environments, mybraceleft and mybraceright, for conveniently bracing horizontal material. They both produce horizontal material (you can use them in the middle of a paragraph) of just the required size.
One notable property of my solution as compared to David's one is that it produces horizontal material that tightly wraps the tabular environments, or whatever you decide to use in their place (you don't have to guess the 0.45textwidth length). If you reduce the width of these elements, you'll see that my braces remain at the customizable distance myhsep from the braced contents, which is not the case with David's solution (you'll have a larger gap between braces and contents because the minipage will have more whitespace inside, on the left and on the right of the tabular material).
A tricky part of the work with the requirements I set is to find the appropriate width for centering two tabular environments and two captions that go together. For this, I use the eqparbox package. This package relies on proper use of tags (for each tag, it finds the maximum width and allows you to use it as a normal length—this is extremely convenient, great package!). Watch for the tags in the source, they go by three (one for a minipage that tightly encloses two tabular environments and their associated captions). This process requires to compile the document at least twice.
With no table environment
In this solution, the table environment isn't used, therefore nothing floats. This is mainly boxing work. captionof from the caption package is used to produce the customary appearance of standard table captions.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
usepackagecaption
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
noindent
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #4
endminipage
endmybraceleft
vspace2cm
noindent
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #8
endminipage
endmybraceright
enddocument

Wrapping braced material inside tables
This is close to the previous example, the only difference is that we allow two big chunks (each containing four tabular environments) to float. Thus, we use the table environment and can use caption instead of captionof. No need for the caption package in this case. This is similar to what David did, except for the input syntax (mybraceleft and mybraceright here) and horizontal spacing around the braces: my braces stay at a constant, customizable distance from the braced material (myhsep).
As already mentioned, this requires two compilation runs to allow eqparbox to do its work.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #4
endminipage
endmybraceleft
endtable
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #8
endminipage
endmybraceright
endtable
enddocument

I am wondering if you could solve this problem.
– user121799
1 hour ago
@user121799 Well, well, well... I love parsing tasks (cf. link title), unfortunately the question you linked to is about 3D in TikZ and I haven't explored this field yet. I'm not even sure I understand what is missing from the already-accepted answer. I guess it has to do with the internal representation of 3D points in TikZ and how they undergo transformations, but I'm afraid I'm still too ignorant in these areas to contribute. :-/
– frougon
1 hour ago
OK, well. Anyway, maybe you can keep this question in the back of your mind if you ever go 3d. It would be great if one could somehow associate three instead of two coordinates to a symbolic coordinate, and if then veclen would spit out the distance between those. And so on. All my attempts to make 3d operations simpler struggled with that obstacle.
– user121799
11 mins ago
add a comment |
I provide two environments, mybraceleft and mybraceright, for conveniently bracing horizontal material. They both produce horizontal material (you can use them in the middle of a paragraph) of just the required size.
One notable property of my solution as compared to David's one is that it produces horizontal material that tightly wraps the tabular environments, or whatever you decide to use in their place (you don't have to guess the 0.45textwidth length). If you reduce the width of these elements, you'll see that my braces remain at the customizable distance myhsep from the braced contents, which is not the case with David's solution (you'll have a larger gap between braces and contents because the minipage will have more whitespace inside, on the left and on the right of the tabular material).
A tricky part of the work with the requirements I set is to find the appropriate width for centering two tabular environments and two captions that go together. For this, I use the eqparbox package. This package relies on proper use of tags (for each tag, it finds the maximum width and allows you to use it as a normal length—this is extremely convenient, great package!). Watch for the tags in the source, they go by three (one for a minipage that tightly encloses two tabular environments and their associated captions). This process requires to compile the document at least twice.
With no table environment
In this solution, the table environment isn't used, therefore nothing floats. This is mainly boxing work. captionof from the caption package is used to produce the customary appearance of standard table captions.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
usepackagecaption
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
noindent
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #4
endminipage
endmybraceleft
vspace2cm
noindent
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #8
endminipage
endmybraceright
enddocument

Wrapping braced material inside tables
This is close to the previous example, the only difference is that we allow two big chunks (each containing four tabular environments) to float. Thus, we use the table environment and can use caption instead of captionof. No need for the caption package in this case. This is similar to what David did, except for the input syntax (mybraceleft and mybraceright here) and horizontal spacing around the braces: my braces stay at a constant, customizable distance from the braced material (myhsep).
As already mentioned, this requires two compilation runs to allow eqparbox to do its work.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #4
endminipage
endmybraceleft
endtable
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #8
endminipage
endmybraceright
endtable
enddocument

I am wondering if you could solve this problem.
– user121799
1 hour ago
@user121799 Well, well, well... I love parsing tasks (cf. link title), unfortunately the question you linked to is about 3D in TikZ and I haven't explored this field yet. I'm not even sure I understand what is missing from the already-accepted answer. I guess it has to do with the internal representation of 3D points in TikZ and how they undergo transformations, but I'm afraid I'm still too ignorant in these areas to contribute. :-/
– frougon
1 hour ago
OK, well. Anyway, maybe you can keep this question in the back of your mind if you ever go 3d. It would be great if one could somehow associate three instead of two coordinates to a symbolic coordinate, and if then veclen would spit out the distance between those. And so on. All my attempts to make 3d operations simpler struggled with that obstacle.
– user121799
11 mins ago
add a comment |
I provide two environments, mybraceleft and mybraceright, for conveniently bracing horizontal material. They both produce horizontal material (you can use them in the middle of a paragraph) of just the required size.
One notable property of my solution as compared to David's one is that it produces horizontal material that tightly wraps the tabular environments, or whatever you decide to use in their place (you don't have to guess the 0.45textwidth length). If you reduce the width of these elements, you'll see that my braces remain at the customizable distance myhsep from the braced contents, which is not the case with David's solution (you'll have a larger gap between braces and contents because the minipage will have more whitespace inside, on the left and on the right of the tabular material).
A tricky part of the work with the requirements I set is to find the appropriate width for centering two tabular environments and two captions that go together. For this, I use the eqparbox package. This package relies on proper use of tags (for each tag, it finds the maximum width and allows you to use it as a normal length—this is extremely convenient, great package!). Watch for the tags in the source, they go by three (one for a minipage that tightly encloses two tabular environments and their associated captions). This process requires to compile the document at least twice.
With no table environment
In this solution, the table environment isn't used, therefore nothing floats. This is mainly boxing work. captionof from the caption package is used to produce the customary appearance of standard table captions.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
usepackagecaption
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
noindent
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #4
endminipage
endmybraceleft
vspace2cm
noindent
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #8
endminipage
endmybraceright
enddocument

Wrapping braced material inside tables
This is close to the previous example, the only difference is that we allow two big chunks (each containing four tabular environments) to float. Thus, we use the table environment and can use caption instead of captionof. No need for the caption package in this case. This is similar to what David did, except for the input syntax (mybraceleft and mybraceright here) and horizontal spacing around the braces: my braces stay at a constant, customizable distance from the braced material (myhsep).
As already mentioned, this requires two compilation runs to allow eqparbox to do its work.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #4
endminipage
endmybraceleft
endtable
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #8
endminipage
endmybraceright
endtable
enddocument

I provide two environments, mybraceleft and mybraceright, for conveniently bracing horizontal material. They both produce horizontal material (you can use them in the middle of a paragraph) of just the required size.
One notable property of my solution as compared to David's one is that it produces horizontal material that tightly wraps the tabular environments, or whatever you decide to use in their place (you don't have to guess the 0.45textwidth length). If you reduce the width of these elements, you'll see that my braces remain at the customizable distance myhsep from the braced contents, which is not the case with David's solution (you'll have a larger gap between braces and contents because the minipage will have more whitespace inside, on the left and on the right of the tabular material).
A tricky part of the work with the requirements I set is to find the appropriate width for centering two tabular environments and two captions that go together. For this, I use the eqparbox package. This package relies on proper use of tags (for each tag, it finds the maximum width and allows you to use it as a normal length—this is extremely convenient, great package!). Watch for the tags in the source, they go by three (one for a minipage that tightly encloses two tabular environments and their associated captions). This process requires to compile the document at least twice.
With no table environment
In this solution, the table environment isn't used, therefore nothing floats. This is mainly boxing work. captionof from the caption package is used to produce the customary appearance of standard table captions.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
usepackagecaption
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
noindent
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #4
endminipage
endmybraceleft
vspace2cm
noindent
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionoftableTable #8
endminipage
endmybraceright
enddocument

Wrapping braced material inside tables
This is close to the previous example, the only difference is that we allow two big chunks (each containing four tabular environments) to float. Thus, we use the table environment and can use caption instead of captionof. No need for the caption package in this case. This is similar to what David did, except for the input syntax (mybraceleft and mybraceright here) and horizontal spacing around the braces: my braces stay at a constant, customizable distance from the braced material (myhsep).
As already mentioned, this requires two compilation runs to allow eqparbox to do its work.
documentclassarticle
usepackage[hscale=0.65]geometry % enlarge margins a little bit for the example
usepackageeqparbox
makeatletter
newsaveboxmybox
newlengthmyhsep % Horizontal separation between brace and contents
setlengthmyhsep0.7em
newenvironmentmybraceleft%
beginlrboxmybox
%
endlrbox%
$m@th left kernmyhsep vcenterhboxuseboxmybox right.$%
kern-nulldelimiterspace
ignorespacesafterend
newenvironmentmybraceright%
beginlrboxmybox
%
endlrbox%
leavevmode
kern-nulldelimiterspace
$m@th left. vcenterhboxuseboxmybox kernmyhsep right$%
ignorespacesafterend
makeatother
begindocument
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag1
centering
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #1
bigskip
begineqminipage[c]tag1
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #2
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceleft
beginminipageeqboxwidthtag2
centering
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #3
bigskip
begineqminipage[c]tag2
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #4
endminipage
endmybraceleft
endtable
begintable
centering
beginmybraceleft
beginminipageeqboxwidthtag3
centering
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #5
bigskip
begineqminipage[c]tag3
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #6
endminipage
endmybraceleft% spaces would be ignored here anyway because of the
% ignorespacesafterend we used
hfill
beginmybraceright
beginminipageeqboxwidthtag4
centering
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #7
bigskip
begineqminipage[c]tag4
begintabularc
hline
a & b & c & d & e & f & g & h\
hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\
hline
a & b & c & d & e & f & g & h\
hline
endtabular
endeqminipage%
captionTable #8
endminipage
endmybraceright
endtable
enddocument

edited 3 hours ago
answered 7 hours ago
frougonfrougon
7,1851 gold badge13 silver badges23 bronze badges
7,1851 gold badge13 silver badges23 bronze badges
I am wondering if you could solve this problem.
– user121799
1 hour ago
@user121799 Well, well, well... I love parsing tasks (cf. link title), unfortunately the question you linked to is about 3D in TikZ and I haven't explored this field yet. I'm not even sure I understand what is missing from the already-accepted answer. I guess it has to do with the internal representation of 3D points in TikZ and how they undergo transformations, but I'm afraid I'm still too ignorant in these areas to contribute. :-/
– frougon
1 hour ago
OK, well. Anyway, maybe you can keep this question in the back of your mind if you ever go 3d. It would be great if one could somehow associate three instead of two coordinates to a symbolic coordinate, and if then veclen would spit out the distance between those. And so on. All my attempts to make 3d operations simpler struggled with that obstacle.
– user121799
11 mins ago
add a comment |
I am wondering if you could solve this problem.
– user121799
1 hour ago
@user121799 Well, well, well... I love parsing tasks (cf. link title), unfortunately the question you linked to is about 3D in TikZ and I haven't explored this field yet. I'm not even sure I understand what is missing from the already-accepted answer. I guess it has to do with the internal representation of 3D points in TikZ and how they undergo transformations, but I'm afraid I'm still too ignorant in these areas to contribute. :-/
– frougon
1 hour ago
OK, well. Anyway, maybe you can keep this question in the back of your mind if you ever go 3d. It would be great if one could somehow associate three instead of two coordinates to a symbolic coordinate, and if then veclen would spit out the distance between those. And so on. All my attempts to make 3d operations simpler struggled with that obstacle.
– user121799
11 mins ago
I am wondering if you could solve this problem.
– user121799
1 hour ago
I am wondering if you could solve this problem.
– user121799
1 hour ago
@user121799 Well, well, well... I love parsing tasks (cf. link title), unfortunately the question you linked to is about 3D in TikZ and I haven't explored this field yet. I'm not even sure I understand what is missing from the already-accepted answer. I guess it has to do with the internal representation of 3D points in TikZ and how they undergo transformations, but I'm afraid I'm still too ignorant in these areas to contribute. :-/
– frougon
1 hour ago
@user121799 Well, well, well... I love parsing tasks (cf. link title), unfortunately the question you linked to is about 3D in TikZ and I haven't explored this field yet. I'm not even sure I understand what is missing from the already-accepted answer. I guess it has to do with the internal representation of 3D points in TikZ and how they undergo transformations, but I'm afraid I'm still too ignorant in these areas to contribute. :-/
– frougon
1 hour ago
OK, well. Anyway, maybe you can keep this question in the back of your mind if you ever go 3d. It would be great if one could somehow associate three instead of two coordinates to a symbolic coordinate, and if then veclen would spit out the distance between those. And so on. All my attempts to make 3d operations simpler struggled with that obstacle.
– user121799
11 mins ago
OK, well. Anyway, maybe you can keep this question in the back of your mind if you ever go 3d. It would be great if one could somehow associate three instead of two coordinates to a symbolic coordinate, and if then veclen would spit out the distance between those. And so on. All my attempts to make 3d operations simpler struggled with that obstacle.
– user121799
11 mins ago
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%2f503397%2fbraces-spanning-multiple-tables-whole-tables-not-rows-or-pages%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
You really want the braces not to encompass the “Table 2” and “Table 4” captions?
– frougon
8 hours ago
@frougon I think either way is probably fine. Dealers choice :) Or both if you know both. Someone else might need the alternative
– tjt263
8 hours ago