Borders
- Within 
grob_layout(), the grob_row() and
grob_col() functions are able to put borders around their
contents. 
grob_layout(
  grob_row(
    grob_col(1),
    grob_col(border = TRUE, 2)
    ),
  grob_row(
    border = TRUE,
    grob_col(3),
    grob_col(
      border = TRUE,
      grob_row(border = TRUE, grob_col(border = TRUE, 4)),
      grob_row(border = TRUE, grob_col(border = TRUE, 5))
      )
    ),
  height = 100,
  width = 100
  ) %>%
  view_grob()
 

- Those borders are customizable. With the
border_aes_list argument and the ga_list()
function, the user can adjust
- Which border sides to display (
border_sides) 
- The border width (
border_width) 
- The border color (
border_color) 
 
- For more information on the aesthetics above, see
?ga_list. 
grob_layout(
  grob_row(
    grob_col(1),
    grob_col(
      border = TRUE,
      border_aes_list = ga_list(
        border_color = "red"
        ),
      2
      )
    ),
  grob_row(
    border = TRUE,
    border_aes_list = ga_list(
      border_sides = "top",
      border_width = 5
      ),
    grob_col(3),
    grob_col(
      border = TRUE,
      border_aes_list = ga_list(
        border_sides = "left, bottom",
        border_color = "blue",
        border_width = 4
        ),
      4
      )
    ),
  height = 100,
  width = 100
  ) %>%
  view_grob()
 

 
Titles
- Titles can be added to either 
grob_layout(),
grob_row() or grob_col(). 
grob_layout(
  title = "grob-layout title",
  grob_row(
    grob_col(1),
    grob_col(title = "grob-column title", 2)
    ),
  grob_row(
    title = "grob-row title",
    grob_col(3),
    grob_col(4)
    )
  ) %>%
  view_grob(height = 100, width = 100)
 

- The height of the title can be adjusted by either giving an explicit
height in millimeters to the 
title_height argument, or
changing the title height proportion with title_p.
title_p corresponds to the proportion of the height
allotted to the grob in question which will be given to the title. 
title_height will override title_p in all
cases. 
 
grob_layout(
  title = "grob-layout title",
  title_height = 20,
  grob_row(
    grob_col(1),
    grob_col(
      title = "grob-column title",
      title_p = 0.5,
      2
      )
    ),
  grob_row(
    title = "grob-row title",
    title_height = 10,
    grob_col(3),
    grob_col(4)
    )
  ) %>%
  view_grob(height = 100, width = 100)
 

- The aesthetics of the title can be altered as well with the
title_aes_list argument and ga_list(). 
grob_layout(
  title = "grob-layout title",
  title_height = 20,
  title_aes_list = ga_list(
    text_color = "blue",
    border_sides = "bottom"
    ),
  grob_row(
    grob_col(1),
    grob_col(
      title = "grob-column title",
      title_p = 0.5,
      title_aes_list = ga_list(
        font_face = 3,
        text_color = "white",
        background_color = "gray40"
        ),
      2
      )
    )
  ) %>%
  view_grob(height = 100, width = 100)
 

 
Captions
- Everything that applies to titles also applies to captions, as
grob_layout(), grob_col() and
grob_row() are all equipped with caption,
caption_aes_list, caption_p and
caption_height arguments. 
- By default, captions are more subtle than titles, but their
appearances can be altered however the user wants.
 
grob_layout(
  caption = "grob-layout caption",
  grob_row(
    grob_col(1),
    grob_col(caption = "grob-column caption", 2)
    ),
  grob_row(
    caption = "grob-row caption",
    grob_col(3),
    grob_col(4)
    )
  ) %>%
  view_grob(height = 100, width = 100)
 

grob_layout(
  caption = "grob-layout caption",
  caption_height = 20,
  grob_row(
    grob_col(1),
    grob_col(
      caption = "grob-column caption",
      caption_p = 0.5,
      2
      )
    ),
  grob_row(
    caption = "grob-row caption",
    caption_height = 10,
    grob_col(3),
    grob_col(4)
    )
  ) %>%
  view_grob(height = 100, width = 100)
 

grob_layout(
  caption = "grob-layout caption",
  caption_height = 20,
  caption_aes_list = ga_list(
    text_color = "blue",
    border_sides = "bottom"
    ),
  grob_row(
    grob_col(1),
    grob_col(
      caption = "grob-column caption",
      caption_p = 0.5,
      caption_aes_list = ga_list(
        font_face = 3,
        text_color = "white",
        background_color = "gray40"
        ),
      2
      )
    )
  ) %>%
  view_grob(height = 100, width = 100)
 

 
Page Numbers
- The user can add a page number to the bottom right of the page if
he/she wishes, by utilizing the 
page_number argument within
grob_layout(). 
- The page number is inserted into the padding of the overall
grob-layout.
 
- As of now, the aesthetics of the page number is restricted to the
default behavior.
 
grob_layout(
  grob_row(
    grob_col(1),
    grob_col(2)
    ),
  grob_row(
    grob_col(3),
    grob_col(4)
    ),
  page_number = 1
  ) %>%
  view_grob(height = 100, width = 100)
 

- FYI - The page number allotted space is more meant for a fully-sized
grob-layout (using default grob-layout size) than it is for a 100mm x
100mm sized grob.