From c79ab86a74d10099e404a589e6026cf56426d2c8 Mon Sep 17 00:00:00 2001 From: Stephen Mildenhall Date: Mon, 17 Mar 2025 08:10:04 +0000 Subject: [PATCH] table float format; tabs; markdown input --- .gitignore | 2 + README.rst | 36 + greater_tables/__init__.py | 2 +- greater_tables/greater_tables.py | 455 ++- tests/single-table.html | 356 ++ tests/tables.html | 2680 ++++++++------- tests/tables.ipynb | 5244 ++++++++++++++++++++++++++++++ tests/tables.pdf | Bin 115322 -> 127229 bytes tests/tables.qmd | 252 +- tests/tables.tex | 1021 +++--- 10 files changed, 8322 insertions(+), 1726 deletions(-) create mode 100644 README.rst create mode 100644 tests/single-table.html create mode 100644 tests/tables.ipynb diff --git a/.gitignore b/.gitignore index 108754e..ede8b3d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,8 @@ __pycache__/ *.so .idea/* tests/tables_files/* +tests/quarto_doc/* +tests/*.quarto_ipynb tests/.* # Distribution / packaging .Python diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..a46a99a --- /dev/null +++ b/README.rst @@ -0,0 +1,36 @@ +.. image:: https://img.shields.io/readthedocs/greater_tables_project + :alt: Read the Docs + +Release Notes +=============== + +1.0.0 +------ + +* Allow input via list of lists, or markdown table +* Specify overall float format for whole table +* Specify column alingment with 'llrc' style string +* ``show_index`` option +* Added more tests +* Docs updated +* Set tabs for width; use of width in HTML format. + + +0.6.0 +------ + +* Initial release + +Early development +------------------- + +* 0.1.0 - 0.5.0: Early development +* tikz code from great.pres_manager + +TODO +===== + +* Index aligners + + +https://shields.io/badges/read-the-docs \ No newline at end of file diff --git a/greater_tables/__init__.py b/greater_tables/__init__.py index 4b8d053..c125f64 100644 --- a/greater_tables/__init__.py +++ b/greater_tables/__init__.py @@ -1,4 +1,4 @@ -__version__ = '0.6.0' +__version__ = '1.0.0' __project__ = 'greater_tables' __author__ = 'Stephen J Mildenhall' diff --git a/greater_tables/greater_tables.py b/greater_tables/greater_tables.py index 1e164e4..604ac5a 100644 --- a/greater_tables/greater_tables.py +++ b/greater_tables/greater_tables.py @@ -49,10 +49,12 @@ class GT(object): aligners=None, ratio_cols=None, year_cols=None, + show_index=True, default_integer_str='{x:,d}', default_float_str='{x:,.3f}', default_date_str='%Y-%m-%d', default_ratio_str='{x:.1%}', + table_float_format=None, table_hrule_width=1, table_vrule_width=1, hrule_widths=None, @@ -69,6 +71,9 @@ class GT(object): pef_lower=-3, pef_upper=6, cast_to_floats=True, + header_row=True, + tabs=None, + equal=False, debug=False): """ Create a greater_tables formatting object. @@ -79,15 +84,17 @@ class GT(object): Recommended usage is to derive from GT and set defaults suitable to your particular application. In that way you can maintain a "house-style" - :param df: target DataFrame + :param df: target DataFrame or list of lists or markdown table string :param caption: table caption, optional :param aligners: None or dict (type or colname) -> left | center | right :param ratio_cols: None, or "all" or list of column names treated as ratios. Set defaults in derived class suitable to application. :param year_cols: None, or "all" or list of column names treated as years (no commas, no decimals). Set defaults in derived class suitable to application. + :param show_index: if True, show the index columns, default True :param default_integer_str: format f-string for integers, default '{x:,d}' :param default_float_str: format f-string for floats, default '{x:,.3f}' :param default_date_str: format f-string for dates, default '%Y-%m-%d'. NOTE: no braces or x! :param default_ratio_str: format f-string for ratios, default '{x:.1%}' + :param table_float_format: None or format string for floats in the table format function, applied to entire table, default None :param cast_to_floats: if True, try to cast all non-integer, non-date columns to floats :param table_hrule_width: width of the table top, botton and header hrule, default 1 :param table_vrule_width: width of the table vrule, separating the index from the body, default 1 @@ -104,8 +111,32 @@ class GT(object): :param pef_precision: precision (digits after period) for pandas engineering format, default 3. :param pef_lower: apply engineering format to floats with absolute value < 10**pef_lower; default -3. :param pef_upper: apply engineering format to floats with absolute value > 10**pef_upper; default 6. + :param header_row: True: use first row as headers; False no headings. Default True + :param tabs: None or list of column widths in characters or a common int or float width. (It is converted into em; one character is about 0.5em on average; digits are exactly 0.5em.) If None, will be calculated. Default None. + :param equal: if True, set all column widths equal. Default False. :param debug: if True, add id to caption and use colored lines in table, default False. """ + # deal with alternative input modes + if isinstance(df, pd.DataFrame): + # usual use case + pass + elif isinstance(df, pd.Series): + df = df.to_frame() + elif isinstance(df, list): + df = pd.DataFrame(df) + # override this selection come what may + show_index = False + if header_row: + # Set first row as column names + df.columns = df.iloc[0] + # Drop first row and reset index + df = df[1:].reset_index(drop=True) + elif isinstance(df, str): + df, aligners = GT.md_to_df(df) + show_index = False + else: + raise ValueError('df must be a DataFrame, a list of lists, or a markdown table string') + if not df.columns.is_unique: raise ValueError('df column names are not unique') self.df = df.copy(deep=True) # the object being formatted @@ -118,14 +149,16 @@ class GT(object): self.caption = caption + (' (id: ' + self.df_id + ')' if self.debug else '') # before messing - self.nindex = self.df.index.nlevels + self.show_index = show_index + self.nindex = self.df.index.nlevels if self.show_index else 0 self.ncolumns = self.df.columns.nlevels self.ncols = self.df.shape[1] self.dt = self.df.dtypes with warnings.catch_warnings(): - warnings.simplefilter("ignore", category=pd.errors.PerformanceWarning) - self.df = self.df.reset_index(drop=False, col_level=self.df.columns.nlevels - 1) + if self.show_index: + warnings.simplefilter("ignore", category=pd.errors.PerformanceWarning) + self.df = self.df.reset_index(drop=False, col_level=self.df.columns.nlevels - 1) # want the new index to be ints - that is not default if old was multiindex self.df.index = np.arange(self.df.shape[0], dtype=int) self.index_change_level = GT.changed_column(self.df.iloc[:, :self.nindex]) @@ -203,16 +236,20 @@ class GT(object): if aligners is None: # not using aligners = [] + elif isinstance(aligners, str): + # lrc for each column + aligners = {c: a for c, a in zip(self.df.columns, aligners)} self.df_aligners = [] lrc = {'l': 'grt-left', 'r': 'grt-right', 'c': 'grt-center'} - # FIX INDEX ALIGNERS HERE + # TODO: index aligners for i, c in enumerate(self.df.columns): - if i < self.nindex: + # test aligners BEFORE index! + if c in aligners: + self.df_aligners.append(lrc.get(aligners[c], 'grt-center')) + elif i < self.nindex: # index -> left self.df_aligners.append('grt-left') - elif c in aligners: - self.df_aligners.append(lrc.get(aligners[c], 'grt-center')) elif c in self.ratio_cols or i in self.float_col_indices or i in self.integer_col_indices: # number -> right self.df_aligners.append('grt-right') @@ -236,6 +273,8 @@ class GT(object): self.pef_lower = pef_lower self.pef_upper = pef_upper self._pef = None + self.table_float_format = table_float_format + self.default_float_formatter = None self.hrule_widths = hrule_widths or (0, 0, 0) self.vrule_widths = vrule_widths or (0, 0, 0) self.table_hrule_width = table_hrule_width @@ -245,6 +284,15 @@ class GT(object): self.font_caption = font_caption self.font_bold_index = font_bold_index self.sparsify_columns = sparsify_columns + if tabs is None: + self.tabs = None + elif isinstance(tabs, (int, float)): + self.tabs = (tabs,) + elif isinstance(tabs, (np.ndarray, list, tuple)): + self.tabs = tabs # Already iterable, self.tabs = as is + else: + self.tabs = [tabs] # Fallback for anything else + self.equal = equal if padding_trbl is None: if spacing == 'tight': @@ -313,12 +361,17 @@ class GT(object): def default_formatter(self, x): """Universal formatter for other types.""" try: - i = int(x) f = float(x) + if self.default_float_formatter: + return self.default_float_formatter(f) + try: + i = int(x) + except ValueError: + i = int(f) if i == f: return self.default_integer_str.format(x=i) else: - # TODo BEEF UP? + # TODO BEEF UP? return self.default_float_str.format(x=f) except (TypeError, ValueError): return str(x) @@ -373,10 +426,10 @@ class GT(object): return fmt.format(x=x) # well and good but results in ugly differences # by entries in a column - if x == int(x) and np.abs(x) < pu: - return f'{x:,.0f}.' - else: - return fmt.format(x=x) + # if x == int(x) and np.abs(x) < pu: + # return f'{x:,.0f}.' + # else: + # return fmt.format(x=x) except (ValueError, TypeError): return str(x) return ff @@ -391,6 +444,32 @@ class GT(object): each column. """ # because of non-unique indexes, index by position not name + if self.table_float_format is not None: + if callable(self.table_float_format): + # wrap in error protections + def ff(x): + try: + return self.table_float_format(x=x) + except ValueError: + return str(x) + except Exception as e: + logger.error(f'Custom float function raised {e=}') + self.default_float_formatter = ff + else: + if type(self.table_float_format) != str: + raise ValueError('table_float_format must be a string or a function') + fmt = self.table_float_format + def ff(x): + try: + return fmt.format(x=x) + except ValueError: + return str(x) + except Exception as e: + logger.error(f'Custom float format string raised {e=}') + self.default_float_formatter = ff + else: + self.default_float_formatter = False + if self._df_formatters is None: self._df_formatters = [] for i, c in enumerate(self.df.columns): @@ -408,7 +487,7 @@ class GT(object): self._df_formatters.append(self.default_integer_formatter) elif i in self.float_col_indices: # trickier approach... - self._df_formatters.append(self.make_float_formatter(self.df.iloc[:, i])) + self._df_formatters.append(self.default_float_formatter or self.make_float_formatter(self.df.iloc[:, i])) else: # print(f'{i} default') self._df_formatters.append(self.default_formatter) @@ -429,7 +508,8 @@ class GT(object): """ return self.html - def make_style(self): + def make_style(self, tabs): + """Write out custom CSS for the table.""" if self.debug: head_tb = '#0ff' body_b = '#f0f' @@ -457,13 +537,16 @@ class GT(object): # for local use padt, padr, padb, padl = self.padt, self.padr, self.padb, self.padl - style = f''' + style = [f''' -''' - return style +'''] + for i, w in enumerate(tabs): + style.append(f' #{self.df_id} .grt-c-{i} {{ width: {w}em; }}') + style.append('') + logger.info('CREATED CSS') + return '\n'.join(style) def make_html(self): - """Convert a pandas DataFrame to an HTML table with sparsification.""" + """Convert a pandas DataFrame to an HTML table.""" index_name_to_level = dict(zip(self.raw_df.index.names, range(self.nindex))) index_change_level = self.index_change_level.map(index_name_to_level) # this is easier and computed in the init @@ -564,6 +650,36 @@ class GT(object): idx_header = bit.iloc[:self.nindex, :self.ncolumns] columns = bit.iloc[self.nindex:, :self.ncolumns] + colw, tabs = GT.estimate_column_widths(self.df, nc_index=self.nindex, scale=1, equal=self.equal) + if self.debug: + print(f'Input {self.tabs=}\nComputed {tabs=}') + if self.tabs is not None: + if len(tabs) == len(self.tabs): + tabs = self.tabs + elif len(self.tabs) == 1: + tabs = self.tabs * len(tabs) + else: + logger.error(f'{self.tabs=} must be None, a single number, or a list of numbers of the correct length. Ignoring.') + # print('HTML ' + ', '.join([f'{c:,.2f}' for c in tabs])) + + # set column widths; tabs returns lengths of strings in each column + # for proportional fonts, average char is 0.4 to 0.5 em but numbers with + # tabular-nums are fixed 0.5, so use that + # scale: want tables about 150-200 char wide, 1 char = 0.5 px size of font + # so what 75-100 em wide in total + # add the padding + # TODO FONT SIZE + # /4 works well for the tests (handles dates) but seems a bit illogical... + tabs = np.array(tabs) + (self.padl + self.padr) / 12 # guessing font size... + # em_per_char = 0.5; true exactly for tabular-nums + em_per_char = 0.6 + tabs = tabs * em_per_char + # this gets stripped out by quarto, so make part of style + html.append('') + for w in tabs: + html.append(f'') + html.append('') + # TODO Add header aligners # this is TRANSPOSED!! if self.sparsify_columns: @@ -571,10 +687,10 @@ class GT(object): for i in range(self.ncolumns): # one per row of columns m index, usually only 1 html.append("") - for j, r in enumerate(idx_header.iloc[:, i]): - # columns one per level of index - html.append(f'{r}') - cum_col = 0 # keep track of where we are up to + if self.show_index: + for j, r in enumerate(idx_header.iloc[:, i]): + # columns one per level of index + html.append(f'{r}') # if not for col span issue you could just to this: # for j in range(self.ncols): # hrule = f'grt-bhrule-{i}' if i < self.ncolumns - 1 else '' @@ -589,6 +705,7 @@ class GT(object): # here, the groupby needs to consider all levels at and above i # this concats all the levels # need :i+1 to get down to the ith level + cum_col = 0 # keep track of where we are up to for j, (nm, g) in enumerate(groupby(columns.iloc[:, :i+1]. apply(lambda x: ':::'.join(str(i) for i in x), axis=1))): # ::: needs to be something that does not appear in the col names @@ -599,10 +716,16 @@ class GT(object): colspan = sum(1 for _ in g) if 0 < j: vrule = f'grt-vrule-{column_change_level[cum_col]}' - elif j == 0: - # start with the first column come what may + elif j == 0 and self.show_index: + # start with the first column if showing index vrule = f'grt-vrule-index' - html.append(f'{nm}') + else: + vrule = '' + if j == 0 and not self.show_index: + # first column, no index, left align label + html.append(f'{nm}') + else: + html.append(f'{nm}') cum_col += colspan html.append("") html.append("") @@ -611,9 +734,10 @@ class GT(object): for i in range(self.ncolumns): # one per row of columns m index, usually only 1 html.append("") - for j, r in enumerate(idx_header.iloc[:, i]): - # columns one per level of index - html.append(f'{r}') + if self.show_index: + for j, r in enumerate(idx_header.iloc[:, i]): + # columns one per level of index + html.append(f'{r}') for j, r in enumerate(columns.iloc[:, i]): # one per column of dataframe # figure how high up mindex the vrules go @@ -621,7 +745,7 @@ class GT(object): hrule = f'grt-bhrule-{i}' if i < self.ncolumns - 1 else '' if 0 < j < self.ncols and i >= column_change_level[j]: vrule = f'grt-vrule-{column_change_level[j]}' - elif j == 0: + elif j == 0 and self.show_index: # start with the first column come what may vrule = f'grt-vrule-index' else: @@ -636,29 +760,36 @@ class GT(object): # one per row of dataframe html.append("") hrule = '' - for j, c in enumerate(r.iloc[:self.nindex]): - # dx = data in index - # if this is the level that changes for this row - # will use a top rule hence omit i = 0 which already has an hrule - if i > 0 and hrule == '' and j == index_change_level[i]: - hrule = f'grt-hrule-{j}' - # html.append(f'{c}') - html.append(f'{c}') + if self.show_index: + for j, c in enumerate(r.iloc[:self.nindex]): + # dx = data in index + # if this is the level that changes for this row + # will use a top rule hence omit i = 0 which already has an hrule + if i > 0 and hrule == '' and j == index_change_level[i]: + hrule = f'grt-hrule-{j}' + # html.append(f'{c}') + col_id = f'grt-c-{j}' + html.append(f'{c}') for j, c in enumerate(r.iloc[self.nindex:]): # first col left handled by index/body divider if 0 < j < self.ncols: vrule = f'grt-vrule-{column_change_level[j]}' - elif j == 0: + elif j == 0 and self.show_index: # start with the first column come what may vrule = f'grt-vrule-index' + else: + vrule = '' # html.append(f'{c}') - html.append(f'{c}') + col_id = f'grt-c-{j+self.nindex}' + html.append(f'{c}') html.append("") html.append("") text = '\n'.join(html) - text = GT.clean_html_tex(text) + self.df_html = GT.clean_html_tex(text) logger.info('CREATED HTML') - return text + self.df_style = self.make_style(tabs) + + return self.df_html def clean_style(self, soup): """Minify CSS inside + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Table 1

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
indexlevel_0level_1202520262027
0GAAPUnderwriting Result-394.81
1GAAPNet Investment Income60.5266.57
2GAAPOperating Result-334.2966.57
3GAAPDividends
+ +

Table 2

+ + +

Some text above the table.

+ +
+ + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1. A table with varied column widths.
ABC
years!IntFloatFloat3Longer Text
2000-100,000 2.389p-1,601.002025-03-14once upon a time, once upon a time, once upon a time, once upon a time
2001-91,667 22.217p-1,367.622025-03-26 risk is hard to define
2002-83,333 206.619p-1,134.252025-04-07 not in Kansas anymore
2003-75,000 1.922n-900.882025-04-19 neutrinos are hard to detect
2004-66,667 17.870n-667.502025-05-01 Adam Smith is the father of economics
2005-58,333 166.196n-434.122025-05-13once upon a time
Footer 1 stuff. This is very long. This is very long. This is very long. This is very long. Footer 2 stuff.
+
+ +

Some text below the table.

+ + + diff --git a/tests/tables.html b/tests/tables.html index eea0540..04ca3b8 100644 --- a/tests/tables.html +++ b/tests/tables.html @@ -7,7 +7,7 @@ - + All Tables Test - New TestDFGenerator test_suite - + +
++++++++ @@ -496,7 +505,7 @@ Table 2: Quarto generated caption - + @@ -504,7 +513,7 @@ Table 2: Quarto generated caption - + @@ -512,7 +521,7 @@ Table 2: Quarto generated caption - + @@ -520,7 +529,7 @@ Table 2: Quarto generated caption - + @@ -528,7 +537,7 @@ Table 2: Quarto generated caption - + @@ -544,7 +553,7 @@ Table 2: Quarto generated caption - + @@ -552,7 +561,7 @@ Table 2: Quarto generated caption - + @@ -560,7 +569,7 @@ Table 2: Quarto generated caption - + @@ -568,7 +577,7 @@ Table 2: Quarto generated caption - + @@ -592,7 +601,7 @@ Table 2: Quarto generated caption - + @@ -600,7 +609,7 @@ Table 2: Quarto generated caption - + @@ -608,7 +617,7 @@ Table 2: Quarto generated caption - + @@ -640,7 +649,7 @@ Table 2: Quarto generated caption - + @@ -648,7 +657,7 @@ Table 2: Quarto generated caption - + @@ -698,39 +707,43 @@ Table 2: Quarto generated caption -

Illustrate some alternatives.

+

Here are some alternatives:

+
Code
```{python}
-#| label: tbl-hard-rules-3
-#| tbl-cap: Quarto generated caption
-
-display(sGT(hard.sample(5).sort_index(), 'No v rules, but h rules',
+#| label: tbl-hard-rules-3a
+#| tbl-cap: No V rules but hrules (Quarto generated caption)
+display(sGT(hard.sample(5).sort_index(),
+        caption='GT caption No v rules, but h rules',
         vrule_widths=(0,0,0),
         hrule_widths=(1,0,0)))
-
-display(sGT(hard.sample(5).sort_index(),
-        'Change default date and integer formats',
-        default_date_str='%m-%d', default_integer_str='[{x:d}]'))
-
-display(sGT(hard.sample(5).sort_index(),
-        'Change padding, debug mode lines',
-        default_date_str='%m-%d', default_integer_str='[{x:d}]',
-        padding_trbl=(10, 10, 20, 20), debug=True))
-```
+```
-
+
-
-Table 3: Quarto generated caption +
+Table 3: No V rules but hrules (Quarto generated caption)
-
+
- -
A table with varied columns.
-100,000 2.389p -1,601.002025-03-132025-03-14 once upon a time
-91,667 22.217p -1,367.622025-03-252025-03-26 risk is hard to define
-83,333 206.619p -1,134.252025-04-062025-04-07 not in Kansas anymore
-75,000 1.922n -900.882025-04-182025-04-19 neutrinos are hard to detect
-66,667 17.870n -667.502025-04-302025-05-01 Adam Smith is the father of economics
-50,000 1.546u -200.752025-05-252025-05-26 risk is hard to define
-41,667 14.374u 32.622025-06-062025-06-07 not in Kansas anymore
-33,333 133.681u 266.002025-06-182025-06-19 neutrinos are hard to detect
-25,000 1.243m 499.382025-06-302025-07-01 Adam Smith is the father of economics
0 1.000 1,199.502025-08-062025-08-07 not in Kansas anymore
8,333 9.300 1,432.882025-08-182025-08-19 neutrinos are hard to detect
16,667 86.490 1,666.252025-08-302025-08-31 Adam Smith is the father of economics
50,000 646.990k 2,599.752025-10-182025-10-19 neutrinos are hard to detect
58,333 6.017M 2,833.122025-10-302025-10-31 Adam Smith is the father of economics
- + +
No v rules, but h rules
+ ++++++++ @@ -749,38 +762,38 @@ Table 3: Quarto generated caption - - - - - + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -791,11 +804,40 @@ Table 3: Quarto generated caption
GT caption No v rules, but h rules
2007-41,667 14.374u32.622025-06-062002-83,333 206.619p-1,134.252025-04-07 not in Kansas anymore
20120 1.0001,199.502025-08-06 not in Kansas anymore2004-66,667 17.870n-667.502025-05-01 Adam Smith is the father of economics
201633,333 7.481k2,133.002025-09-24 risk is hard to define
202066,667 55.958M3,066.502025-11-12201525,000 804.3571,899.622025-09-12 once upon a time
201850,000 646.990k2,599.752025-10-19 neutrinos are hard to detect
2021 75,000 520.411M
+ + + + +
+
+Code +
```{python}
+#| label: tbl-hard-rules-3b
+#| tbl-cap: Change date and integer formats  (Quarto generated caption)
+display(sGT(hard.sample(5).sort_index(),
+        caption='Change default date and integer formats',
+        default_date_str='%m-%d', default_integer_str='[{x:d}]'))
+```
+
+
+
+
+Table 4: Change date and integer formats (Quarto generated caption) +
+
- - + +
++++++++ @@ -814,12 +856,12 @@ Table 3: Quarto generated caption - - - - - - + + + + + + @@ -830,120 +872,154 @@ Table 3: Quarto generated caption - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
Change default date and integer formats
2001[-91667] 22.217p-1,367.6203-25 risk is hard to define2003[-75000] 1.922n-900.8804-19 neutrinos are hard to detect
2005once upon a time
2015[25000] 804.3571,899.6209-12once upon a time
2019[58333] 6.017M2,833.1210-30 Adam Smith is the father of economics
2021[75000] 520.411M3,299.8811-242011[-8333] 107.527m966.1207-25 risk is hard to define
2018[50000] 646.990k2,599.7510-19 neutrinos are hard to detect
2023[91667] 45.010G3,766.6212-18 neutrinos are hard to detect
+
+
+
+
+
+
+Code +
```{python}
+#| label: tbl-hard-rules-3c
+#| tbl-cap: Change padding and debug mode, boxes (Quarto generated caption)
+display(sGT(hard.sample(5).sort_index(),
+        caption='Change padding, debug mode lines',
+        padding_trbl=(10, 10, 20, 20), debug=True))
+```
+
+
+
+
+Table 5: Change padding and debug mode, boxes (Quarto generated caption) +
+
- - +
Change padding, debug mode lines (id: TSQHMUQ4QTEY5)
+ ++++++++ @@ -962,44 +1038,44 @@ Table 3: Quarto generated caption - - - - - - + + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + +
Change padding, debug mode lines (id: TEEUJQBUI2GUC)
2010[-16667] 11.562m732.7507-13once upon a time2004-66,667 17.870n-667.502025-05-01 Adam Smith is the father of economics
2011[-8333] 107.527m966.1207-252006-50,000 1.546u-200.752025-05-26 risk is hard to define
2015[25000] 804.3571,899.6209-12once upon a time2008-33,333 133.681u266.002025-06-19 neutrinos are hard to detect
2019[58333] 6.017M2,833.1210-30 Adam Smith is the father of economics202175,000 520.411M3,299.882025-11-24 risk is hard to define
2024[100000] 418.596G4,000.0012-31 Adam Smith is the father of economics202283,333 4.840G3,533.252025-12-06 not in Kansas anymore
@@ -1008,107 +1084,120 @@ Table 3: Quarto generated caption
-

Here is the raw output.

-
+

Here is the raw HTML and LaTeX output.

+
Code -
f = sGT(hard.head(4), debug=True)
-print('HTML output\n')
-print(f._repr_html_())
-
-print('\n\n\nTeX output\n')
-print(f._repr_latex_())
+
f = sGT(hard.head(4), debug=True)
+print('HTML output\n')
+print(f._repr_html_())
+
+print('\n\n\nTeX output\n')
+print(f._repr_latex_())
HTML output
 
 <div class="greater-table">
 <style>
-    #T5OTIZGG6UTFR  {
+    #TIPUZXJD7G5EM  {
     border-collapse: collapse;
     font-family: "Roboto", "Open Sans Condensed", "Arial", 'Segoe UI', sans-serif;
     font-size: 0.9em;
     width: auto;
+    /* tb and lr 
+    width: fit-content; */
+    margin: 10px auto; 
     border: none;
     overflow: auto;
+    margin-left: auto;
+    margin-right: auto;
     }
     /* tag formats */
-    #T5OTIZGG6UTFR caption {
+    #TIPUZXJD7G5EM caption {
         padding: 8px 10px 4px 10px;
         font-size: 0.99em;
         text-align: center;
         font-weight: normal;
         caption-side: top;
     }
