pag_indices_inner | R Documentation |
Pagination methods should typically call the make_row_df
method
for their object and then call this function on the resulting
pagination info data.frame.
pag_indices_inner(
pagdf,
rlpp,
min_siblings,
nosplitin = character(),
verbose = FALSE,
row = TRUE,
have_col_fnotes = FALSE,
div_height = 1L
)
pagdf |
data.frame. A pagination info data.frame as created by
either |
rlpp |
numeric. Maximum number of row lines per page (not including header materials), including (re)printed header and context rows |
min_siblings |
numeric. Minimum sibling rows which must appear on either side of pagination row for a mid-subtable split to be valid. Defaults to 2. |
nosplitin |
character. List of names of sub-tables where page-breaks are not allowed, regardless of other considerations. Defaults to none. |
verbose |
logical(1). Should additional informative messages about the search for
pagination breaks be shown. Defaults to |
row |
logical(1). Is pagination happening in row
space ( |
have_col_fnotes |
logical(1). Does the table-like object being rendered have column-associated referential footnotes. |
div_height |
numeric(1). The height of the divider line when the
associated object is rendered. Defaults to |
pab_indices_inner
implements the Core Pagination Algorithm
for a single direction (vertical if row = TRUE
, the default, horizontal otherwise)
based on the pagination dataframe and (already adjusted for non-body rows/columns)
lines (or characters) per page.
A list containing the vector of row numbers, broken up by page
Pagination is performed independently in the vertical and horizontal directions based solely on a pagination data.frame, which includes the following information for each row/column:
number of lines/characters rendering the row will take after
word-wrapping (self_extent
)
the indices (reprint_inds
) and number of lines (par_extent
)
of the rows which act as context for the row
the row's number of siblings and position within its siblings
Given lpp
(cpp
) already adjusted for rendered elements which
are not rows/columns and a dataframe of pagination information,
pagination is performed via the following algorithm, and with a
start = 1
:
Core Pagination Algorithm:
Initial guess for pagination point is start + lpp
(start + cpp
)
While the guess is not a valid pagination position, and guess > start
, decrement guess and repeat
an error is thrown if all possible pagination positions between
start
and start + lpp
(start + cpp
) would ever be < start
after decrementing
Retain pagination index
if pagination point was less than NROW(tt)
(ncol(tt)
), set
start
to pos + 1
, and repeat steps (1) - (4).
Validating pagination position:
Given an (already adjusted) lpp
or cpp
value, a pagination is invalid if:
The rows/columns on the page would take more than (adjusted) lpp
lines/cpp
characters to render including
word-wrapping
(vertical only) context repetition
(vertical only) footnote messages and or section divider lines take up too many lines after rendering rows
(vertical only) row is a label or content (row-group summary) row
(vertical only) row at the pagination point has siblings, and
it has less than min_siblings
preceding or following siblings
pagination would occur within a sub-table listed in nosplitin
mypgdf <- basic_pagdf(row.names(mtcars))
paginds <- pag_indices_inner(mypgdf, rlpp = 15, min_siblings = 0)
lapply(paginds, function(x) mtcars[x, ])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.