-    #T5OTIZGG6UTFR thead {
+    #TIPUZXJD7G5EM thead {
         /* top and bottom of header */
         border-top: 1px solid #0ff;
         border-bottom: 1px solid #0ff;
         font-size: 0.99em;
         }
-    #T5OTIZGG6UTFR tbody {
+    #TIPUZXJD7G5EM tbody {
         /* bottom of body */
         border-bottom: 1px solid #f0f;
         }
-    #T5OTIZGG6UTFR th  {
+    #TIPUZXJD7G5EM th  {
         vertical-align: bottom;
         padding: 8px 10px 8px 10px;
     }
-    #T5OTIZGG6UTFR td {
+    #TIPUZXJD7G5EM td {
         /* top, right, bottom left cell padding */
         padding: 4px 10px 4px 10px;
         vertical-align: top;
     }
     /* class overrides */
-    #T5OTIZGG6UTFR .grt-hrule-0 {
+    #TIPUZXJD7G5EM .grt-hrule-0 {
         border-top: 0px solid #f00;
     }
-    #T5OTIZGG6UTFR .grt-hrule-1 {
+    #TIPUZXJD7G5EM .grt-hrule-1 {
         border-top: 0px solid #b00;
     }
-    #T5OTIZGG6UTFR .grt-hrule-2 {
+    #TIPUZXJD7G5EM .grt-hrule-2 {
         border-top: 0px solid #900;
     }
     /* for the header, there if you have v lines you want h lines
        hence use vrule_widths */
-    #T5OTIZGG6UTFR .grt-bhrule-0 {
+    #TIPUZXJD7G5EM .grt-bhrule-0 {
         border-bottom: 1.5px solid #f00;
     }
-    #T5OTIZGG6UTFR .grt-bhrule-1 {
+    #TIPUZXJD7G5EM .grt-bhrule-1 {
         border-bottom: 1px solid #b00;
     }
-    #T5OTIZGG6UTFR .grt-vrule-index {
+    #TIPUZXJD7G5EM .grt-vrule-index {
         border-left: 1.5px solid #0f0;
     }
-    #T5OTIZGG6UTFR .grt-vrule-0 {
+    #TIPUZXJD7G5EM .grt-vrule-0 {
         border-left: 1.5px solid #0f0;
     }
-    #T5OTIZGG6UTFR .grt-vrule-1 {
+    #TIPUZXJD7G5EM .grt-vrule-1 {
         border-left: 1px solid #0a0;
     }
-    #T5OTIZGG6UTFR .grt-vrule-2 {
+    #TIPUZXJD7G5EM .grt-vrule-2 {
         border-left: 0.5px solid #090;
     }
-    #T5OTIZGG6UTFR .grt-left {
+    #TIPUZXJD7G5EM .grt-left {
         text-align: left;
     }
-    #T5OTIZGG6UTFR .grt-center {
+    #TIPUZXJD7G5EM .grt-center {
         text-align: center;
     }
-    #T5OTIZGG6UTFR .grt-right {
+    #TIPUZXJD7G5EM .grt-right {
         text-align: right;
         font-variant-numeric: tabular-nums;
     }
-    #T5OTIZGG6UTFR .grt-head {
+    #TIPUZXJD7G5EM .grt-head {
         font-family: "Times New Roman", 'Courier New';
         font-size: 0.99em;
     }
-    #T5OTIZGG6UTFR .grt-bold {
+    #TIPUZXJD7G5EM .grt-bold {
         font-weight: bold;
     }
 </style>
-<table id="T5OTIZGG6UTFR">
-<caption> (id: T5OTIZGG6UTFR)</caption>
+<table id="TIPUZXJD7G5EM">
+<caption> (id: TIPUZXJD7G5EM)</caption>
+<colgroup>
+<col style="width: 3.0em;"/>
+<col style="width: 4.0em;"/>
+<col style="width: 4.5em;"/>
+<col style="width: 4.5em;"/>
+<col style="width: 5.0em;"/>
+<col style="width: 14.5em;"/>
+</colgroup>
 <thead>
 <tr>
 <th class="grt-left"></th>
@@ -1131,7 +1220,7 @@ Table 3: Quarto generated caption
 <td class="grt-right grt-vrule-index">-100,000</td>
 <td class="grt-right grt-vrule-1"> 2.389p</td>
 <td class="grt-right grt-vrule-0">-1,601.00</td>
-<td class="grt-center grt-vrule-1">2025-03-13</td>
+<td class="grt-center grt-vrule-1">2025-03-14</td>
 <td class="grt-left grt-vrule-0">once upon a time</td>
 </tr>
 <tr>
@@ -1139,7 +1228,7 @@ Table 3: Quarto generated caption
 <td class="grt-right grt-hrule-0 grt-vrule-index">-91,667</td>
 <td class="grt-right grt-hrule-0 grt-vrule-1"> 22.217p</td>
 <td class="grt-right grt-hrule-0 grt-vrule-0">-1,367.62</td>
-<td class="grt-center grt-hrule-0 grt-vrule-1">2025-03-25</td>
+<td class="grt-center grt-hrule-0 grt-vrule-1">2025-03-26</td>
 <td class="grt-left grt-hrule-0 grt-vrule-0"> risk is hard to define</td>
 </tr>
 <tr>
@@ -1147,7 +1236,7 @@ Table 3: Quarto generated caption
 <td class="grt-right grt-hrule-0 grt-vrule-index">-83,333</td>
 <td class="grt-right grt-hrule-0 grt-vrule-1"> 206.619p</td>
 <td class="grt-right grt-hrule-0 grt-vrule-0">-1,134.25</td>
-<td class="grt-center grt-hrule-0 grt-vrule-1">2025-04-06</td>
+<td class="grt-center grt-hrule-0 grt-vrule-1">2025-04-07</td>
 <td class="grt-left grt-hrule-0 grt-vrule-0"> not in Kansas anymore</td>
 </tr>
 <tr>
@@ -1155,7 +1244,7 @@ Table 3: Quarto generated caption
 <td class="grt-right grt-hrule-0 grt-vrule-index">-75,000</td>
 <td class="grt-right grt-hrule-0 grt-vrule-1"> 1.922n</td>
 <td class="grt-right grt-hrule-0 grt-vrule-0">-900.88</td>
-<td class="grt-center grt-hrule-0 grt-vrule-1">2025-04-18</td>
+<td class="grt-center grt-hrule-0 grt-vrule-1">2025-04-19</td>
 <td class="grt-left grt-hrule-0 grt-vrule-0"> neutrinos are hard to detect</td>
 </tr>
 </tbody>
@@ -1175,34 +1264,34 @@ TeX output
         row sep=0.125em,
         column sep=0.375em,
         nodes in empty cells,
-        nodes={rectangle, scale=0.635, text badly ragged},
+        nodes={rectangle, scale=0.635, text badly ragged , draw=blue!10},
     row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},
     row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}},
     row 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}},
     column  1/.style={nodes={align=left  }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em},
-    column  2/.style={nodes={align=right }, nosep, text width=6.59em},
-    column  3/.style={nodes={align=right }, nosep, text width=7.41em},
-    column  4/.style={nodes={align=right }, nosep, text width=7.41em},
-    column  5/.style={nodes={align=center}, nosep, text width=8.24em},
-    column  6/.style={nodes={align=left  }, nosep, text width=23.89em},
+    column  2/.style={nodes={align=right }, nosep, text width=17.40em},
+    column  3/.style={nodes={align=right }, nosep, text width=17.40em},
+    column  4/.style={nodes={align=right }, nosep, text width=17.40em},
+    column  5/.style={nodes={align=center}, nosep, text width=17.40em},
+    column  6/.style={nodes={align=left  }, nosep, text width=17.40em},
     column  7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}   }]
-\matrix (T5OTIZGG6UTFR) [table, ampersand replacement=\&]{
+\matrix (TIPUZXJD7G5EM) [table, ampersand replacement=\&]{
       \&          \&           \&           \&            \&                               \& \\
  \grtspacer \& A\grtspacer \& \grtspacer \& B\grtspacer \& \grtspacer \& C\grtspacer                   \& \\
  years!\grtspacer \& Int\grtspacer \& Float\grtspacer \& Float\grtspacer \& 3\grtspacer \& Longer Text\grtspacer         \& \\
- 2000 \& -100,000 \&    2.389p \& -1,601.00 \& 2025-03-13 \& once upon a time              \& \\
- 2001 \&  -91,667 \&   22.217p \& -1,367.62 \& 2025-03-25 \&  risk is hard to define       \& \\
- 2002 \&  -83,333 \&  206.619p \& -1,134.25 \& 2025-04-06 \&  not in Kansas anymore        \& \\
- 2003 \&  -75,000 \&    1.922n \&   -900.88 \& 2025-04-18 \&  neutrinos are hard to detect \& \\
+ 2000 \& -100,000 \&    2.389p \& -1,601.00 \& 2025-03-14 \& once upon a time              \& \\
+ 2001 \&  -91,667 \&   22.217p \& -1,367.62 \& 2025-03-26 \&  risk is hard to define       \& \\
+ 2002 \&  -83,333 \&  206.619p \& -1,134.25 \& 2025-04-07 \&  not in Kansas anymore        \& \\
+ 2003 \&  -75,000 \&    1.922n \&   -900.88 \& 2025-04-19 \&  neutrinos are hard to detect \& \\
 };
 
-\path[draw, thick] (T5OTIZGG6UTFR-1-1.south west)  -- (T5OTIZGG6UTFR-1-7.south east);
-\path[draw, semithick] ([yshift=-0.0625em]T5OTIZGG6UTFR-3-1.south west)  -- ([yshift=-0.0625em]T5OTIZGG6UTFR-3-7.south east);
-\path[draw, thick] ([yshift=-0.3125em]T5OTIZGG6UTFR-7-1.base west)  -- ([yshift=-0.3125em]T5OTIZGG6UTFR-7-7.base east);
-\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]T5OTIZGG6UTFR-2-2.south west)  -- ([yshift=-0.0625em]T5OTIZGG6UTFR-2-7.south east);
-\path[draw, very thin] ([xshift=-0.1875em]T5OTIZGG6UTFR-1-2.south west)  -- ([yshift=-0.3125em, xshift=-0.1875em]T5OTIZGG6UTFR-7-2.base west);
-\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T5OTIZGG6UTFR-1-3.south east)  -- ([yshift=-0.3125em, xshift=0.1875em]T5OTIZGG6UTFR-7-3.base east);
-\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T5OTIZGG6UTFR-1-5.south east)  -- ([yshift=-0.3125em, xshift=0.1875em]T5OTIZGG6UTFR-7-5.base east);
+\path[draw, thick] (TIPUZXJD7G5EM-1-1.south west)  -- (TIPUZXJD7G5EM-1-7.south east);
+\path[draw, semithick] ([yshift=-0.0625em]TIPUZXJD7G5EM-3-1.south west)  -- ([yshift=-0.0625em]TIPUZXJD7G5EM-3-7.south east);
+\path[draw, thick] ([yshift=-0.3125em]TIPUZXJD7G5EM-7-1.base west)  -- ([yshift=-0.3125em]TIPUZXJD7G5EM-7-7.base east);
+\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TIPUZXJD7G5EM-2-2.south west)  -- ([yshift=-0.0625em]TIPUZXJD7G5EM-2-7.south east);
+\path[draw, very thin] ([xshift=-0.1875em]TIPUZXJD7G5EM-1-2.south west)  -- ([yshift=-0.3125em, xshift=-0.1875em]TIPUZXJD7G5EM-7-2.base west);
+\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TIPUZXJD7G5EM-1-3.south east)  -- ([yshift=-0.3125em, xshift=0.1875em]TIPUZXJD7G5EM-7-3.base east);
+\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TIPUZXJD7G5EM-1-5.south east)  -- ([yshift=-0.3125em, xshift=0.1875em]TIPUZXJD7G5EM-7-5.base east);
 
 
 
@@ -1211,31 +1300,31 @@ TeX output
 
-
-

3 A Table with TeX

-
+
+

2 A Table with TeX Content

+
Code -
index = pd.Index(["A", "B", "$C_1$", "C_2 not tex", '$\\cos(A)$'])
-tex = pd.DataFrame(
-{'x': np.arange(2020, 2025, dtype=int),
-'b': np.random.random(5),
-'a1': [f'$x^{i}$' for i in range(5,10)],
-'a2': [f'$\\sin({i}x\\pi/n)$' for i in range(5,10)],
-'a3': [f'$x^{i}$' for i in range(5,10)],
-'a4': [f'\\(x^{i}\\)' for i in range(5,10)],
-}).set_index('x')
-tex = tex.head()
-tex.columns = index
-tex
+
index = pd.Index(["A", "B", "$C_1$", "C_2 not tex", '$\\cos(A)$'])
+tex = pd.DataFrame(
+{'x': np.arange(2020, 2025, dtype=int),
+'b': np.random.random(5),
+'a1': [f'$x^{i}$' for i in range(5,10)],
+'a2': [f'$\\sin({i}x\\pi/n)$' for i in range(5,10)],
+'a3': [f'$x^{i}$' for i in range(5,10)],
+'a4': [f'\\(x^{i}\\)' for i in range(5,10)],
+}).set_index('x')
+tex = tex.head()
+tex.columns = index
+tex
-
+
-Table 4: Quarto generated caption: table displayed by default routine. +Table 6: (Quarto generated caption): table displayed by default routine.
-
+
@@ -1260,7 +1349,7 @@ Table 4: Quarto generated caption: table displayed by default routine. - + @@ -1268,7 +1357,7 @@ Table 4: Quarto generated caption: table displayed by default routine. - + @@ -1276,7 +1365,7 @@ Table 4: Quarto generated caption: table displayed by default routine. - + @@ -1284,7 +1373,7 @@ Table 4: Quarto generated caption: table displayed by default routine. - + @@ -1292,7 +1381,7 @@ Table 4: Quarto generated caption: table displayed by default routine. - + @@ -1306,22 +1395,30 @@ Table 4: Quarto generated caption: table displayed by default routine. -
+
Code -
sGT(tex, 'GT Caption')
+
sGT(tex, 'GT Caption')
-
+
-Table 5: Quarto generated caption +Table 7: GT output (Quarto generated caption)
-
+
- -
20200.9954570.718196 $x^5$ $\sin(5x\pi/n)$ $x^5$
20210.8573460.287288 $x^6$ $\sin(6x\pi/n)$ $x^6$
20220.4217360.591513 $x^7$ $\sin(7x\pi/n)$ $x^7$
20230.1575570.697237 $x^8$ $\sin(8x\pi/n)$ $x^8$
20240.6637690.774233 $x^9$ $\sin(9x\pi/n)$ $x^9$
+ +
++++++++ @@ -1335,7 +1432,7 @@ Table 5: Quarto generated caption - + @@ -1343,7 +1440,7 @@ Table 5: Quarto generated caption - + @@ -1351,7 +1448,7 @@ Table 5: Quarto generated caption - + @@ -1359,7 +1456,7 @@ Table 5: Quarto generated caption - + @@ -1367,7 +1464,7 @@ Table 5: Quarto generated caption - + @@ -1381,23 +1478,31 @@ Table 5: Quarto generated caption

Ratio columns.

-
+
Code -
tex.columns = ["A (%)", "B", "$C_1$", "C_2 not tex", '$\\cos(A)$']
-sGT(tex, 'Ratio columns in A', ratio_cols='A (%)')
+
tex.columns = ["A (%)", "B", "$C_1$", "C_2 not tex", '$\\cos(A)$']
+sGT(tex, 'Ratio columns in A', ratio_cols='A (%)')
-
+
-Table 6: greater table output +Table 8: greater table output
-
+
- -
GT Caption
x
20200.995460.71820 \(x^5\) \(\sin(5x\pi/n)\) \(x^5\)
20210.857350.28729 \(x^6\) \(\sin(6x\pi/n)\) \(x^6\)
20220.421740.59151 \(x^7\) \(\sin(7x\pi/n)\) \(x^7\)
20230.157560.69724 \(x^8\) \(\sin(8x\pi/n)\) \(x^8\)
20240.663770.77423 \(x^9\) \(\sin(9x\pi/n)\) \(x^9\)
+ +
++++++++ @@ -1411,7 +1516,7 @@ Table 6: greater table output - + @@ -1419,7 +1524,7 @@ Table 6: greater table output - + @@ -1427,7 +1532,7 @@ Table 6: greater table output - + @@ -1435,7 +1540,7 @@ Table 6: greater table output - + @@ -1443,7 +1548,7 @@ Table 6: greater table output - + @@ -1457,458 +1562,169 @@ Table 6: greater table output -
-

4 Greater_tables Test Suite

-
+
+

3 Greater_tables Test Suite

+
Code -
test_gen = gtu.TestDFGenerator(0, 0)
-ans = test_gen.test_suite()    
+
test_gen = gtu.TestDFGenerator(0, 0)
+ans = test_gen.test_suite()    
-
-

4.1 Test Table: basic

-
-
-Code -
hrw = (0, 0, 0)
-sGT(ans['basic'], "Basic", ratio_cols='z', aligners={'w': 'l'},
-        hrule_widths=hrw)
-
-
-
-
-Table 7: Output for test table basic -
-
-
-
- -
Ratio columns in A
x
202099.5%71.8% \(x^5\) \(\sin(5x\pi/n)\) \(x^5\)
202185.7%28.7% \(x^6\) \(\sin(6x\pi/n)\) \(x^6\)
202242.2%59.2% \(x^7\) \(\sin(7x\pi/n)\) \(x^7\)
202315.8%69.7% \(x^8\) \(\sin(8x\pi/n)\) \(x^8\)
202466.4%77.4% \(x^9\) \(\sin(9x\pi/n)\) \(x^9\)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Basic
evaporatesceramic strfiftieth floatimplies floatolympia floatpantheon intrats floatscaffold inttoddler float
10,409societies0.028650.00145-0.000y526,677,827 103.967685,501,3376.814
11,474sizable0.185630.00112-39374173793.449Y179,726,540 1.077206,756,8600.000
15,227rebutted1.486210.00000 0.016y4,947,776 1.664k732,146,6260.000
40,821olympics0.000130.05809 9.971Y503,498,901 3.657606,679,8240.000
54,855privates0.000010.00001-45.091k543,946,419 995.521k461,624,3710.000
57,213tabulation0.000000.00000 3.848f669,326,426 9.816k961,890,6390.000
68,535moaned0.000000.00055 290.243f125,810,115 101.479m732,897,4230.000
76,492files0.000000.00000 553.051p702,688,276 83.909k572,343,9440.370
85,224prosecutions0.001991.69601-0.000y798,624,265 329.542m513,642,0010.000
90,600euphoria0.008300.00005-0.000y935,309,131 343.642M424,932,4807.075
-
-
-
-
-
-

Comments go here.

-
-
-

4.2 Test Table: timeseries

-
-
-Code -
hrw = (0, 0, 0)
-sGT(ans['timeseries'], "Timeseries", ratio_cols='z', aligners={'w': 'l'},
-        hrule_widths=hrw)
-
-
-
-
-Table 8: Output for test table timeseries -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Timeseries
adultsDisjointed Additional Demilitarized floatImpending Wired Elderly floatSoften Richardson Biggest year
2009-04-13 107.969M 935.028m1996
2009-05-26 817.898m 8.691G2021
2009-07-05 2.128k 24.905k2000
2010-01-24 268.457m 7.100k2021
2010-03-31 141.709m 10.4952003
2010-11-14 45.264 10.5502011
2011-05-09 1.089M 2.9372022
2012-05-08 1.772k 34.705M2002
2013-08-06 517.389m 2.647G2028
2013-12-08 967.957 170.925M2014
2015-06-10 71.580k 83.367M2028
2017-09-01 19.038 2.302k2014
2023-05-27 45.203k 25.982k2001
2023-12-02 404.669 2.7252021
2025-01-12 422.991 326.3602007
2025-09-05 6.442G 6.803M2000
2026-02-27 354.139 42.374k1995
2027-11-24 39.643 10.480M2010
2029-03-31 88.799 4.459G2024
2033-01-19 1.207M 137.121m2005
-
-
-
-
-
-

Comments go here.

-
-
-

4.3 Test Table: multiindex

+
+

3.1 Test Table: basic

Code -
hrw = (1.5, 1.0, 0.5)
-sGT(ans['multiindex'], "Multiindex", ratio_cols='z', aligners={'w': 'l'},
+
hrw = (0, 0, 0)
+sGT(ans['basic'], "Basic", ratio_cols='z', aligners={'w': 'l'},
         hrule_widths=hrw)
-
+
-
-Table 9: Output for test table multiindex +
+Table 9: GT output for test table basic
-
-
+
+
- - - + +
Multiindex
+ +++++++++++ - - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Basic
detonationsdevaluedagilityDysfunctional Doubts Posits floatLeon Combatting Stresses yearOvernight Consumers Rotary intPayments Mousetrap Individualistic dateReinforce Autocratic Axiomatic floatfinallydebug dateenemy floatorphans floatprotruding floatprudent datetimeshale intslowness intsuing int
20,574indiscriminately57,7270.000002022762,834,9012017-06-030.072167,8542030-06-262.11142 12.589k 446.533k2030-10-26-2,4209,789-8,700
61,3530.000022006298,343,2302025-08-220.5952616,1962007-03-200.00302 5.064 18.008M2018-07-081,0857931,370
materialize10,2400.604772023168,555,4982011-10-230.00000
85,7020.000022002488,116,6562017-06-030.00000
scholarly23,7800.000001998219,153,1432023-01-270.17047
64,0480.001971991698,426,4512008-12-050.00000
84,0140.000002016281,105,8032029-04-120.00000
40,259indiscriminately5,7150.113051993809,111,7052011-10-2317,9252029-07-20 0.00003 27.621k 396.221M2027-09-17-5,360-4,847-1,221
92,5910.002521991548,720,6822023-01-278.5350945,0072025-06-050.02476 7.990M 24.956M2030-10-26-3,2476224,761
scholarly27,1030.000002002489,381,4162008-12-050.0000046,5972010-11-110.00000 338.592M 182.695M2020-06-219,321-2,5199,025
65,8752009-12-150.00029 7.152G 35.381M2030-10-262,489-8,288-3,648
73,8362025-06-050.00000 290.625k 1.063M2022-02-01-312-9,0068,417
79,3242016-02-070.00001 966.832k 109.231M2030-08-264,735-5,085-9,105
88,0492016-10-200.00000 4.929G 31.366k2024-06-27-5,858-1,554-5,719
89,9512010-11-110.00000 6.406G 46.693M2024-06-27-7,4446,314-2,130
@@ -1919,128 +1735,160 @@ Table 9: Output for test table multiindex

Comments go here.

-
-

4.4 Test Table: multicolumns

+
+

3.2 Test Table: timeseries

Code
hrw = (0, 0, 0)
-sGT(ans['multicolumns'], "Multicolumns", ratio_cols='z', aligners={'w': 'l'},
+sGT(ans['timeseries'], "Timeseries", ratio_cols='z', aligners={'w': 'l'},
         hrule_widths=hrw)
-
+
-
-Table 10: Output for test table multicolumns +
+Table 10: GT output for test table timeseries
-
-
+
+
- - - + +
Multicolumns
+ ++++++ - - - - - - - - - - - - - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Timeseries
bosomcommons
ratchetsometimesarrestsratchet
suppliercancellingsciencestumblessubtleentertainedhourAghast Forth Recast floatBorderline Comprehension Quicksand floatReads Touch Cluck date
3272032-06-25273,138,8060.00052-1,9652028-03-012006-06-140.00063 5.086M2016-01-16
3,5202025-07-03122,144,3360.00000-7592027-05-032008-01-220.00189 135.050k2018-06-16
23,6992013-07-10393,170,1470.000086,7862017-10-162011-07-240.00006 674.425k2026-01-30
28,8482032-06-25818,799,7170.000009,8592028-03-012014-02-200.00025 32.0132026-01-30
36,2702010-06-25316,633,7020.09127-1,8742016-11-302015-07-220.00000 2.034k2026-01-30
80,8932024-02-18368,321,8330.000003,7142027-05-032017-03-130.87787 291.515k2029-11-24
85,3362017-09-04191,056,0280.012455,2932020-11-292017-05-280.00340 14.176k2019-08-15
86,9842013-07-10838,550,3450.275722,5162009-05-202017-09-020.01595 4.440k2026-01-30
91,0742013-07-10384,738,4960.105529,9792016-11-302018-06-300.00000 877.971m2012-05-30
92,3182010-08-24388,216,9482.57733-8,7072027-05-032018-10-090.43277 2.863G2022-08-10
2019-06-180.00203 77.727M2020-10-20
2019-06-270.00051 22.6722007-01-02
2020-04-140.00000 118.617k2016-01-16
2025-03-130.02163 167.999m2019-08-15
2027-10-010.06213 4.3502007-01-02
2027-11-090.00000 169.9602020-10-20
2029-02-140.00000 376.827k2019-08-15
2031-01-040.00030 1.146k2025-05-23
2031-04-210.00000 3.568k2025-02-09
2033-06-100.04446 63.823k2012-05-30
@@ -2051,359 +1899,148 @@ Table 10: Output for test table multicolumns

Comments go here.

-
-

4.5 Test Table: complex

+
+

3.3 Test Table: multiindex

Code
hrw = (1.5, 1.0, 0.5)
-sGT(ans['complex'], "Complex", ratio_cols='z', aligners={'w': 'l'},
+sGT(ans['multiindex'], "Multiindex", ratio_cols='z', aligners={'w': 'l'},
         hrule_widths=hrw)
-
+
-
-Table 11: Output for test table complex +
+Table 11: GT output for test table multiindex
-
-
+
+
- - - + +
Complex
+ ++++++++++ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + +
Multiindex
fleecetools
bakinghidebakingtitanium
likinggroanedcanalsexistentfluffyspellingendingincompetentmaximalspecinadequateredefinesmentionsubcontractorsomniscientdopeClutch Potent Proxies intColoration Brains Trimester datetimeHomicide Mangrove Medicaid floatMulled Mall Overturned floatViability Cannon Reaffirmed int
53,194bogota13,026-552323.738Y 54.240k-115.648G 1.928G2010138,408,307657,932,466hearsay1,0282027-05-0641,778nurtured4,716737,371,2462006-07-28 318.230n0.000005,631
18,208 0.000y 1.165M 1.479 27.888k2006818,352,467893,101,570imposing3,8772028-01-0811,541628,029,5632028-05-19 115.862n0.00242-2,675
96,246-1.535Y 9.641M 110.678p 18.207M2007132,838,183879,878,186easing-1,7082020-10-1239,040952,951,4402030-08-28 4.728u0.00000-8,399
luxurious11,021 0.344y 756.089M-0.000y 4.327M2004976,447,973120,413,519stalls5,1102016-12-08operational85,483406,112,4202030-08-28 12.120n0.00000-5,313
13,873 0.210y 35.454k 4.090Z 33.572M2008211,552,636411,139,821repetition7,4752014-12-3099,029250,843,9072030-08-28 2.035n0.00310-8,481
91,316nurtured11,58383,924,6622030-08-28 51.575n0.000004,604
78,735 0.000y 7.696M 0.000y 11.170M2019654,128,157200,316,409shorten5,6252017-05-29
quit11,093-427.685n 1.299 1.614f 1.276G2023397,964,703847,379,181advocacy-2,7092027-07-2915,228164,891,4082007-03-31 1.860m0.000009,813
36,840 11.759m 2.653 12.495k 86.576M2010948,990,396948,743,442peak-6,2202025-04-1493,958558,988,2292009-11-18 1.924n0.03481-4,138
60,365-9.861f 96.508M-201.180m 4.112k2026539,901,423483,316,969vengeful-9,8802019-10-24operational11,208395,204,1912021-06-25 1.513m0.226962,835
68,306-4.628p 134.142-84.906y 8.5952001935,137,648125,143,083receivables-2,4342027-07-18
77,116 20402.147Y 2.011k-828.922k 24.656M2017708,599,965484,013,044here7,9362024-08-29
86,939 158.054G 904.457M-3.544n 115.096M2018665,797,72330,395,621elements4,5402028-01-08
98,924 1.509G 68.016M-2.479E 336.929k2005871,796,728260,043,857happiness4,0812030-09-24
86,171bogota64,882-4.761a 846.545k-72.589M 314.796m201497,349,537212,102,442kodak-2,7242032-07-09
86,768-0.000y 88.058M 2.231Y 24.964k2016956,702,194231,092,874easterners5,3562019-10-24
luxurious5,886-0.059y 902.766m 2.270E 22.877k2025308,697,830292,947,906metering8,7322019-10-14
8,188-0.057y 72.636k-44.895Y 5.708k2021449,167,802848,030,179anticipates-2,5302027-05-06
9,361 2.155M 115.463-160.225f 85.764M2009171,478,556379,897,546aquatic7,7512019-10-24
33,024-11.597T 536.113M 1.736a 2.4732007638,693,189636,844,921gems3,6232032-07-09
73,383-1.720T 562.514m 3.238n 46.1442017616,529,727102,742,732progressing6,4022019-10-24scratches14,298579,583,0912030-08-28 2.781u0.00002-2,621
@@ -2413,6 +2050,829 @@ Table 11: Output for test table complex

Comments go here.

+
+
+

3.4 Test Table: multicolumns

+
+
+Code +
hrw = (0, 0, 0)
+sGT(ans['multicolumns'], "Multicolumns", ratio_cols='z', aligners={'w': 'l'},
+        hrule_widths=hrw)
+
+
+
+
+Table 12: GT output for test table multicolumns +
+
+
+
+ + + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Multicolumns
guiltyspying
shadowsmonitoredrevelshadows
influenzacommentingredirectedvowelsdebuggingexplode
16,750utilizes2019-01-030.00000 93.987k2024-02-20
34,377thoroughness2013-01-150.00023 3.075M2010-05-22
44,533uprisings2029-11-290.00000 38.750k2016-05-25
54,472critter2014-06-250.00038 9.971k2031-10-04
64,171destiny2029-11-290.09353 1.720G2030-03-12
71,922savvy2025-04-200.00000 5.788k2010-05-22
79,803alright2013-01-150.00001 356.950M2031-10-04
87,194solidifies2013-08-010.00009 1.301k2030-12-05
90,818acquires2014-06-250.00000 32.7882031-10-31
94,143fines2014-06-250.13375 5.0772031-10-04
+
+
+
+
+
+

Comments go here.

+
+
+

3.5 Test Table: complex

+
+
+Code +
hrw = (1.5, 1.0, 0.5)
+sGT(ans['complex'], "Complex", ratio_cols='z', aligners={'w': 'l'},
+        hrule_widths=hrw)
+
+
+
+
+Table 13: GT output for test table complex +
+
+
+
+ + + +++++++++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Complex
partitioningperturbed
criedrecoilsaddenedcriedrecoilsaddened
ninesrichescreativemercilessquirksunconstraineddesegregationfreezerqueueracetrackradiologicalsubstanceslocked
51,924inventions10,331 2.623M0.0000020132016-950.847p 18.245k 183.787M19970.263462020-03-08
27,378 5.630G0.5687220272005-8.399m 14.163M 3.408k20190.000012021-10-05
33,898 780.044M0.6414519952007 434.460k 6.827k 50.624k20240.633192030-01-16
92,471 40.028k0.0000819982021-0.103y 30.670 39.138M20030.000002008-02-13
nuclear9,425 81.988M0.0000020022000-277.700Z 7.089 159.617M20271.235742015-03-08
14,347 24.193k0.0122520262022-64.380n 136.721k 107.42419990.000372015-03-08
62,320 2.147M0.0000020162028 40.642M 292.944 1.390G20080.000002030-07-09
repudiate79,676 1.807G0.0000020222005 3.843Z 12.544k 1.814k19970.000002008-02-13
54,240inventions10,825 356.1560.3705920022024-8.059Z 369.243m 264.911k20090.001972022-12-26
21,803 210.0240.1957320162011 1066900.627Y 22.193k 4.962G19930.000002012-03-17
96,698 7.274G0.0004620201995-2.932a 1.422k 853.603M20210.004532015-08-06
nuclear47,064 3.393G0.0247019962003-0.000y 26.800 371.147k20030.000002020-03-08
82,929 23.3450.0016220042017-337.974P 1.629G 63.656M20290.000092030-07-09
repudiate27,297 152.8240.0203719982013 11177879989333.562Y 64.290k 12.063M20090.000002021-10-05
38,293 60.465M3.2434520022017 4.351Y 781.098M 2.66420040.000002015-08-06
43,065 203.4280.0045920222028-47.829P 1.409M 473.835M19950.002152020-03-08
53,192 131.6110.0000019952003 9.008P 3.915G 10.812M20240.000562026-05-02
56,629 9.537G0.0084219941994-0.000y 6.550k 805.653k20060.034492011-01-10
69,244 1.7870.0000020102007 3.397 267.352M 3.369M20260.000012020-03-08
82,911 30.563k0.0000220212017-0.000y 30.860k 42.57020260.000002029-07-23
+
+
+
+
+
+

Comments go here.

+
+
+
+

4 Other input formats

+
+

4.1 Markown

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Insured group or insurance productSatRPRF
Non-standard autox
General liability for judgment proof corporationx
Term life insurancex
Catastrophe Reinsurance, outside rating agency boundsx
High limit property per risk reinsurancex
Personal lines for affluent individualsxx
Small commercial linesxx
Catastrophe reinsurance, within rating agency boundsxx
Large account captive reinsurancex
Structured quota share, requiring a risk transfer testxx
Working layer casualty excess of lossxx
Surplus relief quota share on cat exposed linexxx
Middle market commercial lines work comp or commercial autoxxx
+
+
+Code +
txt = '''
+
+| **Insured group or insurance product**                      | **Sat** | **RP** | **RF** |
+|:------------------------------------------------------------|:-------:|:------:|:------:|
+| Non-standard auto                                           |    x    |        |        |
+| General liability for judgment proof corporation            |    x    |        |        |
+| Term life insurance                                         |         |   x    |        |
+| Catastrophe Reinsurance, outside rating agency bounds       |         |   x    |        |
+| High limit property per risk reinsurance                    |         |   x    |        |
+| Personal lines for affluent individuals                     |    x    |   x    |        |
+| Small commercial lines                                      |    x    |   x    |        |
+| Catastrophe reinsurance, within rating agency bounds        |    x    |   x    |        |
+| Large account captive reinsurance                           |         |        |   x    |
+| Structured quota share, requiring a risk transfer test      |    x    |        |   x    |
+| Working layer casualty excess of loss                       |         |   x    |   x    |
+| Surplus relief quota share on cat exposed line              |    x    |   x    |   x    |
+| Middle market commercial lines work comp or commercial auto |    x    |   x    |   x    |
+
+
+'''
+
+GT(txt)
+
+
+
+
+Table 14: GT from markdown table input +
+
+
+
+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Insured group or insurance productSatRPRF
Non-standard autox
General liability for judgment proof corporationx
Term life insurancex
Catastrophe Reinsurance, outside rating agency boundsx
High limit property per risk reinsurancex
Personal lines for affluent individualsxx
Small commercial linesxx
Catastrophe reinsurance, within rating agency boundsxx
Large account captive reinsurancex
Structured quota share, requiring a risk transfer testxx
Working layer casualty excess of lossxx
Surplus relief quota share on cat exposed linexxx
Middle market commercial lines work comp or commercial autoxxx
+
+
+
+
+
+
+
+

4.2 List of lists

+
+
+Code +
lol = [['a', 'b', 'c', 'd'], ['west', 10, 20, 30], ['east', 10, 200, 30], ['north', 10, 20, 300], ['south', 100, 20, 30]]
+GT(lol)
+
+
+
+
+Table 15: GT output for list of lists input +
+
+
+
+ + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
abcd
west102030
east1020030
north1020300
south1002030
+
+
+
+
+
diff --git a/tests/tables.ipynb b/tests/tables.ipynb new file mode 100644 index 0000000..d8ea082 --- /dev/null +++ b/tests/tables.ipynb @@ -0,0 +1,5244 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "title: All Tables Test - New TestDFGenerator test_suite\n", + "author:\n", + " - name: Stephen J. Mildenhall\n", + " orcid: 0000-0001-6956-0098\n", + " corresponding: true\n", + " email: mynl@me.com\n", + "date: last-modified\n", + "colorlinks: true\n", + "link-citations: true\n", + "link-bibliography: true\n", + "tbl-align: left\n", + "number-sections: true\n", + "number-offset: 0\n", + "number-depth: 3\n", + "code-line-numbers: false\n", + "code-copy: true\n", + "code-overflow: wrap\n", + "code-fold: true\n", + "fig-format: svg\n", + "fig-align: left\n", + "format:\n", + " html:\n", + " html-table-processing: none\n", + " theme: litera\n", + " fontsize: 0.9em\n", + " css: styles.css\n", + " include-in-header: pmir-header.html\n", + " smooth-scroll: true\n", + " toc-title: 'In this chapter:'\n", + " citations-hover: true\n", + " crossrefs-hover: false\n", + " fig-responsive: true\n", + " footnotes-hover: true\n", + " lightbox: true\n", + " link-external-icon: true\n", + " link-external-newwindow: true\n", + " page-layout: article\n", + " page-navigation: true\n", + " reference-section-title: ' '\n", + " page-footer:\n", + " left: 'Stephen J. Mildenhall. License: [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/).'\n", + " twitter-card: true\n", + " open-graph: true\n", + " toc: true\n", + " toc-depth: 3\n", + " math: mathjax\n", + " pdf:\n", + " include-in-header: prefobnicate.tex\n", + " documentclass: scrartcl\n", + " papersize: a4\n", + " fontsize: 11pt\n", + " keep-tex: true\n", + " geometry: margin=0.8in\n", + " pdf-engine: lualatex\n", + " pdf-engine-opts:\n", + " - '-interaction=nonstopmode'\n", + " toc: false\n", + "execute:\n", + " eval: true\n", + " echo: true\n", + " cache: true\n", + " cache-type: jupyter\n", + " freeze: false\n", + " kernel: python3\n", + " engine: jupyter\n", + " daemon: 1200\n", + "jupyter:\n", + " jupytext:\n", + " formats: ipynb,qmd:quarto\n", + " text_representation:\n", + " extension: .qmd\n", + " format_name: quarto\n", + " format_version: '1.0'\n", + " jupytext_version: 1.16.4\n", + " kernelspec:\n", + " display_name: Python 3 (ipykernel)\n", + " language: python\n", + " name: python3\n", + "---" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "#| echo: true\n", + "#| label: setup\n", + "from IPython.display import HTML, display\n", + "import matplotlib as mpl\n", + "import matplotlib.dates as mdates\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import greater_tables as gter\n", + "import greater_tables.utilities as gtu\n", + "from greater_tables import GT, sGT\n", + "gter.logger.setLevel(gter.logging.WARNING)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "...code build completed. \n", + "\n", + "# A Hard-Rules table\n", + "\n", + "Second level index has mixed types. Range of magnitudes. Picking out years.\n", + "\n", + "\\footnotesize" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Level 1ABC
Level 2IntFloatFloat3Longer Text
years!
2000-1000002.388937e-12-1601.0002025-03-14 00:00:00once upon a time
2001-916672.221711e-11-1367.6252025-03-26 04:00:00risk is hard to define
2002-833332.066191e-10-1134.2502025-04-07 08:00:00not in Kansas anymore
2003-750001.921558e-09-900.8752025-04-19 12:00:00neutrinos are hard to detect
2004-666671.787049e-08-667.5002025-05-01 16:00:00Adam Smith is the father of economics
2005-583331.661955e-07-434.1252025-05-13 20:00:00once upon a time
2006-500001.545619e-06-200.7502025-05-26 00:00:00risk is hard to define
2007-416671.437425e-0532.6252025-06-07 04:00:00not in Kansas anymore
2008-333331.336805e-04266.0002025-06-19 08:00:00neutrinos are hard to detect
2009-250001.243229e-03499.3752025-07-01 12:00:00Adam Smith is the father of economics
2010-166671.156203e-02732.7502025-07-13 16:00:00once upon a time
2011-83331.075269e-01966.1252025-07-25 20:00:00risk is hard to define
201201.000000e+001199.5002025-08-07 00:00:00not in Kansas anymore
201383339.300000e+001432.8752025-08-19 04:00:00neutrinos are hard to detect
2014166678.649000e+011666.2502025-08-31 08:00:00Adam Smith is the father of economics
2015250008.043570e+021899.6252025-09-12 12:00:00once upon a time
2016333337.480520e+032133.0002025-09-24 16:00:00risk is hard to define
2017416676.956884e+042366.3752025-10-06 20:00:00not in Kansas anymore
2018500006.469902e+052599.7502025-10-19 00:00:00neutrinos are hard to detect
2019583336.017009e+062833.1252025-10-31 04:00:00Adam Smith is the father of economics
2020666675.595818e+073066.5002025-11-12 08:00:00once upon a time
2021750005.204111e+083299.8752025-11-24 12:00:00risk is hard to define
2022833334.839823e+093533.2502025-12-06 16:00:00not in Kansas anymore
2023916674.501035e+103766.6252025-12-18 20:00:00neutrinos are hard to detect
20241000004.185963e+114000.0002025-12-31 00:00:00Adam Smith is the father of economics
\n", + "
" + ], + "text/plain": [ + "Level 1 A B \\\n", + "Level 2 Int Float Float 3 \n", + "years! \n", + "2000 -100000 2.388937e-12 -1601.000 2025-03-14 00:00:00 \n", + "2001 -91667 2.221711e-11 -1367.625 2025-03-26 04:00:00 \n", + "2002 -83333 2.066191e-10 -1134.250 2025-04-07 08:00:00 \n", + "2003 -75000 1.921558e-09 -900.875 2025-04-19 12:00:00 \n", + "2004 -66667 1.787049e-08 -667.500 2025-05-01 16:00:00 \n", + "2005 -58333 1.661955e-07 -434.125 2025-05-13 20:00:00 \n", + "2006 -50000 1.545619e-06 -200.750 2025-05-26 00:00:00 \n", + "2007 -41667 1.437425e-05 32.625 2025-06-07 04:00:00 \n", + "2008 -33333 1.336805e-04 266.000 2025-06-19 08:00:00 \n", + "2009 -25000 1.243229e-03 499.375 2025-07-01 12:00:00 \n", + "2010 -16667 1.156203e-02 732.750 2025-07-13 16:00:00 \n", + "2011 -8333 1.075269e-01 966.125 2025-07-25 20:00:00 \n", + "2012 0 1.000000e+00 1199.500 2025-08-07 00:00:00 \n", + "2013 8333 9.300000e+00 1432.875 2025-08-19 04:00:00 \n", + "2014 16667 8.649000e+01 1666.250 2025-08-31 08:00:00 \n", + "2015 25000 8.043570e+02 1899.625 2025-09-12 12:00:00 \n", + "2016 33333 7.480520e+03 2133.000 2025-09-24 16:00:00 \n", + "2017 41667 6.956884e+04 2366.375 2025-10-06 20:00:00 \n", + "2018 50000 6.469902e+05 2599.750 2025-10-19 00:00:00 \n", + "2019 58333 6.017009e+06 2833.125 2025-10-31 04:00:00 \n", + "2020 66667 5.595818e+07 3066.500 2025-11-12 08:00:00 \n", + "2021 75000 5.204111e+08 3299.875 2025-11-24 12:00:00 \n", + "2022 83333 4.839823e+09 3533.250 2025-12-06 16:00:00 \n", + "2023 91667 4.501035e+10 3766.625 2025-12-18 20:00:00 \n", + "2024 100000 4.185963e+11 4000.000 2025-12-31 00:00:00 \n", + "\n", + "Level 1 C \n", + "Level 2 Longer Text \n", + "years! \n", + "2000 once upon a time \n", + "2001 risk is hard to define \n", + "2002 not in Kansas anymore \n", + "2003 neutrinos are hard to detect \n", + "2004 Adam Smith is the father of economics \n", + "2005 once upon a time \n", + "2006 risk is hard to define \n", + "2007 not in Kansas anymore \n", + "2008 neutrinos are hard to detect \n", + "2009 Adam Smith is the father of economics \n", + "2010 once upon a time \n", + "2011 risk is hard to define \n", + "2012 not in Kansas anymore \n", + "2013 neutrinos are hard to detect \n", + "2014 Adam Smith is the father of economics \n", + "2015 once upon a time \n", + "2016 risk is hard to define \n", + "2017 not in Kansas anymore \n", + "2018 neutrinos are hard to detect \n", + "2019 Adam Smith is the father of economics \n", + "2020 once upon a time \n", + "2021 risk is hard to define \n", + "2022 not in Kansas anymore \n", + "2023 neutrinos are hard to detect \n", + "2024 Adam Smith is the father of economics " + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| label: tbl-hard-rules\n", + "#| tbl-cap: Default display output (Quarto generated caption)\n", + "level_1 = [\"A\", \"A\", \"B\", \"B\", 'C']\n", + "level_2 = ['Int', 'Float', 'Float', 3, 'Longer Text']\n", + "\n", + "multi_index = pd.MultiIndex.from_arrays([level_1, level_2],\n", + " names=[\"Level 1\", \"Level 2\"])\n", + "start = pd.Timestamp.today().normalize() # Today's date, normalized to midnight\n", + "end = pd.Timestamp(f\"{start.year}-12-31\") # End of the year\n", + "\n", + "hard = pd.DataFrame(\n", + "{'years!': np.arange(2000, 2025, dtype=int),\n", + "'a': np.array(np.round(np.linspace(-100000, 100000, 25), 0), dtype=int),\n", + "'b': 9.3 ** np.linspace(-12, 12, 25),\n", + "'c': np.linspace(-1601, 4000, 25),\n", + "'d': pd.date_range(start=start, end=end, periods=25),\n", + "'e': ('once upon a time, risk is hard to define, not in Kansas anymore, '\n", + " 'neutrinos are hard to detect, '\n", + " 'Adam Smith is the father of economics'.split(',') * 5)\n", + "}).set_index('years!')\n", + "# hard = hard.head()\n", + "hard.columns = multi_index\n", + "hard" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\normalsize\n", + "\n", + "@tbl-hard-rules shows the default output and @tbl-hard-rules-2 the `sGT` format output." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
A table with varied columns.
ABC
years!IntFloatFloat3Longer Text
2000-100,000 2.389p-1,601.002025-03-14once upon a time
2001-91,667 22.217p-1,367.622025-03-26 risk is hard to define
2002-83,333 206.619p-1,134.252025-04-07 not in Kansas anymore
2003-75,000 1.922n-900.882025-04-19 neutrinos are hard to detect
2004-66,667 17.870n-667.502025-05-01 Adam Smith is the father of economics
2005-58,333 166.196n-434.122025-05-13once upon a time
2006-50,000 1.546u-200.752025-05-26 risk is hard to define
2007-41,667 14.374u32.622025-06-07 not in Kansas anymore
2008-33,333 133.681u266.002025-06-19 neutrinos are hard to detect
2009-25,000 1.243m499.382025-07-01 Adam Smith is the father of economics
2010-16,667 11.562m732.752025-07-13once upon a time
2011-8,333 107.527m966.122025-07-25 risk is hard to define
20120 1.0001,199.502025-08-07 not in Kansas anymore
20138,333 9.3001,432.882025-08-19 neutrinos are hard to detect
201416,667 86.4901,666.252025-08-31 Adam Smith is the father of economics
201525,000 804.3571,899.622025-09-12once upon a time
201633,333 7.481k2,133.002025-09-24 risk is hard to define
201741,667 69.569k2,366.382025-10-06 not in Kansas anymore
201850,000 646.990k2,599.752025-10-19 neutrinos are hard to detect
201958,333 6.017M2,833.122025-10-31 Adam Smith is the father of economics
202066,667 55.958M3,066.502025-11-12once upon a time
202175,000 520.411M3,299.882025-11-24 risk is hard to define
202283,333 4.840G3,533.252025-12-06 not in Kansas anymore
202391,667 45.010G3,766.622025-12-18 neutrinos are hard to detect
2024100,000 418.596G4,000.002025-12-31 Adam Smith is the father of economics
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=5.71em},\n", + "\tcolumn 3/.style={nodes={align=right }, nosep, text width=6.43em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=6.43em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=7.14em},\n", + "\tcolumn 6/.style={nodes={align=left }, nosep, text width=27.85em},\n", + "\tcolumn 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TMF6P2VFOITDE) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\\\\n", + " \\grtspacer \\& A\\grtspacer \\& \\grtspacer \\& B\\grtspacer \\& \\grtspacer \\& C\\grtspacer \\& \\\\\n", + " years!\\grtspacer \\& Int\\grtspacer \\& Float\\grtspacer \\& Float\\grtspacer \\& 3\\grtspacer \\& Longer Text\\grtspacer \\& \\\\\n", + " 2000 \\& -100,000 \\& 2.389p \\& -1,601.00 \\& 2025-03-14 \\& once upon a time \\& \\\\\n", + " 2001 \\& -91,667 \\& 22.217p \\& -1,367.62 \\& 2025-03-26 \\& risk is hard to define \\& \\\\\n", + " 2002 \\& -83,333 \\& 206.619p \\& -1,134.25 \\& 2025-04-07 \\& not in Kansas anymore \\& \\\\\n", + " 2003 \\& -75,000 \\& 1.922n \\& -900.88 \\& 2025-04-19 \\& neutrinos are hard to detect \\& \\\\\n", + " 2004 \\& -66,667 \\& 17.870n \\& -667.50 \\& 2025-05-01 \\& Adam Smith is the father of economics \\& \\\\\n", + " 2005 \\& -58,333 \\& 166.196n \\& -434.12 \\& 2025-05-13 \\& once upon a time \\& \\\\\n", + " 2006 \\& -50,000 \\& 1.546u \\& -200.75 \\& 2025-05-26 \\& risk is hard to define \\& \\\\\n", + " 2007 \\& -41,667 \\& 14.374u \\& 32.62 \\& 2025-06-07 \\& not in Kansas anymore \\& \\\\\n", + " 2008 \\& -33,333 \\& 133.681u \\& 266.00 \\& 2025-06-19 \\& neutrinos are hard to detect \\& \\\\\n", + " 2009 \\& -25,000 \\& 1.243m \\& 499.38 \\& 2025-07-01 \\& Adam Smith is the father of economics \\& \\\\\n", + " 2010 \\& -16,667 \\& 11.562m \\& 732.75 \\& 2025-07-13 \\& once upon a time \\& \\\\\n", + " 2011 \\& -8,333 \\& 107.527m \\& 966.12 \\& 2025-07-25 \\& risk is hard to define \\& \\\\\n", + " 2012 \\& 0 \\& 1.000 \\& 1,199.50 \\& 2025-08-07 \\& not in Kansas anymore \\& \\\\\n", + " 2013 \\& 8,333 \\& 9.300 \\& 1,432.88 \\& 2025-08-19 \\& neutrinos are hard to detect \\& \\\\\n", + " 2014 \\& 16,667 \\& 86.490 \\& 1,666.25 \\& 2025-08-31 \\& Adam Smith is the father of economics \\& \\\\\n", + " 2015 \\& 25,000 \\& 804.357 \\& 1,899.62 \\& 2025-09-12 \\& once upon a time \\& \\\\\n", + " 2016 \\& 33,333 \\& 7.481k \\& 2,133.00 \\& 2025-09-24 \\& risk is hard to define \\& \\\\\n", + " 2017 \\& 41,667 \\& 69.569k \\& 2,366.38 \\& 2025-10-06 \\& not in Kansas anymore \\& \\\\\n", + " 2018 \\& 50,000 \\& 646.990k \\& 2,599.75 \\& 2025-10-19 \\& neutrinos are hard to detect \\& \\\\\n", + " 2019 \\& 58,333 \\& 6.017M \\& 2,833.12 \\& 2025-10-31 \\& Adam Smith is the father of economics \\& \\\\\n", + " 2020 \\& 66,667 \\& 55.958M \\& 3,066.50 \\& 2025-11-12 \\& once upon a time \\& \\\\\n", + " 2021 \\& 75,000 \\& 520.411M \\& 3,299.88 \\& 2025-11-24 \\& risk is hard to define \\& \\\\\n", + " 2022 \\& 83,333 \\& 4.840G \\& 3,533.25 \\& 2025-12-06 \\& not in Kansas anymore \\& \\\\\n", + " 2023 \\& 91,667 \\& 45.010G \\& 3,766.62 \\& 2025-12-18 \\& neutrinos are hard to detect \\& \\\\\n", + " 2024 \\& 100,000 \\& 418.596G \\& 4,000.00 \\& 2025-12-31 \\& Adam Smith is the father of economics \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TMF6P2VFOITDE-1-1.south west) -- (TMF6P2VFOITDE-1-7.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TMF6P2VFOITDE-3-1.south west) -- ([yshift=-0.0625em]TMF6P2VFOITDE-3-7.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TMF6P2VFOITDE-28-1.base west) -- ([yshift=-0.3125em]TMF6P2VFOITDE-28-7.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TMF6P2VFOITDE-2-2.south west) -- ([yshift=-0.0625em]TMF6P2VFOITDE-2-7.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TMF6P2VFOITDE-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TMF6P2VFOITDE-28-2.base west);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TMF6P2VFOITDE-1-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TMF6P2VFOITDE-28-3.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TMF6P2VFOITDE-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TMF6P2VFOITDE-28-5.base east);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TMF6P2VFOITDE)" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| label: tbl-hard-rules-2\n", + "#| tbl-cap: Greater Tables output (Quarto generated caption)\n", + "sGT(hard, 'A table with varied columns.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are some alternatives:\n", + "\n", + "* @tbl-hard-rules-3a hrules no vrules\n", + "* @tbl-hard-rules-3b change date and integer formats and\n", + "* @tbl-hard-rules-3c change padding and debug mode." + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
GT caption No v rules, but h rules
ABC
years!IntFloatFloat3Longer Text
2000-100,0000-1,601.002025-03-14once upon a time
2002-83,3330-1,134.252025-04-07 not in Kansas anymore
2003-75,0000-900.882025-04-19 neutrinos are hard to detect
2008-33,3330266.002025-06-19 neutrinos are hard to detect
201850,000646,9902,599.752025-10-19 neutrinos are hard to detect
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=6.80em},\n", + "\tcolumn 3/.style={nodes={align=right }, nosep, text width=5.95em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=7.65em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=8.50em},\n", + "\tcolumn 6/.style={nodes={align=left }, nosep, text width=24.65em},\n", + "\tcolumn 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (T7GWCUWBSZ2GA) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\\\\n", + " \\grtspacer \\& A\\grtspacer \\& \\grtspacer \\& B\\grtspacer \\& \\grtspacer \\& C\\grtspacer \\& \\\\\n", + " years!\\grtspacer \\& Int\\grtspacer \\& Float\\grtspacer \\& Float\\grtspacer \\& 3\\grtspacer \\& Longer Text\\grtspacer \\& \\\\\n", + " 2000 \\& -100,000 \\& 0 \\& -1,601.00 \\& 2025-03-14 \\& once upon a time \\& \\\\\n", + " 2002 \\& -83,333 \\& 0 \\& -1,134.25 \\& 2025-04-07 \\& not in Kansas anymore \\& \\\\\n", + " 2003 \\& -75,000 \\& 0 \\& -900.88 \\& 2025-04-19 \\& neutrinos are hard to detect \\& \\\\\n", + " 2008 \\& -33,333 \\& 0 \\& 266.00 \\& 2025-06-19 \\& neutrinos are hard to detect \\& \\\\\n", + " 2018 \\& 50,000 \\& 646,990 \\& 2,599.75 \\& 2025-10-19 \\& neutrinos are hard to detect \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (T7GWCUWBSZ2GA-1-1.south west) -- (T7GWCUWBSZ2GA-1-7.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]T7GWCUWBSZ2GA-3-1.south west) -- ([yshift=-0.0625em]T7GWCUWBSZ2GA-3-7.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]T7GWCUWBSZ2GA-8-1.base west) -- ([yshift=-0.3125em]T7GWCUWBSZ2GA-8-7.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]T7GWCUWBSZ2GA-2-2.south west) -- ([yshift=-0.0625em]T7GWCUWBSZ2GA-2-7.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]T7GWCUWBSZ2GA-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]T7GWCUWBSZ2GA-8-2.base west);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T7GWCUWBSZ2GA-1-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T7GWCUWBSZ2GA-8-3.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T7GWCUWBSZ2GA-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T7GWCUWBSZ2GA-8-5.base east);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=T7GWCUWBSZ2GA)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#| echo: fenced\n", + "#| label: tbl-hard-rules-3a\n", + "#| tbl-cap: No V rules but hrules (Quarto generated caption)\n", + "display(sGT(hard.sample(5).sort_index(),\n", + " caption='GT caption No v rules, but h rules',\n", + " vrule_widths=(0,0,0),\n", + " hrule_widths=(1,0,0)))" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Change default date and integer formats
ABC
years!IntFloatFloat3Longer Text
2001[-91667]0-1,367.6203-26 risk is hard to define
2004[-66667]0-667.5005-01 Adam Smith is the father of economics
2007[-41667]032.6206-07 not in Kansas anymore
2008[-33333]0266.0006-19 neutrinos are hard to detect
2018[50000]646,9902,599.7510-19 neutrinos are hard to detect
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=6.30em},\n", + "\tcolumn 3/.style={nodes={align=right }, nosep, text width=5.51em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=7.09em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=3.94em},\n", + "\tcolumn 6/.style={nodes={align=left }, nosep, text width=30.71em},\n", + "\tcolumn 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TQMKPLMFN4DDR) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\\\\n", + " \\grtspacer \\& A\\grtspacer \\& \\grtspacer \\& B\\grtspacer \\& \\grtspacer \\& C\\grtspacer \\& \\\\\n", + " years!\\grtspacer \\& Int\\grtspacer \\& Float\\grtspacer \\& Float\\grtspacer \\& 3\\grtspacer \\& Longer Text\\grtspacer \\& \\\\\n", + " 2001 \\& [-91667] \\& 0 \\& -1,367.62 \\& 03-26 \\& risk is hard to define \\& \\\\\n", + " 2004 \\& [-66667] \\& 0 \\& -667.50 \\& 05-01 \\& Adam Smith is the father of economics \\& \\\\\n", + " 2007 \\& [-41667] \\& 0 \\& 32.62 \\& 06-07 \\& not in Kansas anymore \\& \\\\\n", + " 2008 \\& [-33333] \\& 0 \\& 266.00 \\& 06-19 \\& neutrinos are hard to detect \\& \\\\\n", + " 2018 \\& [50000] \\& 646,990 \\& 2,599.75 \\& 10-19 \\& neutrinos are hard to detect \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TQMKPLMFN4DDR-1-1.south west) -- (TQMKPLMFN4DDR-1-7.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TQMKPLMFN4DDR-3-1.south west) -- ([yshift=-0.0625em]TQMKPLMFN4DDR-3-7.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TQMKPLMFN4DDR-8-1.base west) -- ([yshift=-0.3125em]TQMKPLMFN4DDR-8-7.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TQMKPLMFN4DDR-2-2.south west) -- ([yshift=-0.0625em]TQMKPLMFN4DDR-2-7.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TQMKPLMFN4DDR-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TQMKPLMFN4DDR-8-2.base west);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TQMKPLMFN4DDR-1-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TQMKPLMFN4DDR-8-3.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TQMKPLMFN4DDR-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TQMKPLMFN4DDR-8-5.base east);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TQMKPLMFN4DDR)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#| echo: fenced\n", + "#| label: tbl-hard-rules-3b\n", + "#| tbl-cap: Change date and integer formats (Quarto generated caption)\n", + "display(sGT(hard.sample(5).sort_index(),\n", + " caption='Change default date and integer formats',\n", + " default_date_str='%m-%d', default_integer_str='[{x:d}]'))" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[6, 7.0, 9.0, 8.0, 10.0, 39.0]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Change padding, debug mode lines (id: TBM2NV7BWZEMG)
ABC
years!IntFloatFloat3Longer Text
2007-41,667 14.374u32.622025-06-07 not in Kansas anymore
2008-33,333 133.681u266.002025-06-19 neutrinos are hard to detect
201416,667 86.4901,666.252025-08-31 Adam Smith is the father of economics
201633,333 7.481k2,133.002025-09-24 risk is hard to define
202175,000 520.411M3,299.882025-11-24 risk is hard to define
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged , draw=blue!10},\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=23.40em},\n", + "\tcolumn 3/.style={nodes={align=right }, nosep, text width=23.40em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=23.40em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=23.40em},\n", + "\tcolumn 6/.style={nodes={align=left }, nosep, text width=23.40em},\n", + "\tcolumn 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TBM2NV7BWZEMG) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\\\\n", + " \\grtspacer \\& A\\grtspacer \\& \\grtspacer \\& B\\grtspacer \\& \\grtspacer \\& C\\grtspacer \\& \\\\\n", + " years!\\grtspacer \\& Int\\grtspacer \\& Float\\grtspacer \\& Float\\grtspacer \\& 3\\grtspacer \\& Longer Text\\grtspacer \\& \\\\\n", + " 2007 \\& -41,667 \\& 14.374u \\& 32.62 \\& 2025-06-07 \\& not in Kansas anymore \\& \\\\\n", + " 2008 \\& -33,333 \\& 133.681u \\& 266.00 \\& 2025-06-19 \\& neutrinos are hard to detect \\& \\\\\n", + " 2014 \\& 16,667 \\& 86.490 \\& 1,666.25 \\& 2025-08-31 \\& Adam Smith is the father of economics \\& \\\\\n", + " 2016 \\& 33,333 \\& 7.481k \\& 2,133.00 \\& 2025-09-24 \\& risk is hard to define \\& \\\\\n", + " 2021 \\& 75,000 \\& 520.411M \\& 3,299.88 \\& 2025-11-24 \\& risk is hard to define \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TBM2NV7BWZEMG-1-1.south west) -- (TBM2NV7BWZEMG-1-7.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TBM2NV7BWZEMG-3-1.south west) -- ([yshift=-0.0625em]TBM2NV7BWZEMG-3-7.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TBM2NV7BWZEMG-8-1.base west) -- ([yshift=-0.3125em]TBM2NV7BWZEMG-8-7.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TBM2NV7BWZEMG-2-2.south west) -- ([yshift=-0.0625em]TBM2NV7BWZEMG-2-7.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TBM2NV7BWZEMG-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TBM2NV7BWZEMG-8-2.base west);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TBM2NV7BWZEMG-1-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TBM2NV7BWZEMG-8-3.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TBM2NV7BWZEMG-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TBM2NV7BWZEMG-8-5.base east);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TBM2NV7BWZEMG)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#| echo: fenced\n", + "#| label: tbl-hard-rules-3c\n", + "#| tbl-cap: \"Change padding and debug mode, boxes (Quarto generated caption)\"\n", + "display(sGT(hard.sample(5).sort_index(),\n", + " caption='Change padding, debug mode lines',\n", + " padding_trbl=(10, 10, 20, 20), debug=True))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the raw HTML and LaTeX output.\n", + "\n", + "\\footnotesize" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HTML output\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
(id: TWRLFJOULVHRG)
ABC
years!IntFloatFloat3Longer Text
2000-100,000 2.389p-1,601.002025-03-14once upon a time
2001-91,667 22.217p-1,367.622025-03-26 risk is hard to define
2002-83,333 206.619p-1,134.252025-04-07 not in Kansas anymore
2003-75,000 1.922n-900.882025-04-19 neutrinos are hard to detect
\n", + "\n", + "\n", + "\n", + "TeX output\n", + "\n", + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged , draw=blue!10},\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=6.59em},\n", + "\tcolumn 3/.style={nodes={align=right }, nosep, text width=7.41em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=7.41em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=8.24em},\n", + "\tcolumn 6/.style={nodes={align=left }, nosep, text width=23.89em},\n", + "\tcolumn 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TWRLFJOULVHRG) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\\\\n", + " \\grtspacer \\& A\\grtspacer \\& \\grtspacer \\& B\\grtspacer \\& \\grtspacer \\& C\\grtspacer \\& \\\\\n", + " years!\\grtspacer \\& Int\\grtspacer \\& Float\\grtspacer \\& Float\\grtspacer \\& 3\\grtspacer \\& Longer Text\\grtspacer \\& \\\\\n", + " 2000 \\& -100,000 \\& 2.389p \\& -1,601.00 \\& 2025-03-14 \\& once upon a time \\& \\\\\n", + " 2001 \\& -91,667 \\& 22.217p \\& -1,367.62 \\& 2025-03-26 \\& risk is hard to define \\& \\\\\n", + " 2002 \\& -83,333 \\& 206.619p \\& -1,134.25 \\& 2025-04-07 \\& not in Kansas anymore \\& \\\\\n", + " 2003 \\& -75,000 \\& 1.922n \\& -900.88 \\& 2025-04-19 \\& neutrinos are hard to detect \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TWRLFJOULVHRG-1-1.south west) -- (TWRLFJOULVHRG-1-7.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TWRLFJOULVHRG-3-1.south west) -- ([yshift=-0.0625em]TWRLFJOULVHRG-3-7.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TWRLFJOULVHRG-7-1.base west) -- ([yshift=-0.3125em]TWRLFJOULVHRG-7-7.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TWRLFJOULVHRG-2-2.south west) -- ([yshift=-0.0625em]TWRLFJOULVHRG-2-7.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TWRLFJOULVHRG-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TWRLFJOULVHRG-7-2.base west);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TWRLFJOULVHRG-1-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TWRLFJOULVHRG-7-3.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TWRLFJOULVHRG-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TWRLFJOULVHRG-7-5.base east);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n", + "\n" + ] + } + ], + "source": [ + "#| label: raw-output\n", + "f = sGT(hard.head(4), debug=True)\n", + "print('HTML output\\n')\n", + "print(f._repr_html_())\n", + "\n", + "print('\\n\\n\\nTeX output\\n')\n", + "print(f._repr_latex_())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\normalsize\n", + "\n", + "\n", + "# A Table with TeX Content" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AB$C_1$C_2 not tex$\\cos(A)$
x
20200.424657$x^5$$\\sin(5x\\pi/n)$$x^5$\\(x^5\\)
20210.209278$x^6$$\\sin(6x\\pi/n)$$x^6$\\(x^6\\)
20220.068308$x^7$$\\sin(7x\\pi/n)$$x^7$\\(x^7\\)
20230.797205$x^8$$\\sin(8x\\pi/n)$$x^8$\\(x^8\\)
20240.519346$x^9$$\\sin(9x\\pi/n)$$x^9$\\(x^9\\)
\n", + "
" + ], + "text/plain": [ + " A B $C_1$ C_2 not tex $\\cos(A)$\n", + "x \n", + "2020 0.424657 $x^5$ $\\sin(5x\\pi/n)$ $x^5$ \\(x^5\\)\n", + "2021 0.209278 $x^6$ $\\sin(6x\\pi/n)$ $x^6$ \\(x^6\\)\n", + "2022 0.068308 $x^7$ $\\sin(7x\\pi/n)$ $x^7$ \\(x^7\\)\n", + "2023 0.797205 $x^8$ $\\sin(8x\\pi/n)$ $x^8$ \\(x^8\\)\n", + "2024 0.519346 $x^9$ $\\sin(9x\\pi/n)$ $x^9$ \\(x^9\\)" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| label: tbl-tex\n", + "#| tbl-cap: '(Quarto generated caption): table displayed by default routine.'\n", + "index = pd.Index([\"A\", \"B\", \"$C_1$\", \"C_2 not tex\", '$\\\\cos(A)$'])\n", + "tex = pd.DataFrame(\n", + "{'x': np.arange(2020, 2025, dtype=int),\n", + "'b': np.random.random(5),\n", + "'a1': [f'$x^{i}$' for i in range(5,10)],\n", + "'a2': [f'$\\\\sin({i}x\\\\pi/n)$' for i in range(5,10)],\n", + "'a3': [f'$x^{i}$' for i in range(5,10)],\n", + "'a4': [f'\\\\(x^{i}\\\\)' for i in range(5,10)],\n", + "}).set_index('x')\n", + "tex = tex.head()\n", + "tex.columns = index\n", + "tex" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
GT Caption
xAB\\(C_1\\)C_2 not tex\\(\\cos(A)\\)
20200.42466\\(x^5\\)\\(\\sin(5x\\pi/n)\\)\\(x^5\\)\\(x^5\\)
20210.20928\\(x^6\\)\\(\\sin(6x\\pi/n)\\)\\(x^6\\)\\(x^6\\)
20220.06831\\(x^7\\)\\(\\sin(7x\\pi/n)\\)\\(x^7\\)\\(x^7\\)
20230.79721\\(x^8\\)\\(\\sin(8x\\pi/n)\\)\\(x^8\\)\\(x^8\\)
20240.51935\\(x^9\\)\\(\\sin(9x\\pi/n)\\)\\(x^9\\)\\(x^9\\)
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=2.40em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=6.61em},\n", + "\tcolumn 3/.style={nodes={align=left }, nosep, text width=4.72em},\n", + "\tcolumn 4/.style={nodes={align=left }, nosep, text width=14.17em},\n", + "\tcolumn 5/.style={nodes={align=left }, nosep, text width=4.72em},\n", + "\tcolumn 6/.style={nodes={align=left }, nosep, text width=8.50em},\n", + "\tcolumn 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (T5LVCCJLTOVH6) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\\\\n", + " x\\grtspacer \\& A\\grtspacer \\& B\\grtspacer \\& $C_1$\\grtspacer \\& C\\_2 not tex\\grtspacer \\& $\\cos(A)$\\grtspacer \\& \\\\\n", + " 2020 \\& 0.42466 \\& $x^5$ \\& $\\sin(5x\\pi/n)$ \\& $x^5$ \\& \\(x^5\\) \\& \\\\\n", + " 2021 \\& 0.20928 \\& $x^6$ \\& $\\sin(6x\\pi/n)$ \\& $x^6$ \\& \\(x^6\\) \\& \\\\\n", + " 2022 \\& 0.06831 \\& $x^7$ \\& $\\sin(7x\\pi/n)$ \\& $x^7$ \\& \\(x^7\\) \\& \\\\\n", + " 2023 \\& 0.79721 \\& $x^8$ \\& $\\sin(8x\\pi/n)$ \\& $x^8$ \\& \\(x^8\\) \\& \\\\\n", + " 2024 \\& 0.51935 \\& $x^9$ \\& $\\sin(9x\\pi/n)$ \\& $x^9$ \\& \\(x^9\\) \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (T5LVCCJLTOVH6-1-1.south west) -- (T5LVCCJLTOVH6-1-7.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]T5LVCCJLTOVH6-2-1.south west) -- ([yshift=-0.0625em]T5LVCCJLTOVH6-2-7.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]T5LVCCJLTOVH6-7-1.base west) -- ([yshift=-0.3125em]T5LVCCJLTOVH6-7-7.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]T5LVCCJLTOVH6-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]T5LVCCJLTOVH6-7-2.base west);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=T5LVCCJLTOVH6)" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| label: tbl-tex-2\n", + "#| tbl-cap: GT output (Quarto generated caption)\n", + "sGT(tex, 'GT Caption')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ratio columns." + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Ratio columns in A
xA (%)B\\(C_1\\)C_2 not tex\\(\\cos(A)\\)
202042.5%\\(x^5\\)\\(\\sin(5x\\pi/n)\\)\\(x^5\\)\\(x^5\\)
202120.9%\\(x^6\\)\\(\\sin(6x\\pi/n)\\)\\(x^6\\)\\(x^6\\)
20226.8%\\(x^7\\)\\(\\sin(7x\\pi/n)\\)\\(x^7\\)\\(x^7\\)
202379.7%\\(x^8\\)\\(\\sin(8x\\pi/n)\\)\\(x^8\\)\\(x^8\\)
202451.9%\\(x^9\\)\\(\\sin(9x\\pi/n)\\)\\(x^9\\)\\(x^9\\)
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=2.40em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=5.67em},\n", + "\tcolumn 3/.style={nodes={align=left }, nosep, text width=4.72em},\n", + "\tcolumn 4/.style={nodes={align=left }, nosep, text width=14.17em},\n", + "\tcolumn 5/.style={nodes={align=left }, nosep, text width=4.72em},\n", + "\tcolumn 6/.style={nodes={align=left }, nosep, text width=8.50em},\n", + "\tcolumn 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (THHAXSGJ6KMIB) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\\\\n", + " x\\grtspacer \\& A (\\%)\\grtspacer \\& B\\grtspacer \\& $C_1$\\grtspacer \\& C\\_2 not tex\\grtspacer \\& $\\cos(A)$\\grtspacer \\& \\\\\n", + " 2020 \\& 42.5\\% \\& $x^5$ \\& $\\sin(5x\\pi/n)$ \\& $x^5$ \\& \\(x^5\\) \\& \\\\\n", + " 2021 \\& 20.9\\% \\& $x^6$ \\& $\\sin(6x\\pi/n)$ \\& $x^6$ \\& \\(x^6\\) \\& \\\\\n", + " 2022 \\& 6.8\\% \\& $x^7$ \\& $\\sin(7x\\pi/n)$ \\& $x^7$ \\& \\(x^7\\) \\& \\\\\n", + " 2023 \\& 79.7\\% \\& $x^8$ \\& $\\sin(8x\\pi/n)$ \\& $x^8$ \\& \\(x^8\\) \\& \\\\\n", + " 2024 \\& 51.9\\% \\& $x^9$ \\& $\\sin(9x\\pi/n)$ \\& $x^9$ \\& \\(x^9\\) \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (THHAXSGJ6KMIB-1-1.south west) -- (THHAXSGJ6KMIB-1-7.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]THHAXSGJ6KMIB-2-1.south west) -- ([yshift=-0.0625em]THHAXSGJ6KMIB-2-7.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]THHAXSGJ6KMIB-7-1.base west) -- ([yshift=-0.3125em]THHAXSGJ6KMIB-7-7.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]THHAXSGJ6KMIB-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]THHAXSGJ6KMIB-7-2.base west);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=THHAXSGJ6KMIB)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| label: tbl-tex-3\n", + "#| tbl-cap: greater table output\n", + "tex.columns = [\"A (%)\", \"B\", \"$C_1$\", \"C_2 not tex\", '$\\\\cos(A)$']\n", + "sGT(tex, 'Ratio columns in A', ratio_cols='A (%)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Greater_tables Test Suite" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [], + "source": [ + "#| echo: true\n", + "#| label: greater-tables-test\n", + "test_gen = gtu.TestDFGenerator(0, 0)\n", + "ans = test_gen.test_suite() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test Table: basic" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Basic
unintentionallyamply floatdeeper strgrains dateindicators datetimeinject intoriginates strphilosophers intsnowy float
8,003 12.899Mmalicious2025-09-082010-07-06-3,452contracts693,336,903 5.120
18,582 858.904manufacturers2023-05-022015-06-127,457collapse789,639,196 765.357m
18,825 229.354kshortfall2030-08-242008-08-21-2,476sprawl741,809,916 8.096k
20,431 5.300plugs2023-03-072019-03-272,255generalize993,293,639 106.115m
61,650 461.180msetter2023-03-072015-06-129,625downright577,547,084 178.442k
65,395 230.601longhorn2033-05-292024-10-10-5,797humor821,555,659 2.267M
69,741 829.476secretly2025-02-102024-09-189,649hills99,644,183 97.579k
74,709 110.246strove2033-05-292008-08-211,255monster128,426,346 404.926k
77,783 7.586conclusive2030-08-242023-04-294,827proffer818,501,173 18.774k
97,969 10.485kjosephine2025-02-102024-09-187,937permissions38,019,258 538.646
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=6.02em},\n", + "\tcolumn 3/.style={nodes={align=left }, nosep, text width=8.70em},\n", + "\tcolumn 4/.style={nodes={align=center}, nosep, text width=6.69em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=6.69em},\n", + "\tcolumn 6/.style={nodes={align=right }, nosep, text width=4.02em},\n", + "\tcolumn 7/.style={nodes={align=left }, nosep, text width=7.36em},\n", + "\tcolumn 8/.style={nodes={align=right }, nosep, text width=8.03em},\n", + "\tcolumn 9/.style={nodes={align=right }, nosep, text width=6.02em},\n", + "\tcolumn 10/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TH37PJBJRXHJV) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\& \\& \\& \\\\\n", + " unintentionally\\grtspacer \\& amply float\\grtspacer \\& deeper str\\grtspacer \\& grains date\\grtspacer \\& indicators datetime\\grtspacer \\& inject int\\grtspacer \\& originates str\\grtspacer \\& philosophers int\\grtspacer \\& snowy float\\grtspacer \\& \\\\\n", + " 8,003 \\& 12.899M \\& malicious \\& 2025-09-08 \\& 2010-07-06 \\& -3,452 \\& contracts \\& 693,336,903 \\& 5.120 \\& \\\\\n", + " 18,582 \\& 858.904 \\& manufacturers \\& 2023-05-02 \\& 2015-06-12 \\& 7,457 \\& collapse \\& 789,639,196 \\& 765.357m \\& \\\\\n", + " 18,825 \\& 229.354k \\& shortfall \\& 2030-08-24 \\& 2008-08-21 \\& -2,476 \\& sprawl \\& 741,809,916 \\& 8.096k \\& \\\\\n", + " 20,431 \\& 5.300 \\& plugs \\& 2023-03-07 \\& 2019-03-27 \\& 2,255 \\& generalize \\& 993,293,639 \\& 106.115m \\& \\\\\n", + " 61,650 \\& 461.180m \\& setter \\& 2023-03-07 \\& 2015-06-12 \\& 9,625 \\& downright \\& 577,547,084 \\& 178.442k \\& \\\\\n", + " 65,395 \\& 230.601 \\& longhorn \\& 2033-05-29 \\& 2024-10-10 \\& -5,797 \\& humor \\& 821,555,659 \\& 2.267M \\& \\\\\n", + " 69,741 \\& 829.476 \\& secretly \\& 2025-02-10 \\& 2024-09-18 \\& 9,649 \\& hills \\& 99,644,183 \\& 97.579k \\& \\\\\n", + " 74,709 \\& 110.246 \\& strove \\& 2033-05-29 \\& 2008-08-21 \\& 1,255 \\& monster \\& 128,426,346 \\& 404.926k \\& \\\\\n", + " 77,783 \\& 7.586 \\& conclusive \\& 2030-08-24 \\& 2023-04-29 \\& 4,827 \\& proffer \\& 818,501,173 \\& 18.774k \\& \\\\\n", + " 97,969 \\& 10.485k \\& josephine \\& 2025-02-10 \\& 2024-09-18 \\& 7,937 \\& permissions \\& 38,019,258 \\& 538.646 \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TH37PJBJRXHJV-1-1.south west) -- (TH37PJBJRXHJV-1-10.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TH37PJBJRXHJV-2-1.south west) -- ([yshift=-0.0625em]TH37PJBJRXHJV-2-10.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TH37PJBJRXHJV-12-1.base west) -- ([yshift=-0.3125em]TH37PJBJRXHJV-12-10.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TH37PJBJRXHJV-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TH37PJBJRXHJV-12-2.base west);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TH37PJBJRXHJV)" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| echo: true\n", + "#| label: tbl-greater-tables-test-0\n", + "#| tbl-cap: GT output for test table basic\n", + "hrw = (0, 0, 0)\n", + "sGT(ans['basic'], \"Basic\", ratio_cols='z', aligners={'w': 'l'},\n", + " hrule_widths=hrw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comments go here. \n", + "\n", + "\n", + "\n", + "## Test Table: timeseries" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Timeseries
bushesAcquired Bars Renter dateBristle Engagement Backwater datetimeHeighten Boning Unlucky float
2008-07-102012-05-162010-10-14 517.008E
2009-03-252026-04-052020-03-31 0.000y
2009-08-092017-04-252016-04-01-29.269u
2010-02-012026-04-052013-07-14 0.000y
2010-12-312024-01-032016-11-20-30.741u
2014-06-202032-11-162016-04-01 1.250m
2015-02-132026-04-052016-11-20 335.357f
2018-03-192012-05-162029-02-11-102.890Z
2018-12-072024-07-262019-01-14-0.022y
2019-10-292007-07-132013-07-14 1.216k
2021-08-212024-10-122025-07-11 43.521a
2021-11-122007-07-132031-10-24-0.000y
2025-01-012009-04-132016-04-01-631123020.816Y
2026-01-102017-04-252029-02-11 0.000y
2026-12-272017-04-252016-11-20-0.000y
2027-09-202026-04-052016-04-01 3321909909.577Y
2028-12-232014-04-092032-03-29-25.876Z
2029-11-142018-03-162029-02-11-69.776E
2031-04-202007-07-132016-04-01-2.204k
2031-08-192032-11-162019-01-14 32915.427Y
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=6.00em},\n", + "\tcolumn 2/.style={nodes={align=center}, nosep, text width=9.45em},\n", + "\tcolumn 3/.style={nodes={align=center}, nosep, text width=9.45em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=15.12em},\n", + "\tcolumn 5/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TRP5OQHAK77OA) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\\\\n", + " bushes\\grtspacer \\& Acquired Bars Renter date\\grtspacer \\& Bristle Engagement Backwater datetime\\grtspacer \\& Heighten Boning Unlucky float\\grtspacer \\& \\\\\n", + " 2008-07-10 \\& 2012-05-16 \\& 2010-10-14 \\& 517.008E \\& \\\\\n", + " 2009-03-25 \\& 2026-04-05 \\& 2020-03-31 \\& 0.000y \\& \\\\\n", + " 2009-08-09 \\& 2017-04-25 \\& 2016-04-01 \\& -29.269u \\& \\\\\n", + " 2010-02-01 \\& 2026-04-05 \\& 2013-07-14 \\& 0.000y \\& \\\\\n", + " 2010-12-31 \\& 2024-01-03 \\& 2016-11-20 \\& -30.741u \\& \\\\\n", + " 2014-06-20 \\& 2032-11-16 \\& 2016-04-01 \\& 1.250m \\& \\\\\n", + " 2015-02-13 \\& 2026-04-05 \\& 2016-11-20 \\& 335.357f \\& \\\\\n", + " 2018-03-19 \\& 2012-05-16 \\& 2029-02-11 \\& -102.890Z \\& \\\\\n", + " 2018-12-07 \\& 2024-07-26 \\& 2019-01-14 \\& -0.022y \\& \\\\\n", + " 2019-10-29 \\& 2007-07-13 \\& 2013-07-14 \\& 1.216k \\& \\\\\n", + " 2021-08-21 \\& 2024-10-12 \\& 2025-07-11 \\& 43.521a \\& \\\\\n", + " 2021-11-12 \\& 2007-07-13 \\& 2031-10-24 \\& -0.000y \\& \\\\\n", + " 2025-01-01 \\& 2009-04-13 \\& 2016-04-01 \\& -631123020.816Y \\& \\\\\n", + " 2026-01-10 \\& 2017-04-25 \\& 2029-02-11 \\& 0.000y \\& \\\\\n", + " 2026-12-27 \\& 2017-04-25 \\& 2016-11-20 \\& -0.000y \\& \\\\\n", + " 2027-09-20 \\& 2026-04-05 \\& 2016-04-01 \\& 3321909909.577Y \\& \\\\\n", + " 2028-12-23 \\& 2014-04-09 \\& 2032-03-29 \\& -25.876Z \\& \\\\\n", + " 2029-11-14 \\& 2018-03-16 \\& 2029-02-11 \\& -69.776E \\& \\\\\n", + " 2031-04-20 \\& 2007-07-13 \\& 2016-04-01 \\& -2.204k \\& \\\\\n", + " 2031-08-19 \\& 2032-11-16 \\& 2019-01-14 \\& 32915.427Y \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TRP5OQHAK77OA-1-1.south west) -- (TRP5OQHAK77OA-1-5.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TRP5OQHAK77OA-2-1.south west) -- ([yshift=-0.0625em]TRP5OQHAK77OA-2-5.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TRP5OQHAK77OA-22-1.base west) -- ([yshift=-0.3125em]TRP5OQHAK77OA-22-5.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TRP5OQHAK77OA-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TRP5OQHAK77OA-22-2.base west);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TRP5OQHAK77OA)" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| echo: true\n", + "#| label: tbl-greater-tables-test-1\n", + "#| tbl-cap: GT output for test table timeseries\n", + "hrw = (0, 0, 0)\n", + "sGT(ans['timeseries'], \"Timeseries\", ratio_cols='z', aligners={'w': 'l'},\n", + " hrule_widths=hrw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comments go here. \n", + "\n", + "\n", + "\n", + "\n", + "## Test Table: multiindex" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Multiindex
phantomanimaldirectionBitty Youthful Express floatImmunity Counts Hose datePennies Reveals Afresh dateSpotty Paralleling Discreet dateStanley Quarrel Alligator str
18,496assent43,0860.000032010-04-132033-01-252033-01-12areas
85,7800.360672027-07-102032-01-232025-10-22mantra
crusader63,5350.000002027-07-102029-09-042008-11-09refers
87,8260.000032029-08-312021-11-142010-09-03ministerial
magnetic10,1110.004622022-12-072021-06-142023-01-22woods
14,3500.000002010-04-132022-03-162023-01-22codification
43,7530.011002019-02-172029-09-042009-05-18object
98,6820.000002027-07-102033-01-252009-02-12dusty
51,439assent93,0010.000002031-07-032021-11-142020-10-04lama
crusader49,6880.000002022-12-072021-11-142033-01-12citizen
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em},\n", + "\tcolumn 2/.style={nodes={align=left }, nosep, text width=4.80em},\n", + "\tcolumn 3/.style={nodes={align=left }, nosep, text width=3.60em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=7.08em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=8.85em},\n", + "\tcolumn 6/.style={nodes={align=center}, nosep, text width=8.85em},\n", + "\tcolumn 7/.style={nodes={align=center}, nosep, text width=9.74em},\n", + "\tcolumn 8/.style={nodes={align=left }, nosep, text width=10.62em},\n", + "\tcolumn 9/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TUYH5E6KQ5P65) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\& \\& \\\\\n", + " phantom\\grtspacer \\& animal\\grtspacer \\& direction\\grtspacer \\& Bitty Youthful Express float\\grtspacer \\& Immunity Counts Hose date\\grtspacer \\& Pennies Reveals Afresh date\\grtspacer \\& Spotty Paralleling Discreet date\\grtspacer \\& Stanley Quarrel Alligator str\\grtspacer \\& \\\\\n", + " 18,496 \\& assent \\& 43,086 \\& 0.00003 \\& 2010-04-13 \\& 2033-01-25 \\& 2033-01-12 \\& areas \\& \\\\\n", + " \\& assent \\& 85,780 \\& 0.36067 \\& 2027-07-10 \\& 2032-01-23 \\& 2025-10-22 \\& mantra \\& \\\\\n", + " \\& crusader \\& 63,535 \\& 0.00000 \\& 2027-07-10 \\& 2029-09-04 \\& 2008-11-09 \\& refers \\& \\\\\n", + " \\& crusader \\& 87,826 \\& 0.00003 \\& 2029-08-31 \\& 2021-11-14 \\& 2010-09-03 \\& ministerial \\& \\\\\n", + " \\& magnetic \\& 10,111 \\& 0.00462 \\& 2022-12-07 \\& 2021-06-14 \\& 2023-01-22 \\& woods \\& \\\\\n", + " \\& magnetic \\& 14,350 \\& 0.00000 \\& 2010-04-13 \\& 2022-03-16 \\& 2023-01-22 \\& codification \\& \\\\\n", + " \\& magnetic \\& 43,753 \\& 0.01100 \\& 2019-02-17 \\& 2029-09-04 \\& 2009-05-18 \\& object \\& \\\\\n", + " \\& magnetic \\& 98,682 \\& 0.00000 \\& 2027-07-10 \\& 2033-01-25 \\& 2009-02-12 \\& dusty \\& \\\\\n", + " 51,439 \\& assent \\& 93,001 \\& 0.00000 \\& 2031-07-03 \\& 2021-11-14 \\& 2020-10-04 \\& lama \\& \\\\\n", + " \\& crusader \\& 49,688 \\& 0.00000 \\& 2022-12-07 \\& 2021-11-14 \\& 2033-01-12 \\& citizen \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TUYH5E6KQ5P65-1-1.south west) -- (TUYH5E6KQ5P65-1-9.south east);\n", + "\\path[draw, very thin] ([yshift=-0.0625em]TUYH5E6KQ5P65-10-1.south west) -- ([yshift=-0.0625em]TUYH5E6KQ5P65-10-9.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TUYH5E6KQ5P65-2-1.south west) -- ([yshift=-0.0625em]TUYH5E6KQ5P65-2-9.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TUYH5E6KQ5P65-12-1.base west) -- ([yshift=-0.3125em]TUYH5E6KQ5P65-12-9.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TUYH5E6KQ5P65-1-4.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TUYH5E6KQ5P65-12-4.base west);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TUYH5E6KQ5P65)" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| echo: true\n", + "#| label: tbl-greater-tables-test-2\n", + "#| tbl-cap: GT output for test table multiindex\n", + "hrw = (1.5, 1.0, 0.5)\n", + "sGT(ans['multiindex'], \"Multiindex\", ratio_cols='z', aligners={'w': 'l'},\n", + " hrule_widths=hrw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comments go here. \n", + "\n", + "\n", + "\n", + "\n", + "## Test Table: multicolumns" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Multicolumns
psychicskirted
pressventuredventured
stimulationgallingunopenedpessimismskingeneva
5,3090.00001penalizing20202030-02-110.20600
6,0290.00000guise20092022-03-180.00003
8,0653.27603pseudo20082008-07-275.65328
14,7490.04182instituted20252009-06-050.00034
43,0620.00000redeemable19952029-05-290.00000
61,8720.19522seth20062022-03-180.00000
69,9790.22767aimless20002028-03-060.00000
70,5260.00226affirms19932008-07-270.00035
81,0720.00000spain20222028-03-060.00000
89,0600.00001underemployed20112008-07-270.02550
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 4/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=6.60em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=6.61em},\n", + "\tcolumn 3/.style={nodes={align=left }, nosep, text width=12.28em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=8.50em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=9.45em},\n", + "\tcolumn 6/.style={nodes={align=right }, nosep, text width=7.56em},\n", + "\tcolumn 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TDLCUKI46XK4B) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\\\\n", + " \\grtspacer \\& psychic\\grtspacer \\& \\grtspacer \\& \\grtspacer \\& \\grtspacer \\& skirted\\grtspacer \\& \\\\\n", + " \\grtspacer \\& press\\grtspacer \\& \\grtspacer \\& ventured\\grtspacer \\& \\grtspacer \\& \\grtspacer \\& \\\\\n", + " stimulation\\grtspacer \\& galling\\grtspacer \\& unopened\\grtspacer \\& pessimism\\grtspacer \\& skin\\grtspacer \\& geneva\\grtspacer \\& \\\\\n", + " 5,309 \\& 0.00001 \\& penalizing \\& 2020 \\& 2030-02-11 \\& 0.20600 \\& \\\\\n", + " 6,029 \\& 0.00000 \\& guise \\& 2009 \\& 2022-03-18 \\& 0.00003 \\& \\\\\n", + " 8,065 \\& 3.27603 \\& pseudo \\& 2008 \\& 2008-07-27 \\& 5.65328 \\& \\\\\n", + " 14,749 \\& 0.04182 \\& instituted \\& 2025 \\& 2009-06-05 \\& 0.00034 \\& \\\\\n", + " 43,062 \\& 0.00000 \\& redeemable \\& 1995 \\& 2029-05-29 \\& 0.00000 \\& \\\\\n", + " 61,872 \\& 0.19522 \\& seth \\& 2006 \\& 2022-03-18 \\& 0.00000 \\& \\\\\n", + " 69,979 \\& 0.22767 \\& aimless \\& 2000 \\& 2028-03-06 \\& 0.00000 \\& \\\\\n", + " 70,526 \\& 0.00226 \\& affirms \\& 1993 \\& 2008-07-27 \\& 0.00035 \\& \\\\\n", + " 81,072 \\& 0.00000 \\& spain \\& 2022 \\& 2028-03-06 \\& 0.00000 \\& \\\\\n", + " 89,060 \\& 0.00001 \\& underemployed \\& 2011 \\& 2008-07-27 \\& 0.02550 \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TDLCUKI46XK4B-1-1.south west) -- (TDLCUKI46XK4B-1-7.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TDLCUKI46XK4B-4-1.south west) -- ([yshift=-0.0625em]TDLCUKI46XK4B-4-7.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TDLCUKI46XK4B-14-1.base west) -- ([yshift=-0.3125em]TDLCUKI46XK4B-14-7.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TDLCUKI46XK4B-2-2.south west) -- ([yshift=-0.0625em]TDLCUKI46XK4B-2-7.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TDLCUKI46XK4B-3-2.south west) -- ([yshift=-0.0625em]TDLCUKI46XK4B-3-7.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TDLCUKI46XK4B-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TDLCUKI46XK4B-14-2.base west);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TDLCUKI46XK4B-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TDLCUKI46XK4B-14-5.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TDLCUKI46XK4B-2-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TDLCUKI46XK4B-14-3.base east);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TDLCUKI46XK4B)" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| echo: true\n", + "#| label: tbl-greater-tables-test-3\n", + "#| tbl-cap: GT output for test table multicolumns\n", + "hrw = (0, 0, 0)\n", + "sGT(ans['multicolumns'], \"Multicolumns\", ratio_cols='z', aligners={'w': 'l'},\n", + " hrule_widths=hrw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comments go here. \n", + "\n", + "\n", + "\n", + "\n", + "## Test Table: complex" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Complex
casualtycopenhagen
negatingsimmeringautisticnegatingsimmering
hardingbrokenloosenedbachelordrawingsarbitratedcashingangelsbeneficiarylendingstudiouslyparaplegicunwieldy
49,146brew2930.062952010-05-152031-06-121997chore937,952,7420.000012031-08-060.000002014
3,4261.965862013-08-052029-08-202008race804,609,9670.000002013-10-190.001382015
19,8710.000002028-03-182011-02-161993economy268,719,6180.000012013-10-190.000281994
77,9700.000032028-03-182008-09-292023exes4,595,8444.231082013-10-190.008542015
fastest13,8560.000002008-07-292007-03-021995intrinsically655,235,8020.000092033-05-090.000022004
31,4180.000012031-03-122028-10-192019cradles657,320,7590.000002018-11-170.000002001
35,0220.000002016-08-012010-04-212027massage283,304,1670.000002020-09-020.005492029
80,1080.175482031-03-122017-05-222018puzzled925,082,0700.000002013-10-191.889622021
fliers25,9360.000152016-09-042017-12-132029computations426,967,5830.000002032-04-150.000001999
64,4330.000002016-06-182007-05-292004passages612,446,4710.000172032-04-150.499592009
80,2290.225592016-06-182017-07-052018repeat112,776,8016.776172024-07-090.000002022
86,639brew13,9640.000002016-08-012007-03-022017frills821,529,7830.071682014-09-270.000002025
41,5930.000032008-07-292007-05-292016endorsing806,241,8460.029602027-10-150.000012002
43,8500.000002007-01-122011-02-211991editorially521,714,1100.222572031-08-060.000152024
82,5470.000002016-08-012007-03-022027february971,932,9271.455592015-10-180.000061997
fastest49,9010.000002027-11-122029-08-202022fancier69,371,8251.235702008-10-250.001172009
59,1510.007232018-04-242029-11-192022hope675,380,4080.080462015-10-180.000011992
85,9300.000002015-06-242025-05-142020decried923,139,3670.000002015-10-180.000012009
fliers45,8760.008302018-12-172025-05-142019proximate721,860,8810.000062012-02-230.022562028
74,6670.000002023-08-032028-10-132001cautionary44,092,4540.000012008-10-252.240842027
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\trow 4/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=4.20em},\n", + "\tcolumn 2/.style={nodes={align=left }, nosep, text width=4.20em},\n", + "\tcolumn 3/.style={nodes={align=left }, nosep, text width=4.80em},\n", + "\tcolumn 4/.style={nodes={align=right }, nosep, text width=4.80em},\n", + "\tcolumn 5/.style={nodes={align=center}, nosep, text width=6.00em},\n", + "\tcolumn 6/.style={nodes={align=center}, nosep, text width=6.00em},\n", + "\tcolumn 7/.style={nodes={align=right }, nosep, text width=5.40em},\n", + "\tcolumn 8/.style={nodes={align=left }, nosep, text width=7.80em},\n", + "\tcolumn 9/.style={nodes={align=right }, nosep, text width=6.60em},\n", + "\tcolumn 10/.style={nodes={align=right }, nosep, text width=6.00em},\n", + "\tcolumn 11/.style={nodes={align=center}, nosep, text width=6.00em},\n", + "\tcolumn 12/.style={nodes={align=right }, nosep, text width=6.00em},\n", + "\tcolumn 13/.style={nodes={align=right }, nosep, text width=6.00em},\n", + "\tcolumn 14/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TQT25W6I6LKNW) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\& \\& \\& \\& \\& \\& \\& \\& \\& \\\\\n", + " \\grtspacer \\& \\grtspacer \\& \\grtspacer \\& casualty\\grtspacer \\& \\grtspacer \\& \\grtspacer \\& \\grtspacer \\& copenhagen\\grtspacer \\& \\grtspacer \\& \\grtspacer \\& \\grtspacer \\& \\grtspacer \\& \\grtspacer \\& \\\\\n", + " \\grtspacer \\& \\grtspacer \\& \\grtspacer \\& negating\\grtspacer \\& \\grtspacer \\& simmering\\grtspacer \\& \\grtspacer \\& autistic\\grtspacer \\& \\grtspacer \\& negating\\grtspacer \\& \\grtspacer \\& simmering\\grtspacer \\& \\grtspacer \\& \\\\\n", + " harding\\grtspacer \\& broken\\grtspacer \\& loosened\\grtspacer \\& bachelor\\grtspacer \\& drawings\\grtspacer \\& arbitrated\\grtspacer \\& cashing\\grtspacer \\& angels\\grtspacer \\& beneficiary\\grtspacer \\& lending\\grtspacer \\& studiously\\grtspacer \\& paraplegic\\grtspacer \\& unwieldy\\grtspacer \\& \\\\\n", + " 49,146 \\& brew \\& 293 \\& 0.06295 \\& 2010-05-15 \\& 2031-06-12 \\& 1997 \\& chore \\& 937,952,742 \\& 0.00001 \\& 2031-08-06 \\& 0.00000 \\& 2014 \\& \\\\\n", + " \\& brew \\& 3,426 \\& 1.96586 \\& 2013-08-05 \\& 2029-08-20 \\& 2008 \\& race \\& 804,609,967 \\& 0.00000 \\& 2013-10-19 \\& 0.00138 \\& 2015 \\& \\\\\n", + " \\& brew \\& 19,871 \\& 0.00000 \\& 2028-03-18 \\& 2011-02-16 \\& 1993 \\& economy \\& 268,719,618 \\& 0.00001 \\& 2013-10-19 \\& 0.00028 \\& 1994 \\& \\\\\n", + " \\& brew \\& 77,970 \\& 0.00003 \\& 2028-03-18 \\& 2008-09-29 \\& 2023 \\& exes \\& 4,595,844 \\& 4.23108 \\& 2013-10-19 \\& 0.00854 \\& 2015 \\& \\\\\n", + " \\& fastest \\& 13,856 \\& 0.00000 \\& 2008-07-29 \\& 2007-03-02 \\& 1995 \\& intrinsically \\& 655,235,802 \\& 0.00009 \\& 2033-05-09 \\& 0.00002 \\& 2004 \\& \\\\\n", + " \\& fastest \\& 31,418 \\& 0.00001 \\& 2031-03-12 \\& 2028-10-19 \\& 2019 \\& cradles \\& 657,320,759 \\& 0.00000 \\& 2018-11-17 \\& 0.00000 \\& 2001 \\& \\\\\n", + " \\& fastest \\& 35,022 \\& 0.00000 \\& 2016-08-01 \\& 2010-04-21 \\& 2027 \\& massage \\& 283,304,167 \\& 0.00000 \\& 2020-09-02 \\& 0.00549 \\& 2029 \\& \\\\\n", + " \\& fastest \\& 80,108 \\& 0.17548 \\& 2031-03-12 \\& 2017-05-22 \\& 2018 \\& puzzled \\& 925,082,070 \\& 0.00000 \\& 2013-10-19 \\& 1.88962 \\& 2021 \\& \\\\\n", + " \\& fliers \\& 25,936 \\& 0.00015 \\& 2016-09-04 \\& 2017-12-13 \\& 2029 \\& computations \\& 426,967,583 \\& 0.00000 \\& 2032-04-15 \\& 0.00000 \\& 1999 \\& \\\\\n", + " \\& fliers \\& 64,433 \\& 0.00000 \\& 2016-06-18 \\& 2007-05-29 \\& 2004 \\& passages \\& 612,446,471 \\& 0.00017 \\& 2032-04-15 \\& 0.49959 \\& 2009 \\& \\\\\n", + " \\& fliers \\& 80,229 \\& 0.22559 \\& 2016-06-18 \\& 2017-07-05 \\& 2018 \\& repeat \\& 112,776,801 \\& 6.77617 \\& 2024-07-09 \\& 0.00000 \\& 2022 \\& \\\\\n", + " 86,639 \\& brew \\& 13,964 \\& 0.00000 \\& 2016-08-01 \\& 2007-03-02 \\& 2017 \\& frills \\& 821,529,783 \\& 0.07168 \\& 2014-09-27 \\& 0.00000 \\& 2025 \\& \\\\\n", + " \\& brew \\& 41,593 \\& 0.00003 \\& 2008-07-29 \\& 2007-05-29 \\& 2016 \\& endorsing \\& 806,241,846 \\& 0.02960 \\& 2027-10-15 \\& 0.00001 \\& 2002 \\& \\\\\n", + " \\& brew \\& 43,850 \\& 0.00000 \\& 2007-01-12 \\& 2011-02-21 \\& 1991 \\& editorially \\& 521,714,110 \\& 0.22257 \\& 2031-08-06 \\& 0.00015 \\& 2024 \\& \\\\\n", + " \\& brew \\& 82,547 \\& 0.00000 \\& 2016-08-01 \\& 2007-03-02 \\& 2027 \\& february \\& 971,932,927 \\& 1.45559 \\& 2015-10-18 \\& 0.00006 \\& 1997 \\& \\\\\n", + " \\& fastest \\& 49,901 \\& 0.00000 \\& 2027-11-12 \\& 2029-08-20 \\& 2022 \\& fancier \\& 69,371,825 \\& 1.23570 \\& 2008-10-25 \\& 0.00117 \\& 2009 \\& \\\\\n", + " \\& fastest \\& 59,151 \\& 0.00723 \\& 2018-04-24 \\& 2029-11-19 \\& 2022 \\& hope \\& 675,380,408 \\& 0.08046 \\& 2015-10-18 \\& 0.00001 \\& 1992 \\& \\\\\n", + " \\& fastest \\& 85,930 \\& 0.00000 \\& 2015-06-24 \\& 2025-05-14 \\& 2020 \\& decried \\& 923,139,367 \\& 0.00000 \\& 2015-10-18 \\& 0.00001 \\& 2009 \\& \\\\\n", + " \\& fliers \\& 45,876 \\& 0.00830 \\& 2018-12-17 \\& 2025-05-14 \\& 2019 \\& proximate \\& 721,860,881 \\& 0.00006 \\& 2012-02-23 \\& 0.02256 \\& 2028 \\& \\\\\n", + " \\& fliers \\& 74,667 \\& 0.00000 \\& 2023-08-03 \\& 2028-10-13 \\& 2001 \\& cautionary \\& 44,092,454 \\& 0.00001 \\& 2008-10-25 \\& 2.24084 \\& 2027 \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TQT25W6I6LKNW-1-1.south west) -- (TQT25W6I6LKNW-1-14.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TQT25W6I6LKNW-24-1.base west) -- ([yshift=-0.3125em]TQT25W6I6LKNW-24-14.base east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TQT25W6I6LKNW-4-1.south west) -- ([yshift=-0.0625em]TQT25W6I6LKNW-4-14.south east);\n", + "\\path[draw, very thin] ([yshift=-0.0625em]TQT25W6I6LKNW-15-1.south west) -- ([yshift=-0.0625em]TQT25W6I6LKNW-15-14.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TQT25W6I6LKNW-2-4.south west) -- ([yshift=-0.0625em]TQT25W6I6LKNW-2-14.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TQT25W6I6LKNW-3-4.south west) -- ([yshift=-0.0625em]TQT25W6I6LKNW-3-14.south east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TQT25W6I6LKNW-1-4.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TQT25W6I6LKNW-24-4.base west);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TQT25W6I6LKNW-1-7.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TQT25W6I6LKNW-24-7.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TQT25W6I6LKNW-2-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TQT25W6I6LKNW-24-5.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TQT25W6I6LKNW-2-9.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TQT25W6I6LKNW-24-9.base east);\n", + "\\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TQT25W6I6LKNW-2-11.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TQT25W6I6LKNW-24-11.base east);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TQT25W6I6LKNW)" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| echo: true\n", + "#| label: tbl-greater-tables-test-4\n", + "#| tbl-cap: GT output for test table complex\n", + "hrw = (1.5, 1.0, 0.5)\n", + "sGT(ans['complex'], \"Complex\", ratio_cols='z', aligners={'w': 'l'},\n", + " hrule_widths=hrw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comments go here. \n", + "\n", + "# Other input formats\n", + "\n", + "## Markown\n", + "\n", + "| **Insured group or insurance product** | **Sat** | **RP** | **RF** |\n", + "|:------------------------------------------------------------|:-------:|:------:|:------:|\n", + "| Non-standard auto | x | | |\n", + "| General liability for judgment proof corporation | x | | |\n", + "| Term life insurance | | x | |\n", + "| Catastrophe Reinsurance, outside rating agency bounds | | x | |\n", + "| High limit property per risk reinsurance | | x | |\n", + "| Personal lines for affluent individuals | x | x | |\n", + "| Small commercial lines | x | x | |\n", + "| Catastrophe reinsurance, within rating agency bounds | x | x | |\n", + "| Large account captive reinsurance | | | x |\n", + "| Structured quota share, requiring a risk transfer test | x | | x |\n", + "| Working layer casualty excess of loss | | x | x |\n", + "| Surplus relief quota share on cat exposed line | x | x | x |\n", + "| Middle market commercial lines work comp or commercial auto | x | x | x |\n" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Insured group or insurance productSatRPRF
Non-standard autox
General liability for judgment proof corporationx
Term life insurancex
Catastrophe Reinsurance, outside rating agency boundsx
High limit property per risk reinsurancex
Personal lines for affluent individualsxx
Small commercial linesxx
Catastrophe reinsurance, within rating agency boundsxx
Large account captive reinsurancex
Structured quota share, requiring a risk transfer testxx
Working layer casualty excess of lossxx
Surplus relief quota share on cat exposed linexxx
Middle market commercial lines work comp or commercial autoxxx
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=51.09em},\n", + "\tcolumn 2/.style={nodes={align=center}, nosep, text width=2.60em},\n", + "\tcolumn 3/.style={nodes={align=center}, nosep, text width=2.00em},\n", + "\tcolumn 4/.style={nodes={align=center}, nosep, text width=2.00em},\n", + "\tcolumn 5/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TGZV3SACILXPU) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\\\\n", + " Insured group or insurance product\\grtspacer \\& Sat\\grtspacer \\& RP\\grtspacer \\& RF\\grtspacer \\& \\\\\n", + " Non-standard auto \\& x \\& \\& \\& \\\\\n", + " General liability for judgment proof corporation \\& x \\& \\& \\& \\\\\n", + " Term life insurance \\& \\& x \\& \\& \\\\\n", + " Catastrophe Reinsurance, outside rating agency bounds \\& \\& x \\& \\& \\\\\n", + " High limit property per risk reinsurance \\& \\& x \\& \\& \\\\\n", + " Personal lines for affluent individuals \\& x \\& x \\& \\& \\\\\n", + " Small commercial lines \\& x \\& x \\& \\& \\\\\n", + " Catastrophe reinsurance, within rating agency bounds \\& x \\& x \\& \\& \\\\\n", + " Large account captive reinsurance \\& \\& \\& x \\& \\\\\n", + " Structured quota share, requiring a risk transfer test \\& x \\& \\& x \\& \\\\\n", + " Working layer casualty excess of loss \\& \\& x \\& x \\& \\\\\n", + " Surplus relief quota share on cat exposed line \\& x \\& x \\& x \\& \\\\\n", + " Middle market commercial lines work comp or commercial auto \\& x \\& x \\& x \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TGZV3SACILXPU-1-1.south west) -- (TGZV3SACILXPU-1-5.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TGZV3SACILXPU-2-1.south west) -- ([yshift=-0.0625em]TGZV3SACILXPU-2-5.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TGZV3SACILXPU-15-1.base west) -- ([yshift=-0.3125em]TGZV3SACILXPU-15-5.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TGZV3SACILXPU-1-1.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TGZV3SACILXPU-15-1.base west);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TGZV3SACILXPU)" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| echo: true\n", + "#| label: tbl-greater-tables-test-5\n", + "#| tbl-cap: GT from markdown table input\n", + "txt = '''\n", + "\n", + "| **Insured group or insurance product** | **Sat** | **RP** | **RF** |\n", + "|:------------------------------------------------------------|:-------:|:------:|:------:|\n", + "| Non-standard auto | x | | |\n", + "| General liability for judgment proof corporation | x | | |\n", + "| Term life insurance | | x | |\n", + "| Catastrophe Reinsurance, outside rating agency bounds | | x | |\n", + "| High limit property per risk reinsurance | | x | |\n", + "| Personal lines for affluent individuals | x | x | |\n", + "| Small commercial lines | x | x | |\n", + "| Catastrophe reinsurance, within rating agency bounds | x | x | |\n", + "| Large account captive reinsurance | | | x |\n", + "| Structured quota share, requiring a risk transfer test | x | | x |\n", + "| Working layer casualty excess of loss | | x | x |\n", + "| Surplus relief quota share on cat exposed line | x | x | x |\n", + "| Middle market commercial lines work comp or commercial auto | x | x | x |\n", + "\n", + "\n", + "'''\n", + "\n", + "GT(txt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## List of lists" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [], + "source": [ + "x = None\n", + "if x:\n", + " print(123)" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
abcd
west102030
east1020030
north1020300
south1002030
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=4.72em},\n", + "\tcolumn 2/.style={nodes={align=left }, nosep, text width=2.83em},\n", + "\tcolumn 3/.style={nodes={align=left }, nosep, text width=2.83em},\n", + "\tcolumn 4/.style={nodes={align=left }, nosep, text width=2.83em},\n", + "\tcolumn 5/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (THCUMQL66N455) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\\\\n", + " a\\grtspacer \\& b\\grtspacer \\& c\\grtspacer \\& d\\grtspacer \\& \\\\\n", + " west \\& 10 \\& 20 \\& 30 \\& \\\\\n", + " east \\& 10 \\& 200 \\& 30 \\& \\\\\n", + " north \\& 10 \\& 20 \\& 300 \\& \\\\\n", + " south \\& 100 \\& 20 \\& 30 \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (THCUMQL66N455-1-1.south west) -- (THCUMQL66N455-1-5.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]THCUMQL66N455-2-1.south west) -- ([yshift=-0.0625em]THCUMQL66N455-2-5.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]THCUMQL66N455-6-1.base west) -- ([yshift=-0.3125em]THCUMQL66N455-6-5.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]THCUMQL66N455-1-1.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]THCUMQL66N455-6-1.base west);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=THCUMQL66N455)" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#| echo: true\n", + "#| label: tbl-greater-tables-test-6\n", + "#| tbl-cap: GT output for list of lists input\n", + "lol = [['a', 'b', 'c', 'd'], ['west', 10, 20, 30], ['east', 10, 200, 30], ['north', 10, 20, 300], ['south', 100, 20, 30]]\n", + "GT(lol)" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
abcd
west102030
east1020030
north1020300
south1002030
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=4.72em},\n", + "\tcolumn 2/.style={nodes={align=left }, nosep, text width=2.83em},\n", + "\tcolumn 3/.style={nodes={align=left }, nosep, text width=2.83em},\n", + "\tcolumn 4/.style={nodes={align=left }, nosep, text width=2.83em},\n", + "\tcolumn 5/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TMTFI3L7TGZ44) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\& \\& \\\\\n", + " a\\grtspacer \\& b\\grtspacer \\& c\\grtspacer \\& d\\grtspacer \\& \\\\\n", + " west \\& 10 \\& 20 \\& 30 \\& \\\\\n", + " east \\& 10 \\& 200 \\& 30 \\& \\\\\n", + " north \\& 10 \\& 20 \\& 300 \\& \\\\\n", + " south \\& 100 \\& 20 \\& 30 \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TMTFI3L7TGZ44-1-1.south west) -- (TMTFI3L7TGZ44-1-5.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TMTFI3L7TGZ44-2-1.south west) -- ([yshift=-0.0625em]TMTFI3L7TGZ44-2-5.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TMTFI3L7TGZ44-6-1.base west) -- ([yshift=-0.3125em]TMTFI3L7TGZ44-6-5.base east);\n", + "\\path[draw, very thin] ([xshift=-0.1875em]TMTFI3L7TGZ44-1-1.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TMTFI3L7TGZ44-6-1.base west);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TMTFI3L7TGZ44)" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f = GT(lol)\n", + "f" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
VarAmount
A100.00
B12.3%
CA string
" + ], + "text/latex": [ + "\n", + "\\begin{tikzpicture}[\n", + " auto,\n", + " transform shape,\n", + " nosep/.style={inner sep=0},\n", + " table/.style={\n", + " matrix of nodes,\n", + " row sep=0.125em,\n", + " column sep=0.375em,\n", + " nodes in empty cells,\n", + " nodes={rectangle, scale=0.635, text badly ragged },\n", + "\trow 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}},\n", + "\trow 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\\bfseries}},\n", + "\tcolumn 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=2.83em},\n", + "\tcolumn 2/.style={nodes={align=right }, nosep, text width=7.56em},\n", + "\tcolumn 3/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em}\t}]\n", + "\\matrix (TGYV4AVDDNWJD) [table, ampersand replacement=\\&]{\n", + " \\& \\& \\\\\n", + " Var\\grtspacer \\& Amount\\grtspacer \\& \\\\\n", + " A \\& 100.00 \\& \\\\\n", + " B \\& 12.3\\% \\& \\\\\n", + " C \\& A string \\& \\\\\n", + "};\n", + "\n", + "\\path[draw, thick] (TGYV4AVDDNWJD-1-1.south west) -- (TGYV4AVDDNWJD-1-3.south east);\n", + "\\path[draw, semithick] ([yshift=-0.0625em]TGYV4AVDDNWJD-2-1.south west) -- ([yshift=-0.0625em]TGYV4AVDDNWJD-2-3.south east);\n", + "\\path[draw, thick] ([yshift=-0.3125em]TGYV4AVDDNWJD-5-1.base west) -- ([yshift=-0.3125em]TGYV4AVDDNWJD-5-3.base east);\n", + "\n", + "\n", + "\n", + "\\end{tikzpicture}\n" + ], + "text/plain": [ + "GreaterTable(df_id=TGYV4AVDDNWJD)" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tbl = '''\n", + "\n", + "Var | Amount \n", + ":---|------:\n", + "A | 100.0\n", + "B | 0.123\n", + "C | A string\n", + "\n", + "'''\n", + "\n", + "def ff(x):\n", + " if abs(x) < 1:\n", + " return f'{x:.1%}'\n", + " else:\n", + " return f'{x:,.2f}'\n", + "\n", + "sGT(tbl, table_float_format=ff)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(219.6506388719328, 569.7171884302238)" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P = 1000 * 1.075**-10 + 120\n", + "L = 1000\n", + "ry = .1\n", + "v = 1/(1+ry)\n", + "T = 10 \n", + "pv = P - v**T * L\n", + "fv = pv / v**T\n", + "pv, fv" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "jupytext": { + "formats": "ipynb,qmd:quarto" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/tables.pdf b/tests/tables.pdf index 6ca6baa01ea179c24cea296e615c81894fef23d5..61158e7836e2516a1a23369ad3b98fcdc618f850 100644 GIT binary patch delta 101902 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 - - +
(id: T4HD5XXJXVBZO)
+ @@ -718,7 +761,7 @@ HTML output - + @@ -726,7 +769,7 @@ HTML output - + @@ -734,7 +777,7 @@ HTML output - + @@ -742,7 +785,7 @@ HTML output - + @@ -762,7 +805,7 @@ TeX output row sep=0.125em, column sep=0.375em, nodes in empty cells, - nodes={rectangle, scale=0.635, text badly ragged}, + nodes={rectangle, scale=0.635, text badly ragged , draw=blue!10}, row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, row 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, @@ -773,23 +816,23 @@ TeX output column 5/.style={nodes={align=center}, nosep, text width=8.24em}, column 6/.style={nodes={align=left }, nosep, text width=23.89em}, column 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] -\matrix (T4HD5XXJXVBZO) [table, ampersand replacement=\&]{ +\matrix (T6JW65HYNG3A5) [table, ampersand replacement=\&]{ \& \& \& \& \& \& \\ \grtspacer \& A\grtspacer \& \grtspacer \& B\grtspacer \& \grtspacer \& C\grtspacer \& \\ years!\grtspacer \& Int\grtspacer \& Float\grtspacer \& Float\grtspacer \& 3\grtspacer \& Longer Text\grtspacer \& \\ - 2000 \& -100,000 \& 2.389p \& -1,601.00 \& 2025-03-13 \& once upon a time \& \\ - 2001 \& -91,667 \& 22.217p \& -1,367.62 \& 2025-03-25 \& risk is hard to define \& \\ - 2002 \& -83,333 \& 206.619p \& -1,134.25 \& 2025-04-06 \& not in Kansas anymore \& \\ - 2003 \& -75,000 \& 1.922n \& -900.88 \& 2025-04-18 \& neutrinos are hard to detect \& \\ + 2000 \& -100,000 \& 2.389p \& -1,601.00 \& 2025-03-14 \& once upon a time \& \\ + 2001 \& -91,667 \& 22.217p \& -1,367.62 \& 2025-03-26 \& risk is hard to define \& \\ + 2002 \& -83,333 \& 206.619p \& -1,134.25 \& 2025-04-07 \& not in Kansas anymore \& \\ + 2003 \& -75,000 \& 1.922n \& -900.88 \& 2025-04-19 \& neutrinos are hard to detect \& \\ }; -\path[draw, thick] (T4HD5XXJXVBZO-1-1.south west) -- (T4HD5XXJXVBZO-1-7.south east); -\path[draw, semithick] ([yshift=-0.0625em]T4HD5XXJXVBZO-3-1.south west) -- ([yshift=-0.0625em]T4HD5XXJXVBZO-3-7.south east); -\path[draw, thick] ([yshift=-0.3125em]T4HD5XXJXVBZO-7-1.base west) -- ([yshift=-0.3125em]T4HD5XXJXVBZO-7-7.base east); -\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]T4HD5XXJXVBZO-2-2.south west) -- ([yshift=-0.0625em]T4HD5XXJXVBZO-2-7.south east); -\path[draw, very thin] ([xshift=-0.1875em]T4HD5XXJXVBZO-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]T4HD5XXJXVBZO-7-2.base west); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T4HD5XXJXVBZO-1-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T4HD5XXJXVBZO-7-3.base east); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T4HD5XXJXVBZO-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T4HD5XXJXVBZO-7-5.base east); +\path[draw, thick] (T6JW65HYNG3A5-1-1.south west) -- (T6JW65HYNG3A5-1-7.south east); +\path[draw, semithick] ([yshift=-0.0625em]T6JW65HYNG3A5-3-1.south west) -- ([yshift=-0.0625em]T6JW65HYNG3A5-3-7.south east); +\path[draw, thick] ([yshift=-0.3125em]T6JW65HYNG3A5-7-1.base west) -- ([yshift=-0.3125em]T6JW65HYNG3A5-7-7.base east); +\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]T6JW65HYNG3A5-2-2.south west) -- ([yshift=-0.0625em]T6JW65HYNG3A5-2-7.south east); +\path[draw, very thin] ([xshift=-0.1875em]T6JW65HYNG3A5-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]T6JW65HYNG3A5-7-2.base west); +\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T6JW65HYNG3A5-1-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T6JW65HYNG3A5-7-3.base east); +\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T6JW65HYNG3A5-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T6JW65HYNG3A5-7-5.base east); @@ -798,7 +841,7 @@ TeX output \normalsize -\section{A Table with TeX}\label{a-table-with-tex} +\section{A Table with TeX Content}\label{a-table-with-tex-content} \begin{Shaded} \begin{Highlighting}[] @@ -819,7 +862,7 @@ TeX output \begin{longtable}[]{@{}llllll@{}} -\caption{\label{tbl-tex}Quarto generated caption: table displayed by +\caption{\label{tbl-tex}(Quarto generated caption): table displayed by default routine.} \tabularnewline @@ -831,19 +874,19 @@ x & & & & & \\ \endhead \bottomrule\noalign{} \endlastfoot -2020 & 0.324114 & \$x\^{}5\$ & +2020 & 0.501120 & \$x\^{}5\$ & \$\textbackslash sin(5x\textbackslash pi/n)\$ & \$x\^{}5\$ & \textbackslash(x\^{}5\textbackslash) \\ -2021 & 0.213173 & \$x\^{}6\$ & +2021 & 0.337571 & \$x\^{}6\$ & \$\textbackslash sin(6x\textbackslash pi/n)\$ & \$x\^{}6\$ & \textbackslash(x\^{}6\textbackslash) \\ -2022 & 0.639189 & \$x\^{}7\$ & +2022 & 0.869421 & \$x\^{}7\$ & \$\textbackslash sin(7x\textbackslash pi/n)\$ & \$x\^{}7\$ & \textbackslash(x\^{}7\textbackslash) \\ -2023 & 0.112127 & \$x\^{}8\$ & +2023 & 0.219699 & \$x\^{}8\$ & \$\textbackslash sin(8x\textbackslash pi/n)\$ & \$x\^{}8\$ & \textbackslash(x\^{}8\textbackslash) \\ -2024 & 0.681293 & \$x\^{}9\$ & +2024 & 0.861997 & \$x\^{}9\$ & \$\textbackslash sin(9x\textbackslash pi/n)\$ & \$x\^{}9\$ & \textbackslash(x\^{}9\textbackslash) \\ @@ -857,7 +900,7 @@ x & & & & & \\ \begin{table} -\caption{\label{tbl-tex-2}Quarto generated caption} +\caption{\label{tbl-tex-2}(Quarto generated caption)} \begin{tikzpicture}[ auto, @@ -868,7 +911,7 @@ x & & & & & \\ row sep=0.125em, column sep=0.375em, nodes in empty cells, - nodes={rectangle, scale=0.635, text badly ragged}, + nodes={rectangle, scale=0.635, text badly ragged }, row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=2.40em}, @@ -878,20 +921,20 @@ x & & & & & \\ column 5/.style={nodes={align=left }, nosep, text width=4.72em}, column 6/.style={nodes={align=left }, nosep, text width=8.50em}, column 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] -\matrix (TYTHIEOF4LT3H) [table, ampersand replacement=\&]{ +\matrix (TCPW6BX3HRZ2T) [table, ampersand replacement=\&]{ \& \& \& \& \& \& \\ x\grtspacer \& A\grtspacer \& B\grtspacer \& $C_1$\grtspacer \& C\_2 not tex\grtspacer \& $\cos(A)$\grtspacer \& \\ - 2020 \& 0.32411 \& $x^5$ \& $\sin(5x\pi/n)$ \& $x^5$ \& \(x^5\) \& \\ - 2021 \& 0.21317 \& $x^6$ \& $\sin(6x\pi/n)$ \& $x^6$ \& \(x^6\) \& \\ - 2022 \& 0.63919 \& $x^7$ \& $\sin(7x\pi/n)$ \& $x^7$ \& \(x^7\) \& \\ - 2023 \& 0.11213 \& $x^8$ \& $\sin(8x\pi/n)$ \& $x^8$ \& \(x^8\) \& \\ - 2024 \& 0.68129 \& $x^9$ \& $\sin(9x\pi/n)$ \& $x^9$ \& \(x^9\) \& \\ + 2020 \& 0.50112 \& $x^5$ \& $\sin(5x\pi/n)$ \& $x^5$ \& \(x^5\) \& \\ + 2021 \& 0.33757 \& $x^6$ \& $\sin(6x\pi/n)$ \& $x^6$ \& \(x^6\) \& \\ + 2022 \& 0.86942 \& $x^7$ \& $\sin(7x\pi/n)$ \& $x^7$ \& \(x^7\) \& \\ + 2023 \& 0.21970 \& $x^8$ \& $\sin(8x\pi/n)$ \& $x^8$ \& \(x^8\) \& \\ + 2024 \& 0.86200 \& $x^9$ \& $\sin(9x\pi/n)$ \& $x^9$ \& \(x^9\) \& \\ }; -\path[draw, thick] (TYTHIEOF4LT3H-1-1.south west) -- (TYTHIEOF4LT3H-1-7.south east); -\path[draw, semithick] ([yshift=-0.0625em]TYTHIEOF4LT3H-2-1.south west) -- ([yshift=-0.0625em]TYTHIEOF4LT3H-2-7.south east); -\path[draw, thick] ([yshift=-0.3125em]TYTHIEOF4LT3H-7-1.base west) -- ([yshift=-0.3125em]TYTHIEOF4LT3H-7-7.base east); -\path[draw, very thin] ([xshift=-0.1875em]TYTHIEOF4LT3H-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TYTHIEOF4LT3H-7-2.base west); +\path[draw, thick] (TCPW6BX3HRZ2T-1-1.south west) -- (TCPW6BX3HRZ2T-1-7.south east); +\path[draw, semithick] ([yshift=-0.0625em]TCPW6BX3HRZ2T-2-1.south west) -- ([yshift=-0.0625em]TCPW6BX3HRZ2T-2-7.south east); +\path[draw, thick] ([yshift=-0.3125em]TCPW6BX3HRZ2T-7-1.base west) -- ([yshift=-0.3125em]TCPW6BX3HRZ2T-7-7.base east); +\path[draw, very thin] ([xshift=-0.1875em]TCPW6BX3HRZ2T-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TCPW6BX3HRZ2T-7-2.base west); @@ -921,7 +964,7 @@ Ratio columns. row sep=0.125em, column sep=0.375em, nodes in empty cells, - nodes={rectangle, scale=0.635, text badly ragged}, + nodes={rectangle, scale=0.635, text badly ragged }, row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=2.40em}, @@ -931,20 +974,20 @@ Ratio columns. column 5/.style={nodes={align=left }, nosep, text width=4.72em}, column 6/.style={nodes={align=left }, nosep, text width=8.50em}, column 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] -\matrix (TUEYL75U3V6YO) [table, ampersand replacement=\&]{ +\matrix (T5ZEZ3634JGIC) [table, ampersand replacement=\&]{ \& \& \& \& \& \& \\ x\grtspacer \& A (\%)\grtspacer \& B\grtspacer \& $C_1$\grtspacer \& C\_2 not tex\grtspacer \& $\cos(A)$\grtspacer \& \\ - 2020 \& 32.4\% \& $x^5$ \& $\sin(5x\pi/n)$ \& $x^5$ \& \(x^5\) \& \\ - 2021 \& 21.3\% \& $x^6$ \& $\sin(6x\pi/n)$ \& $x^6$ \& \(x^6\) \& \\ - 2022 \& 63.9\% \& $x^7$ \& $\sin(7x\pi/n)$ \& $x^7$ \& \(x^7\) \& \\ - 2023 \& 11.2\% \& $x^8$ \& $\sin(8x\pi/n)$ \& $x^8$ \& \(x^8\) \& \\ - 2024 \& 68.1\% \& $x^9$ \& $\sin(9x\pi/n)$ \& $x^9$ \& \(x^9\) \& \\ + 2020 \& 50.1\% \& $x^5$ \& $\sin(5x\pi/n)$ \& $x^5$ \& \(x^5\) \& \\ + 2021 \& 33.8\% \& $x^6$ \& $\sin(6x\pi/n)$ \& $x^6$ \& \(x^6\) \& \\ + 2022 \& 86.9\% \& $x^7$ \& $\sin(7x\pi/n)$ \& $x^7$ \& \(x^7\) \& \\ + 2023 \& 22.0\% \& $x^8$ \& $\sin(8x\pi/n)$ \& $x^8$ \& \(x^8\) \& \\ + 2024 \& 86.2\% \& $x^9$ \& $\sin(9x\pi/n)$ \& $x^9$ \& \(x^9\) \& \\ }; -\path[draw, thick] (TUEYL75U3V6YO-1-1.south west) -- (TUEYL75U3V6YO-1-7.south east); -\path[draw, semithick] ([yshift=-0.0625em]TUEYL75U3V6YO-2-1.south west) -- ([yshift=-0.0625em]TUEYL75U3V6YO-2-7.south east); -\path[draw, thick] ([yshift=-0.3125em]TUEYL75U3V6YO-7-1.base west) -- ([yshift=-0.3125em]TUEYL75U3V6YO-7-7.base east); -\path[draw, very thin] ([xshift=-0.1875em]TUEYL75U3V6YO-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TUEYL75U3V6YO-7-2.base west); +\path[draw, thick] (T5ZEZ3634JGIC-1-1.south west) -- (T5ZEZ3634JGIC-1-7.south east); +\path[draw, semithick] ([yshift=-0.0625em]T5ZEZ3634JGIC-2-1.south west) -- ([yshift=-0.0625em]T5ZEZ3634JGIC-2-7.south east); +\path[draw, thick] ([yshift=-0.3125em]T5ZEZ3634JGIC-7-1.base west) -- ([yshift=-0.3125em]T5ZEZ3634JGIC-7-7.base east); +\path[draw, very thin] ([xshift=-0.1875em]T5ZEZ3634JGIC-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]T5ZEZ3634JGIC-7-2.base west); @@ -974,7 +1017,8 @@ Ratio columns. \begin{table} -\caption{\label{tbl-greater-tables-test-0}Output for test table basic} +\caption{\label{tbl-greater-tables-test-0}GT output for test table +basic} \begin{tikzpicture}[ auto, @@ -985,38 +1029,38 @@ Ratio columns. row sep=0.125em, column sep=0.375em, nodes in empty cells, - nodes={rectangle, scale=0.635, text badly ragged}, + nodes={rectangle, scale=0.635, text badly ragged }, row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em}, - column 2/.style={nodes={align=right }, nosep, text width=5.87em}, - column 3/.style={nodes={align=right }, nosep, text width=5.87em}, - column 4/.style={nodes={align=right }, nosep, text width=5.13em}, - column 5/.style={nodes={align=right }, nosep, text width=6.60em}, - column 6/.style={nodes={align=center}, nosep, text width=7.34em}, - column 7/.style={nodes={align=center}, nosep, text width=7.34em}, - column 8/.style={nodes={align=left }, nosep, text width=8.80em}, + column 2/.style={nodes={align=center}, nosep, text width=6.60em}, + column 3/.style={nodes={align=right }, nosep, text width=6.00em}, + column 4/.style={nodes={align=left }, nosep, text width=8.40em}, + column 5/.style={nodes={align=right }, nosep, text width=4.20em}, + column 6/.style={nodes={align=right }, nosep, text width=5.40em}, + column 7/.style={nodes={align=right }, nosep, text width=9.00em}, + column 8/.style={nodes={align=right }, nosep, text width=10.20em}, column 9/.style={nodes={align=right }, nosep, text width=6.60em}, column 10/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] -\matrix (T65LPKPTFCWIG) [table, ampersand replacement=\&]{ - \& \& \& \& \& \& \& \& \& \\ - painstaking\grtspacer \& autistic int\grtspacer \& horizons float\grtspacer \& piss float\grtspacer \& raiser float\grtspacer \& refraining datetime\grtspacer \& round datetime\grtspacer \& shut str\grtspacer \& tearful float\grtspacer \& \\ - 6,650 \& 2,330 \& 0.004 \& 1.94217 \& 34.295k \& 2009-08-28 \& 2020-11-09 \& bonded \& 154.912k \& \\ - 13,645 \& 8,352 \& 0.031 \& 0.00000 \& 169.470k \& 2026-06-01 \& 2032-05-31 \& dose \& 95.045M \& \\ - 42,090 \& 119 \& 0.000 \& 0.03613 \& 178.458m \& 2021-05-18 \& 2009-12-25 \& frisky \& 1.780 \& \\ - 46,162 \& 5,875 \& 0.000 \& 0.00000 \& 15.578k \& 2029-03-13 \& 2033-03-12 \& fructose \& 203.368M \& \\ - 53,535 \& 2,393 \& 0.010 \& 0.00000 \& 3.652G \& 2015-08-04 \& 2018-10-10 \& encrypt \& 11.218 \& \\ - 66,823 \& 5,235 \& 0.026 \& 0.00786 \& 1.247 \& 2022-07-04 \& 2020-11-09 \& churches \& 12.287M \& \\ - 68,802 \& 7,039 \& 0.007 \& 0.00447 \& 9.184k \& 2014-08-22 \& 2033-03-12 \& girl \& 56.436 \& \\ - 81,532 \& -4,903 \& 9.210 \& 0.00000 \& 76.281 \& 2014-08-22 \& 2021-06-08 \& mana \& 2.381G \& \\ - 94,053 \& -86 \& 0.740 \& 1.91619 \& 179.650k \& 2030-02-23 \& 2011-03-14 \& precariously \& 5.397G \& \\ - 99,346 \& -9,117 \& 0.000 \& 0.00019 \& 53.829M \& 2029-03-13 \& 2032-05-31 \& reportedly \& 593.429k \& \\ +\matrix (TGBVQTD6WMYO4) [table, ampersand replacement=\&]{ + \& \& \& \& \& \& \& \& \& \\ + unconvinced\grtspacer \& appreciable date\grtspacer \& conception float\grtspacer \& fining str\grtspacer \& hammers float\grtspacer \& molecules float\grtspacer \& ruthlessly float\grtspacer \& sandwiches float\grtspacer \& translating float\grtspacer \& \\ + 8,632 \& 2016-08-13 \& 26.106 \& unsuccessfully \& 0.00402 \& 36.128 \& 63490.304Y \& -906.724y \& 187.654 \& \\ + 8,839 \& 2017-03-18 \& 166.184 \& weighty \& 0.65441 \& 51.906M \& 88.440y \& -0.000y \& 219.176k \& \\ + 10,397 \& 2023-04-12 \& 126.049 \& reinstating \& 0.00435 \& 75.448 \& 158.217E \& -1.141Y \& 6.696M \& \\ + 19,251 \& 2031-02-20 \& 9.514M \& regularly \& 0.00013 \& 1.919 \& 53.921P \& 456.467f \& 980.398 \& \\ + 35,202 \& 2022-01-29 \& 12.016M \& downplayed \& 0.00001 \& 4.675G \& 66.313a \& -2.355y \& 450.111m \& \\ + 46,310 \& 2017-03-18 \& 1.785G \& harmful \& 0.00392 \& 88.559 \& -98.569P \& 128.613n \& 142.900 \& \\ + 55,986 \& 2031-02-20 \& 39.829 \& paradise \& 0.00000 \& 4.541M \& 752.248M \& 8.739E \& 254.917k \& \\ + 61,765 \& 2016-08-13 \& 46.325M \& diagrams \& 4.36743 \& 11.110k \& 18790.418Y \& 310.420E \& 200.569 \& \\ + 79,238 \& 2030-11-17 \& 13.733M \& shortfall \& 0.00000 \& 34.625 \& -550909914.756Y \& -63486983222.994Y \& 23.893M \& \\ + 92,160 \& 2023-04-12 \& 3.877 \& composers \& 0.00002 \& 57.548 \& 111.540p \& -2.330Y \& 3.200G \& \\ }; -\path[draw, thick] (T65LPKPTFCWIG-1-1.south west) -- (T65LPKPTFCWIG-1-10.south east); -\path[draw, semithick] ([yshift=-0.0625em]T65LPKPTFCWIG-2-1.south west) -- ([yshift=-0.0625em]T65LPKPTFCWIG-2-10.south east); -\path[draw, thick] ([yshift=-0.3125em]T65LPKPTFCWIG-12-1.base west) -- ([yshift=-0.3125em]T65LPKPTFCWIG-12-10.base east); -\path[draw, very thin] ([xshift=-0.1875em]T65LPKPTFCWIG-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]T65LPKPTFCWIG-12-2.base west); +\path[draw, thick] (TGBVQTD6WMYO4-1-1.south west) -- (TGBVQTD6WMYO4-1-10.south east); +\path[draw, semithick] ([yshift=-0.0625em]TGBVQTD6WMYO4-2-1.south west) -- ([yshift=-0.0625em]TGBVQTD6WMYO4-2-10.south east); +\path[draw, thick] ([yshift=-0.3125em]TGBVQTD6WMYO4-12-1.base west) -- ([yshift=-0.3125em]TGBVQTD6WMYO4-12-10.base east); +\path[draw, very thin] ([xshift=-0.1875em]TGBVQTD6WMYO4-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TGBVQTD6WMYO4-12-2.base west); @@ -1038,7 +1082,7 @@ Comments go here. \begin{table} -\caption{\label{tbl-greater-tables-test-1}Output for test table +\caption{\label{tbl-greater-tables-test-1}GT output for test table timeseries} \begin{tikzpicture}[ @@ -1050,43 +1094,43 @@ timeseries} row sep=0.125em, column sep=0.375em, nodes in empty cells, - nodes={rectangle, scale=0.635, text badly ragged}, + nodes={rectangle, scale=0.635, text badly ragged }, row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=6.00em}, - column 2/.style={nodes={align=left }, nosep, text width=10.39em}, - column 3/.style={nodes={align=left }, nosep, text width=13.23em}, - column 4/.style={nodes={align=center}, nosep, text width=12.28em}, + column 2/.style={nodes={align=right }, nosep, text width=9.45em}, + column 3/.style={nodes={align=center}, nosep, text width=9.45em}, + column 4/.style={nodes={align=center}, nosep, text width=9.45em}, column 5/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] -\matrix (TP2KAIMSUSU4U) [table, ampersand replacement=\&]{ - \& \& \& \& \\ - separatists\grtspacer \& Heartened Wildlife Evolves str\grtspacer \& Hogging Bulb Moments str\grtspacer \& Thump Insupportable Ranged datetime\grtspacer \& \\ - 2008-09-02 \& imports \& stairs \& 2007-05-08 \& \\ - 2013-07-14 \& adopts \& associating \& 2026-11-10 \& \\ - 2014-04-30 \& patching \& wrought \& 2028-12-07 \& \\ - 2014-12-08 \& lager \& retrofitted \& 2011-01-06 \& \\ - 2016-01-21 \& millennia \& plain \& 2011-01-06 \& \\ - 2016-10-12 \& adapts \& dimensionality \& 2009-05-31 \& \\ - 2019-08-11 \& shutting \& deepen \& 2009-05-31 \& \\ - 2019-12-12 \& starker \& finesse \& 2007-05-08 \& \\ - 2020-01-08 \& things \& shaded \& 2028-12-07 \& \\ - 2021-05-29 \& expandable \& trainees \& 2019-04-22 \& \\ - 2022-06-11 \& quorum \& intro \& 2032-02-23 \& \\ - 2022-11-17 \& punditry \& oppose \& 2017-05-18 \& \\ - 2023-12-13 \& trimester \& underpinned \& 2007-05-08 \& \\ - 2024-02-28 \& takeover \& flushing \& 2012-10-01 \& \\ - 2025-12-01 \& cots \& psychopathic \& 2019-11-11 \& \\ - 2028-02-13 \& exhortation \& dented \& 2012-11-17 \& \\ - 2028-08-15 \& detainees \& nonpublic \& 2026-11-10 \& \\ - 2030-02-12 \& solids \& prevailed \& 2007-05-08 \& \\ - 2031-01-28 \& explored \& deceive \& 2009-02-16 \& \\ - 2031-06-24 \& diverted \& flagged \& 2019-04-29 \& \\ +\matrix (TBSYLUFCI4LBB) [table, ampersand replacement=\&]{ + \& \& \& \& \\ + bemoan\grtspacer \& Absolute Affirmed Mutton float\grtspacer \& Adjourns Evaluation Dismantling datetime\grtspacer \& Hispanic Prohibit Skeptical datetime\grtspacer \& \\ + 2011-01-09 \& -0.000y \& 2026-02-13 \& 2025-07-20 \& \\ + 2012-01-09 \& -2.716a \& 2011-10-23 \& 2018-05-10 \& \\ + 2012-03-01 \& 291.376Z \& 2014-05-17 \& 2031-10-23 \& \\ + 2012-03-27 \& 2.489P \& 2030-10-30 \& 2007-08-24 \& \\ + 2014-01-07 \& 957.797M \& 2012-11-22 \& 2025-07-20 \& \\ + 2015-08-18 \& -25.750 \& 2024-10-01 \& 2025-06-29 \& \\ + 2015-12-13 \& -81.647p \& 2028-04-20 \& 2020-01-17 \& \\ + 2016-06-01 \& 0.000y \& 2009-06-25 \& 2020-01-17 \& \\ + 2018-03-06 \& 0.000y \& 2012-09-29 \& 2018-09-28 \& \\ + 2019-03-05 \& -3.510p \& 2030-06-13 \& 2008-01-30 \& \\ + 2019-03-09 \& 1.662u \& 2012-11-22 \& 2025-06-29 \& \\ + 2020-11-02 \& 99.120P \& 2009-06-25 \& 2029-07-27 \& \\ + 2020-11-20 \& 0.232y \& 2016-09-29 \& 2007-05-27 \& \\ + 2020-12-08 \& 29.010a \& 2006-09-15 \& 2032-04-04 \& \\ + 2021-07-30 \& -398.788u \& 2011-10-23 \& 2032-04-04 \& \\ + 2021-09-25 \& 3.780y \& 2029-02-24 \& 2007-04-22 \& \\ + 2021-11-27 \& 0.000y \& 2026-02-13 \& 2018-09-28 \& \\ + 2027-03-28 \& -85.745E \& 2015-10-22 \& 2032-03-19 \& \\ + 2029-05-28 \& 57.186k \& 2015-08-12 \& 2008-01-30 \& \\ + 2033-02-27 \& -496.810f \& 2024-10-01 \& 2032-04-04 \& \\ }; -\path[draw, thick] (TP2KAIMSUSU4U-1-1.south west) -- (TP2KAIMSUSU4U-1-5.south east); -\path[draw, semithick] ([yshift=-0.0625em]TP2KAIMSUSU4U-2-1.south west) -- ([yshift=-0.0625em]TP2KAIMSUSU4U-2-5.south east); -\path[draw, thick] ([yshift=-0.3125em]TP2KAIMSUSU4U-22-1.base west) -- ([yshift=-0.3125em]TP2KAIMSUSU4U-22-5.base east); -\path[draw, very thin] ([xshift=-0.1875em]TP2KAIMSUSU4U-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TP2KAIMSUSU4U-22-2.base west); +\path[draw, thick] (TBSYLUFCI4LBB-1-1.south west) -- (TBSYLUFCI4LBB-1-5.south east); +\path[draw, semithick] ([yshift=-0.0625em]TBSYLUFCI4LBB-2-1.south west) -- ([yshift=-0.0625em]TBSYLUFCI4LBB-2-5.south east); +\path[draw, thick] ([yshift=-0.3125em]TBSYLUFCI4LBB-22-1.base west) -- ([yshift=-0.3125em]TBSYLUFCI4LBB-22-5.base east); +\path[draw, very thin] ([xshift=-0.1875em]TBSYLUFCI4LBB-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TBSYLUFCI4LBB-22-2.base west); @@ -1108,7 +1152,7 @@ Comments go here. \begin{table} -\caption{\label{tbl-greater-tables-test-2}Output for test table +\caption{\label{tbl-greater-tables-test-2}GT output for test table multiindex} \begin{tikzpicture}[ @@ -1120,38 +1164,38 @@ multiindex} row sep=0.125em, column sep=0.375em, nodes in empty cells, - nodes={rectangle, scale=0.635, text badly ragged}, + nodes={rectangle, scale=0.635, text badly ragged }, row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em}, - column 2/.style={nodes={align=left }, nosep, text width=8.40em}, + column 2/.style={nodes={align=left }, nosep, text width=6.00em}, column 3/.style={nodes={align=left }, nosep, text width=3.60em}, - column 4/.style={nodes={align=center}, nosep, text width=7.55em}, - column 5/.style={nodes={align=right }, nosep, text width=8.31em}, - column 6/.style={nodes={align=right }, nosep, text width=8.31em}, - column 7/.style={nodes={align=right }, nosep, text width=9.82em}, - column 8/.style={nodes={align=right }, nosep, text width=7.55em}, + column 4/.style={nodes={align=right }, nosep, text width=7.71em}, + column 5/.style={nodes={align=right }, nosep, text width=8.48em}, + column 6/.style={nodes={align=right }, nosep, text width=10.02em}, + column 7/.style={nodes={align=right }, nosep, text width=9.25em}, + column 8/.style={nodes={align=right }, nosep, text width=8.48em}, column 9/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] -\matrix (TU24XXGXPW72F) [table, ampersand replacement=\&]{ - \& \& \& \& \& \& \& \& \\ - marking\grtspacer \& confirmable\grtspacer \& fattest\grtspacer \& Bethlehem Pillar Thrives date\grtspacer \& Fares Guideline Things int\grtspacer \& Heaping Nutritional Cakes int\grtspacer \& Sparkling Adjoining Prescriptions float\grtspacer \& Subway Scraper Strategize float\grtspacer \& \\ - 27,165 \& invasive \& 14,293 \& 2027-05-30 \& 950,527,854 \& 746,873,891 \& 1.81472 \& 0.00000 \& \\ - \& irreconcilable \& 15,913 \& 2007-02-21 \& 783,061,904 \& 51,725,414 \& 0.06333 \& 0.00201 \& \\ - \& thrives \& 2,659 \& 2007-02-21 \& 228,519,858 \& 713,492,446 \& 0.00000 \& 0.03827 \& \\ - \& thrives \& 51,266 \& 2021-11-25 \& 989,793,067 \& 865,932,666 \& 0.00000 \& 0.09811 \& \\ - 68,642 \& invasive \& 5,381 \& 2032-07-11 \& 195,752,961 \& 822,678,106 \& 3.66230 \& 0.86233 \& \\ - \& invasive \& 66,841 \& 2012-11-22 \& 764,971,744 \& 904,002,366 \& 0.19107 \& 3.12595 \& \\ - \& irreconcilable \& 53,503 \& 2021-11-25 \& 410,822,731 \& 761,097,051 \& 0.00000 \& 0.21106 \& \\ - \& irreconcilable \& 70,755 \& 2027-05-30 \& 745,879,589 \& 356,314,550 \& 0.89981 \& 0.00000 \& \\ - \& thrives \& 19,754 \& 2022-06-15 \& 568,299,103 \& 165,229,578 \& 0.00068 \& 0.00000 \& \\ - \& thrives \& 88,035 \& 2008-01-30 \& 7,390,826 \& 283,709,128 \& 0.00014 \& 0.00343 \& \\ +\matrix (TPDCP6TYBOZMN) [table, ampersand replacement=\&]{ + \& \& \& \& \& \& \& \& \\ + reactions\grtspacer \& belligerent\grtspacer \& inaugural\grtspacer \& Action Formulates Succeeded float\grtspacer \& Designate Vestige Reservation float\grtspacer \& Distinguishes Investments Contemplates year\grtspacer \& Hesitate Premiere Conspiracies year\grtspacer \& Newark Waved Impoverish int\grtspacer \& \\ + 10,971 \& invaluable \& 34,061 \& -6.471u \& 808.075k \& 2027 \& 2012 \& 901,426,869 \& \\ + \& invaluable \& 43,523 \& 18.077u \& 3.209G \& 2027 \& 2010 \& 521,984,844 \& \\ + \& malevolent \& 75,221 \& -845.354u \& 128.915m \& 1995 \& 2005 \& 434,046,672 \& \\ + \& saddens \& 39,194 \& 36.518z \& 3.945M \& 1996 \& 2019 \& 755,593,582 \& \\ + \& saddens \& 56,895 \& 22.781u \& 22.434M \& 2000 \& 1999 \& 510,854,557 \& \\ + \& saddens \& 64,039 \& 0.254y \& 368.327 \& 2022 \& 2005 \& 313,805,927 \& \\ + \& saddens \& 87,079 \& 3.120a \& 18.891M \& 1992 \& 1996 \& 74,515,255 \& \\ + 98,173 \& invaluable \& 49,891 \& 1.454n \& 1.702k \& 1996 \& 2004 \& 884,473,151 \& \\ + \& malevolent \& 24,303 \& -486.778Y \& 680.242 \& 2024 \& 2006 \& 223,313,250 \& \\ + \& malevolent \& 40,740 \& -0.000y \& 77.347M \& 2021 \& 2000 \& 888,657,488 \& \\ }; -\path[draw, thick] (TU24XXGXPW72F-1-1.south west) -- (TU24XXGXPW72F-1-9.south east); -\path[draw, semithick] ([yshift=-0.0625em]TU24XXGXPW72F-2-1.south west) -- ([yshift=-0.0625em]TU24XXGXPW72F-2-9.south east); -\path[draw, very thin] ([yshift=-0.0625em]TU24XXGXPW72F-6-1.south west) -- ([yshift=-0.0625em]TU24XXGXPW72F-6-9.south east); -\path[draw, thick] ([yshift=-0.3125em]TU24XXGXPW72F-12-1.base west) -- ([yshift=-0.3125em]TU24XXGXPW72F-12-9.base east); -\path[draw, very thin] ([xshift=-0.1875em]TU24XXGXPW72F-1-4.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TU24XXGXPW72F-12-4.base west); +\path[draw, thick] (TPDCP6TYBOZMN-1-1.south west) -- (TPDCP6TYBOZMN-1-9.south east); +\path[draw, very thin] ([yshift=-0.0625em]TPDCP6TYBOZMN-9-1.south west) -- ([yshift=-0.0625em]TPDCP6TYBOZMN-9-9.south east); +\path[draw, semithick] ([yshift=-0.0625em]TPDCP6TYBOZMN-2-1.south west) -- ([yshift=-0.0625em]TPDCP6TYBOZMN-2-9.south east); +\path[draw, thick] ([yshift=-0.3125em]TPDCP6TYBOZMN-12-1.base west) -- ([yshift=-0.3125em]TPDCP6TYBOZMN-12-9.base east); +\path[draw, very thin] ([xshift=-0.1875em]TPDCP6TYBOZMN-1-4.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TPDCP6TYBOZMN-12-4.base west); @@ -1173,7 +1217,7 @@ Comments go here. \begin{table} -\caption{\label{tbl-greater-tables-test-3}Output for test table +\caption{\label{tbl-greater-tables-test-3}GT output for test table multicolumns} \begin{tikzpicture}[ @@ -1185,44 +1229,43 @@ multicolumns} row sep=0.125em, column sep=0.375em, nodes in empty cells, - nodes={rectangle, scale=0.635, text badly ragged}, + nodes={rectangle, scale=0.635, text badly ragged }, row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, row 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, row 4/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, - column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=8.40em}, - column 2/.style={nodes={align=right }, nosep, text width=9.75em}, - column 3/.style={nodes={align=right }, nosep, text width=9.75em}, - column 4/.style={nodes={align=right }, nosep, text width=9.75em}, - column 5/.style={nodes={align=right }, nosep, text width=9.75em}, - column 6/.style={nodes={align=right }, nosep, text width=9.75em}, + column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=4.20em}, + column 2/.style={nodes={align=left }, nosep, text width=11.28em}, + column 3/.style={nodes={align=right }, nosep, text width=11.28em}, + column 4/.style={nodes={align=right }, nosep, text width=9.55em}, + column 5/.style={nodes={align=left }, nosep, text width=10.42em}, + column 6/.style={nodes={align=right }, nosep, text width=10.42em}, column 7/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] -\matrix (TT4ODL4YOAVBP) [table, ampersand replacement=\&]{ - \& \& \& \& \& \& \\ - \grtspacer \& anniversary\grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& potential\grtspacer \& \\ - \grtspacer \& carmen\grtspacer \& \grtspacer \& guesthouse\grtspacer \& leasing\grtspacer \& carmen\grtspacer \& \\ - insurmountable\grtspacer \& milk\grtspacer \& ugliness\grtspacer \& macedonia\grtspacer \& damon\grtspacer \& expressive\grtspacer \& \\ - 12,538 \& 295 \& 737,079,280 \& 3.383u \& 21.692M \& 340,578,270 \& \\ - 15,497 \& 6,797 \& 110,541,915 \& 164.388n \& 245.184m \& 993,872,892 \& \\ - 16,270 \& 7,742 \& 984,809,158 \& 2.268u \& 521.846M \& 589,546,769 \& \\ - 25,647 \& 7,650 \& 336,829,303 \& 363.209u \& 322.738 \& 816,419,561 \& \\ - 47,846 \& -6,433 \& 364,341,348 \& 1.366n \& 2.550k \& 937,381,023 \& \\ - 58,766 \& -7,015 \& 192,946,467 \& 21.341u \& 67.151 \& 775,046,471 \& \\ - 79,762 \& -403 \& 44,076,239 \& 347.047n \& 137.999 \& 556,293,804 \& \\ - 83,650 \& 9,859 \& 615,061,019 \& 123.926n \& 12.888k \& 997,832,026 \& \\ - 93,480 \& -4,281 \& 644,396,349 \& 1.244n \& 3.942M \& 458,699,377 \& \\ - 99,575 \& 2,542 \& 886,596,882 \& 1.744u \& 5.594 \& 936,005,665 \& \\ +\matrix (TNTJBCNKN57RB) [table, ampersand replacement=\&]{ + \& \& \& \& \& \& \\ + \grtspacer \& repetitive\grtspacer \& \grtspacer \& \grtspacer \& tutu\grtspacer \& \grtspacer \& \\ + \grtspacer \& bicker\grtspacer \& wishes\grtspacer \& \grtspacer \& assimilation\grtspacer \& \grtspacer \& \\ + lecture\grtspacer \& addresses\grtspacer \& accommodating\grtspacer \& registrants\grtspacer \& cadres\grtspacer \& lectures\grtspacer \& \\ + 4,873 \& hack \& 2023 \& 3,089 \& undercurrent \& 1996 \& \\ + 31,679 \& stabbing \& 2018 \& 6,871 \& episode \& 2017 \& \\ + 38,283 \& awarded \& 2018 \& -7,895 \& turner \& 2019 \& \\ + 40,641 \& accord \& 2007 \& -3,597 \& rattling \& 2017 \& \\ + 44,030 \& corroborating \& 2021 \& -9,395 \& relaunch \& 2010 \& \\ + 59,729 \& digest \& 1993 \& 298 \& fixate \& 2020 \& \\ + 65,534 \& deader \& 2011 \& -9,990 \& escalation \& 2029 \& \\ + 86,783 \& arrows \& 2015 \& -535 \& rebellion \& 2026 \& \\ + 89,904 \& refinery \& 1994 \& -3,027 \& vacant \& 1993 \& \\ + 92,799 \& affirmation \& 1995 \& -7,911 \& hobby \& 2003 \& \\ }; -\path[draw, thick] (TT4ODL4YOAVBP-1-1.south west) -- (TT4ODL4YOAVBP-1-7.south east); -\path[draw, semithick] ([yshift=-0.0625em]TT4ODL4YOAVBP-4-1.south west) -- ([yshift=-0.0625em]TT4ODL4YOAVBP-4-7.south east); -\path[draw, thick] ([yshift=-0.3125em]TT4ODL4YOAVBP-14-1.base west) -- ([yshift=-0.3125em]TT4ODL4YOAVBP-14-7.base east); -\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TT4ODL4YOAVBP-2-2.south west) -- ([yshift=-0.0625em]TT4ODL4YOAVBP-2-7.south east); -\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TT4ODL4YOAVBP-3-2.south west) -- ([yshift=-0.0625em]TT4ODL4YOAVBP-3-7.south east); -\path[draw, very thin] ([xshift=-0.1875em]TT4ODL4YOAVBP-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TT4ODL4YOAVBP-14-2.base west); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TT4ODL4YOAVBP-1-5.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TT4ODL4YOAVBP-14-5.base east); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TT4ODL4YOAVBP-2-3.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TT4ODL4YOAVBP-14-3.base east); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TT4ODL4YOAVBP-2-4.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TT4ODL4YOAVBP-14-4.base east); +\path[draw, thick] (TNTJBCNKN57RB-1-1.south west) -- (TNTJBCNKN57RB-1-7.south east); +\path[draw, semithick] ([yshift=-0.0625em]TNTJBCNKN57RB-4-1.south west) -- ([yshift=-0.0625em]TNTJBCNKN57RB-4-7.south east); +\path[draw, thick] ([yshift=-0.3125em]TNTJBCNKN57RB-14-1.base west) -- ([yshift=-0.3125em]TNTJBCNKN57RB-14-7.base east); +\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TNTJBCNKN57RB-2-2.south west) -- ([yshift=-0.0625em]TNTJBCNKN57RB-2-7.south east); +\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TNTJBCNKN57RB-3-2.south west) -- ([yshift=-0.0625em]TNTJBCNKN57RB-3-7.south east); +\path[draw, very thin] ([xshift=-0.1875em]TNTJBCNKN57RB-1-2.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TNTJBCNKN57RB-14-2.base west); +\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TNTJBCNKN57RB-1-4.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TNTJBCNKN57RB-14-4.base east); +\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TNTJBCNKN57RB-2-2.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TNTJBCNKN57RB-14-2.base east); @@ -1244,7 +1287,8 @@ Comments go here. \begin{table} -\caption{\label{tbl-greater-tables-test-4}Output for test table complex} +\caption{\label{tbl-greater-tables-test-4}GT output for test table +complex} \begin{tikzpicture}[ auto, @@ -1255,64 +1299,62 @@ Comments go here. row sep=0.125em, column sep=0.375em, nodes in empty cells, - nodes={rectangle, scale=0.635, text badly ragged}, + nodes={rectangle, scale=0.635, text badly ragged }, row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, row 3/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, row 4/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=3.60em}, - column 2/.style={nodes={align=left }, nosep, text width=4.80em}, - column 3/.style={nodes={align=left }, nosep, text width=5.40em}, - column 4/.style={nodes={align=right }, nosep, text width=4.20em}, - column 5/.style={nodes={align=right }, nosep, text width=5.40em}, - column 6/.style={nodes={align=right }, nosep, text width=3.60em}, - column 7/.style={nodes={align=center}, nosep, text width=6.00em}, - column 8/.style={nodes={align=right }, nosep, text width=3.60em}, - column 9/.style={nodes={align=right }, nosep, text width=5.40em}, - column 10/.style={nodes={align=right }, nosep, text width=10.20em}, - column 11/.style={nodes={align=right }, nosep, text width=9.00em}, - column 12/.style={nodes={align=center}, nosep, text width=9.00em}, - column 13/.style={nodes={align=right }, nosep, text width=7.20em}, + column 2/.style={nodes={align=left }, nosep, text width=7.20em}, + column 3/.style={nodes={align=left }, nosep, text width=6.00em}, + column 4/.style={nodes={align=left }, nosep, text width=7.20em}, + column 5/.style={nodes={align=right }, nosep, text width=7.20em}, + column 6/.style={nodes={align=right }, nosep, text width=7.20em}, + column 7/.style={nodes={align=right }, nosep, text width=7.20em}, + column 8/.style={nodes={align=right }, nosep, text width=12.00em}, + column 9/.style={nodes={align=center}, nosep, text width=6.60em}, + column 10/.style={nodes={align=center}, nosep, text width=7.20em}, + column 11/.style={nodes={align=right }, nosep, text width=6.60em}, + column 12/.style={nodes={align=left }, nosep, text width=7.80em}, + column 13/.style={nodes={align=left }, nosep, text width=7.20em}, column 14/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] -\matrix (T5VJIEBLSIK73) [table, ampersand replacement=\&]{ - \& \& \& \& \& \& \& \& \& \& \& \& \& \\ - \grtspacer \& \grtspacer \& \grtspacer \& corral\grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& courses\grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& \\ - \grtspacer \& \grtspacer \& \grtspacer \& impute\grtspacer \& \grtspacer \& \grtspacer \& resources\grtspacer \& unveil\grtspacer \& \grtspacer \& impute\grtspacer \& resources\grtspacer \& \grtspacer \& unveil\grtspacer \& \\ - freest\grtspacer \& ginseng\grtspacer \& veritable\grtspacer \& burmese\grtspacer \& defeat\grtspacer \& sacks\grtspacer \& expanse\grtspacer \& fruits\grtspacer \& knowledge\grtspacer \& detergents\grtspacer \& congratulations\grtspacer \& personalization\grtspacer \& relentlessly\grtspacer \& \\ - 41,568 \& anything \& 3,498 \& 8.52037 \& 25.655k \& 1992 \& 2031-02-27 \& 2027 \& 0.00017 \& 18.839 \& 2009 \& 2028-06-26 \& 0.00131 \& \\ - \& anything \& 53,225 \& 0.00000 \& 9.135M \& 2018 \& 2010-10-29 \& 1994 \& 0.00001 \& -13.447G \& 2017 \& 2012-04-10 \& 0.00000 \& \\ - \& anything \& 66,469 \& 0.00392 \& 299.427M \& 1995 \& 2014-07-19 \& 2015 \& 0.00002 \& 104.090f \& 2026 \& 2024-12-01 \& 1.78330 \& \\ - \& biennial \& 20,558 \& 0.00000 \& 259.896 \& 1997 \& 2026-04-25 \& 1994 \& 0.00000 \& -2.467y \& 2009 \& 2016-03-24 \& 3.93567 \& \\ - \& injected \& 349 \& 0.00002 \& 121.756k \& 1991 \& 2020-09-06 \& 1994 \& 0.00000 \& 0.000y \& 2011 \& 2022-11-24 \& 0.00000 \& \\ - \& injected \& 9,786 \& 0.00001 \& 216.231 \& 2017 \& 2019-03-29 \& 2026 \& 0.05690 \& 2.612n \& 2005 \& 2022-11-24 \& 0.00052 \& \\ - \& injected \& 22,688 \& 0.00005 \& 239.427k \& 2002 \& 2006-09-25 \& 1993 \& 0.00001 \& 88008178220.269Y \& 2028 \& 2009-04-25 \& 0.08071 \& \\ - \& injected \& 38,219 \& 0.39205 \& 41.996M \& 2012 \& 2014-06-13 \& 2016 \& 0.00000 \& 64.572n \& 2011 \& 2012-06-28 \& 5.51944 \& \\ - \& injected \& 60,326 \& 0.41157 \& 878.466m \& 1994 \& 2015-08-22 \& 2010 \& 0.00000 \& -6.097G \& 2008 \& 2012-04-10 \& 0.00046 \& \\ - \& injected \& 83,180 \& 3.91704 \& 279.932 \& 2029 \& 2006-09-25 \& 2002 \& 0.00001 \& -4.502P \& 2021 \& 2015-01-04 \& 0.06067 \& \\ - 96,420 \& anything \& 6,979 \& 4.36669 \& 193.542M \& 2006 \& 2009-05-29 \& 1990 \& 0.00090 \& 5.089T \& 2027 \& 2016-03-24 \& 3.39560 \& \\ - \& anything \& 13,184 \& 0.00000 \& 48.730M \& 1993 \& 2009-05-29 \& 2013 \& 6.92281 \& -553.381f \& 2001 \& 2028-06-26 \& 0.00179 \& \\ - \& anything \& 16,324 \& 0.00003 \& 1.162M \& 1996 \& 2022-01-14 \& 2021 \& 0.00003 \& 0.000y \& 1991 \& 2020-02-27 \& 0.00000 \& \\ - \& anything \& 31,859 \& 0.07087 \& 10.326 \& 1996 \& 2019-03-29 \& 2024 \& 0.00023 \& 37.521k \& 2007 \& 2009-04-25 \& 0.15962 \& \\ - \& anything \& 73,582 \& 0.27984 \& 706.072m \& 2003 \& 2014-06-13 \& 1992 \& 4.67508 \& -8.015p \& 2022 \& 2015-01-04 \& 0.00000 \& \\ - \& anything \& 86,572 \& 0.00040 \& 18.108 \& 2014 \& 2026-04-25 \& 1991 \& 2.04921 \& -0.000y \& 2004 \& 2017-05-15 \& 0.02507 \& \\ - \& biennial \& 51,500 \& 0.00000 \& 27.759M \& 2018 \& 2019-03-29 \& 1996 \& 0.00000 \& -0.000y \& 2028 \& 2023-03-09 \& 0.00001 \& \\ - \& injected \& 3,930 \& 0.01020 \& 15.794k \& 2027 \& 2009-05-29 \& 2003 \& 0.00000 \& 0.000y \& 2009 \& 2018-02-08 \& 0.00416 \& \\ - \& injected \& 56,017 \& 0.37955 \& 14.470M \& 2008 \& 2009-12-20 \& 2026 \& 1.47071 \& -0.000y \& 2014 \& 2022-11-24 \& 0.00008 \& \\ - \& injected \& 72,982 \& 0.01078 \& 65.477k \& 2001 \& 2014-07-19 \& 2004 \& 0.97493 \& 0.000y \& 1998 \& 2012-06-28 \& 0.00000 \& \\ +\matrix (TYKTNDZBEDOSG) [table, ampersand replacement=\&]{ + \& \& \& \& \& \& \& \& \& \& \& \& \& \\ + \grtspacer \& \grtspacer \& \grtspacer \& diagrammatic\grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& intensely\grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& \\ + \grtspacer \& \grtspacer \& \grtspacer \& correlation\grtspacer \& \grtspacer \& \grtspacer \& william\grtspacer \& \grtspacer \& cardiac\grtspacer \& william\grtspacer \& \grtspacer \& \grtspacer \& \grtspacer \& \\ + sermon\grtspacer \& idle\grtspacer \& librarians\grtspacer \& express\grtspacer \& neighbor\grtspacer \& unmistakable\grtspacer \& connectivity\grtspacer \& obscures\grtspacer \& demographic\grtspacer \& manufacturer\grtspacer \& outlaws\grtspacer \& pulled\grtspacer \& wireless\grtspacer \& \\ + 51,701 \& better \& 40,112 \& innumerable \& 48.980M \& 4,249 \& 128.796m \& 6.663z \& 2011-08-25 \& 2026-01-16 \& 869,081,663 \& providers \& briefing \& \\ + \& complicated \& 3,926 \& pentecostal \& 59.707 \& -825 \& 8.145G \& 15.501E \& 2026-07-20 \& 2014-12-05 \& 202,632,105 \& hamster \& goth \& \\ + \& complicated \& 12,208 \& proportions \& 18.027k \& 8,008 \& 2.001G \& 18.602Y \& 2011-08-25 \& 2016-07-03 \& 510,388,466 \& girlfriends \& mythology \& \\ + \& complicated \& 65,629 \& navigated \& 11.940k \& 6,378 \& 48.117 \& -113.851u \& 2026-07-20 \& 2030-10-01 \& 395,706,791 \& qualification \& adequate \& \\ + \& methodically \& 27,349 \& sawmill \& 4.033k \& 8,090 \& 361.908m \& 12076296027110.290Y \& 2028-08-07 \& 2007-08-27 \& 75,711,684 \& behaviors \& timing \& \\ + \& methodically \& 43,485 \& parentheses \& 9.546 \& -1,250 \& 1.301G \& -143231.502Y \& 2018-12-09 \& 2008-11-29 \& 954,513,855 \& figure \& telescopic \& \\ + \& methodically \& 55,700 \& forgive \& 2.792G \& 2,953 \& 3.292M \& 255.417z \& 2031-12-19 \& 2008-11-25 \& 172,715,663 \& distant \& hobby \& \\ + \& methodically \& 60,105 \& consultants \& 172.060 \& -5,666 \& 5.968k \& -21.254a \& 2026-07-20 \& 2030-10-01 \& 449,538,011 \& unloaded \& munchies \& \\ + \& methodically \& 98,580 \& mandating \& 74.624k \& 5,684 \& 8.510M \& -0.000y \& 2026-06-26 \& 2021-09-12 \& 988,320,370 \& monochrome \& rebuilt \& \\ + 99,724 \& better \& 6,020 \& broached \& 3.282k \& 8,757 \& 1.264G \& 494216364.082Y \& 2016-05-06 \& 2008-11-25 \& 582,779,298 \& discriminates \& bestowed \& \\ + \& better \& 15,116 \& parallel \& 126.036M \& 4,638 \& 715.691M \& -6084.833Y \& 2031-09-06 \& 2014-12-05 \& 276,261,271 \& precisely \& handily \& \\ + \& better \& 24,824 \& lifesaver \& 53.513 \& -8,038 \& 7.370G \& -13.689Y \& 2011-08-25 \& 2033-06-20 \& 643,278,224 \& masthead \& pakistani \& \\ + \& better \& 65,455 \& fidelity \& 471.271M \& 8,256 \& 3.143k \& -64054884217.656Y \& 2011-08-25 \& 2033-06-20 \& 99,430,099 \& storyboard \& buddies \& \\ + \& better \& 81,893 \& accumulating \& 13.893M \& 7,426 \& 105.856 \& 0.000y \& 2018-12-04 \& 2009-11-22 \& 223,246,972 \& murderers \& cooperating \& \\ + \& complicated \& 2,248 \& covering \& 202.243m \& -5,336 \& 225.260M \& 93.754n \& 2011-12-27 \& 2026-01-29 \& 225,832,976 \& seizes \& concluding \& \\ + \& complicated \& 51,296 \& golden \& 9.341M \& -8,036 \& 142.880 \& -537.634M \& 2018-12-04 \& 2021-09-12 \& 199,792,598 \& moons \& lark \& \\ + \& complicated \& 54,923 \& eventuality \& 3.545k \& 595 \& 166.334 \& -1.033Z \& 2026-06-26 \& 2015-07-20 \& 440,990,498 \& egghead \& wreaks \& \\ + \& methodically \& 7,550 \& waters \& 437.510k \& -1,867 \& 24.289k \& -0.000y \& 2026-07-20 \& 2019-06-07 \& 389,874,646 \& voicing \& boeing \& \\ + \& methodically \& 83,418 \& blankets \& 9.726G \& -4,364 \& 763.757k \& 3.599k \& 2011-08-25 \& 2026-01-02 \& 640,410,908 \& whittle \& abbreviation \& \\ + \& methodically \& 98,887 \& accompany \& 1.831M \& 1,106 \& 2.931k \& -629013.362Y \& 2014-01-02 \& 2007-08-27 \& 855,249,101 \& bigwigs \& portfolio \& \\ }; -\path[draw, thick] (T5VJIEBLSIK73-1-1.south west) -- (T5VJIEBLSIK73-1-14.south east); -\path[draw, thick] ([yshift=-0.3125em]T5VJIEBLSIK73-24-1.base west) -- ([yshift=-0.3125em]T5VJIEBLSIK73-24-14.base east); -\path[draw, semithick] ([yshift=-0.0625em]T5VJIEBLSIK73-4-1.south west) -- ([yshift=-0.0625em]T5VJIEBLSIK73-4-14.south east); -\path[draw, very thin] ([yshift=-0.0625em]T5VJIEBLSIK73-14-1.south west) -- ([yshift=-0.0625em]T5VJIEBLSIK73-14-14.south east); -\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]T5VJIEBLSIK73-2-4.south west) -- ([yshift=-0.0625em]T5VJIEBLSIK73-2-14.south east); -\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]T5VJIEBLSIK73-3-4.south west) -- ([yshift=-0.0625em]T5VJIEBLSIK73-3-14.south east); -\path[draw, very thin] ([xshift=-0.1875em]T5VJIEBLSIK73-1-4.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]T5VJIEBLSIK73-24-4.base west); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T5VJIEBLSIK73-1-9.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T5VJIEBLSIK73-24-9.base east); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T5VJIEBLSIK73-2-6.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T5VJIEBLSIK73-24-6.base east); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T5VJIEBLSIK73-2-7.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T5VJIEBLSIK73-24-7.base east); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T5VJIEBLSIK73-2-10.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T5VJIEBLSIK73-24-10.base east); -\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]T5VJIEBLSIK73-2-12.south east) -- ([yshift=-0.3125em, xshift=0.1875em]T5VJIEBLSIK73-24-12.base east); +\path[draw, thick] (TYKTNDZBEDOSG-1-1.south west) -- (TYKTNDZBEDOSG-1-14.south east); +\path[draw, thick] ([yshift=-0.3125em]TYKTNDZBEDOSG-24-1.base west) -- ([yshift=-0.3125em]TYKTNDZBEDOSG-24-14.base east); +\path[draw, semithick] ([yshift=-0.0625em]TYKTNDZBEDOSG-4-1.south west) -- ([yshift=-0.0625em]TYKTNDZBEDOSG-4-14.south east); +\path[draw, very thin] ([yshift=-0.0625em]TYKTNDZBEDOSG-13-1.south west) -- ([yshift=-0.0625em]TYKTNDZBEDOSG-13-14.south east); +\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TYKTNDZBEDOSG-2-4.south west) -- ([yshift=-0.0625em]TYKTNDZBEDOSG-2-14.south east); +\path[draw, very thin] ([xshift=-0.1875em, yshift=-0.0625em]TYKTNDZBEDOSG-3-4.south west) -- ([yshift=-0.0625em]TYKTNDZBEDOSG-3-14.south east); +\path[draw, very thin] ([xshift=-0.1875em]TYKTNDZBEDOSG-1-4.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TYKTNDZBEDOSG-24-4.base west); +\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TYKTNDZBEDOSG-1-8.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TYKTNDZBEDOSG-24-8.base east); +\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TYKTNDZBEDOSG-2-6.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TYKTNDZBEDOSG-24-6.base east); +\path[draw, ultra thin] ([xshift=0.1875em, yshift=-0.0625em]TYKTNDZBEDOSG-2-9.south east) -- ([yshift=-0.3125em, xshift=0.1875em]TYKTNDZBEDOSG-24-9.base east); @@ -1322,6 +1364,173 @@ Comments go here. Comments go here. +\section{Other input formats}\label{other-input-formats} + +\subsection{Markown}\label{markown} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.7093}} + >{\centering\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.1047}} + >{\centering\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.0930}} + >{\centering\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.0930}}@{}} +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +\textbf{Insured group or insurance product} +\end{minipage} & \begin{minipage}[b]{\linewidth}\centering +\textbf{Sat} +\end{minipage} & \begin{minipage}[b]{\linewidth}\centering +\textbf{RP} +\end{minipage} & \begin{minipage}[b]{\linewidth}\centering +\textbf{RF} +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +Non-standard auto & x & & \\ +General liability for judgment proof corporation & x & & \\ +Term life insurance & & x & \\ +Catastrophe Reinsurance, outside rating agency bounds & & x & \\ +High limit property per risk reinsurance & & x & \\ +Personal lines for affluent individuals & x & x & \\ +Small commercial lines & x & x & \\ +Catastrophe reinsurance, within rating agency bounds & x & x & \\ +Large account captive reinsurance & & & x \\ +Structured quota share, requiring a risk transfer test & x & & x \\ +Working layer casualty excess of loss & & x & x \\ +Surplus relief quota share on cat exposed line & x & x & x \\ +Middle market commercial lines work comp or commercial auto & x & x & +x \\ +\end{longtable} + +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{txt }\OperatorTok{=} \StringTok{\textquotesingle{}\textquotesingle{}\textquotesingle{}} + +\StringTok{| **Insured group or insurance product** | **Sat** | **RP** | **RF** |} +\StringTok{|:{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}{-}|:{-}{-}{-}{-}{-}{-}{-}:|:{-}{-}{-}{-}{-}{-}:|:{-}{-}{-}{-}{-}{-}:|} +\StringTok{| Non{-}standard auto | x | | |} +\StringTok{| General liability for judgment proof corporation | x | | |} +\StringTok{| Term life insurance | | x | |} +\StringTok{| Catastrophe Reinsurance, outside rating agency bounds | | x | |} +\StringTok{| High limit property per risk reinsurance | | x | |} +\StringTok{| Personal lines for affluent individuals | x | x | |} +\StringTok{| Small commercial lines | x | x | |} +\StringTok{| Catastrophe reinsurance, within rating agency bounds | x | x | |} +\StringTok{| Large account captive reinsurance | | | x |} +\StringTok{| Structured quota share, requiring a risk transfer test | x | | x |} +\StringTok{| Working layer casualty excess of loss | | x | x |} +\StringTok{| Surplus relief quota share on cat exposed line | x | x | x |} +\StringTok{| Middle market commercial lines work comp or commercial auto | x | x | x |} + + +\StringTok{\textquotesingle{}\textquotesingle{}\textquotesingle{}} + +\NormalTok{GT(txt)} +\end{Highlighting} +\end{Shaded} + +\begin{table} + +\caption{\label{tbl-greater-tables-test-5}GT from markdown table input} + +\begin{tikzpicture}[ + auto, + transform shape, + nosep/.style={inner sep=0}, + table/.style={ + matrix of nodes, + row sep=0.125em, + column sep=0.375em, + nodes in empty cells, + nodes={rectangle, scale=0.635, text badly ragged }, + row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, + row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, + column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=51.09em}, + column 2/.style={nodes={align=center}, nosep, text width=2.60em}, + column 3/.style={nodes={align=center}, nosep, text width=2.00em}, + column 4/.style={nodes={align=center}, nosep, text width=2.00em}, + column 5/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] +\matrix (TEQZIBDCCW47A) [table, ampersand replacement=\&]{ + \& \& \& \& \\ + Insured group or insurance product\grtspacer \& Sat\grtspacer \& RP\grtspacer \& RF\grtspacer \& \\ + Non-standard auto \& x \& \& \& \\ + General liability for judgment proof corporation \& x \& \& \& \\ + Term life insurance \& \& x \& \& \\ + Catastrophe Reinsurance, outside rating agency bounds \& \& x \& \& \\ + High limit property per risk reinsurance \& \& x \& \& \\ + Personal lines for affluent individuals \& x \& x \& \& \\ + Small commercial lines \& x \& x \& \& \\ + Catastrophe reinsurance, within rating agency bounds \& x \& x \& \& \\ + Large account captive reinsurance \& \& \& x \& \\ + Structured quota share, requiring a risk transfer test \& x \& \& x \& \\ + Working layer casualty excess of loss \& \& x \& x \& \\ + Surplus relief quota share on cat exposed line \& x \& x \& x \& \\ + Middle market commercial lines work comp or commercial auto \& x \& x \& x \& \\ +}; + +\path[draw, thick] (TEQZIBDCCW47A-1-1.south west) -- (TEQZIBDCCW47A-1-5.south east); +\path[draw, semithick] ([yshift=-0.0625em]TEQZIBDCCW47A-2-1.south west) -- ([yshift=-0.0625em]TEQZIBDCCW47A-2-5.south east); +\path[draw, thick] ([yshift=-0.3125em]TEQZIBDCCW47A-15-1.base west) -- ([yshift=-0.3125em]TEQZIBDCCW47A-15-5.base east); +\path[draw, very thin] ([xshift=-0.1875em]TEQZIBDCCW47A-1-1.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]TEQZIBDCCW47A-15-1.base west); + + + +\end{tikzpicture} + +\end{table}% + +\subsection{List of lists}\label{list-of-lists} + +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{lol }\OperatorTok{=}\NormalTok{ [[}\StringTok{\textquotesingle{}a\textquotesingle{}}\NormalTok{, }\StringTok{\textquotesingle{}b\textquotesingle{}}\NormalTok{, }\StringTok{\textquotesingle{}c\textquotesingle{}}\NormalTok{, }\StringTok{\textquotesingle{}d\textquotesingle{}}\NormalTok{], [}\StringTok{\textquotesingle{}west\textquotesingle{}}\NormalTok{, }\DecValTok{10}\NormalTok{, }\DecValTok{20}\NormalTok{, }\DecValTok{30}\NormalTok{], [}\StringTok{\textquotesingle{}east\textquotesingle{}}\NormalTok{, }\DecValTok{10}\NormalTok{, }\DecValTok{200}\NormalTok{, }\DecValTok{30}\NormalTok{], [}\StringTok{\textquotesingle{}north\textquotesingle{}}\NormalTok{, }\DecValTok{10}\NormalTok{, }\DecValTok{20}\NormalTok{, }\DecValTok{300}\NormalTok{], [}\StringTok{\textquotesingle{}south\textquotesingle{}}\NormalTok{, }\DecValTok{100}\NormalTok{, }\DecValTok{20}\NormalTok{, }\DecValTok{30}\NormalTok{]]} +\NormalTok{GT(lol)} +\end{Highlighting} +\end{Shaded} + +\begin{table} + +\caption{\label{tbl-greater-tables-test-6}GT output for list of lists +input} + +\begin{tikzpicture}[ + auto, + transform shape, + nosep/.style={inner sep=0}, + table/.style={ + matrix of nodes, + row sep=0.125em, + column sep=0.375em, + nodes in empty cells, + nodes={rectangle, scale=0.635, text badly ragged }, + row 1/.style={nodes={text=black, anchor=north, inner ysep=0, text height=0, text depth=0}}, + row 2/.style={nodes={text=black, anchor=south, inner ysep=.2em, minimum height=1.3em, font=\bfseries}}, + column 1/.style={nodes={align=left }, text height=0.9em, text depth=0.2em, inner xsep=0.375em, inner ysep=0, text width=4.72em}, + column 2/.style={nodes={align=left }, nosep, text width=2.83em}, + column 3/.style={nodes={align=left }, nosep, text width=2.83em}, + column 4/.style={nodes={align=left }, nosep, text width=2.83em}, + column 5/.style={text height=0.9em, text depth=0.2em, nosep, text width=0em} }] +\matrix (T4XHJ53EN656B) [table, ampersand replacement=\&]{ + \& \& \& \& \\ + a\grtspacer \& b\grtspacer \& c\grtspacer \& d\grtspacer \& \\ + west \& 10 \& 20 \& 30 \& \\ + east \& 10 \& 200 \& 30 \& \\ + north \& 10 \& 20 \& 300 \& \\ + south \& 100 \& 20 \& 30 \& \\ +}; + +\path[draw, thick] (T4XHJ53EN656B-1-1.south west) -- (T4XHJ53EN656B-1-5.south east); +\path[draw, semithick] ([yshift=-0.0625em]T4XHJ53EN656B-2-1.south west) -- ([yshift=-0.0625em]T4XHJ53EN656B-2-5.south east); +\path[draw, thick] ([yshift=-0.3125em]T4XHJ53EN656B-6-1.base west) -- ([yshift=-0.3125em]T4XHJ53EN656B-6-5.base east); +\path[draw, very thin] ([xshift=-0.1875em]T4XHJ53EN656B-1-1.south west) -- ([yshift=-0.3125em, xshift=-0.1875em]T4XHJ53EN656B-6-1.base west); + + + +\end{tikzpicture} + +\end{table}% +
(id: T6JW65HYNG3A5)
-100,000 2.389p -1,601.002025-03-132025-03-14 once upon a time
-91,667 22.217p -1,367.622025-03-252025-03-26 risk is hard to define
-83,333 206.619p -1,134.252025-04-062025-04-07 not in Kansas anymore
-75,000 1.922n -900.882025-04-182025-04-19 neutrinos are hard to detect