wjschne / apaquarto

A quarto extension for creating APA7 documents in .docx, .html, and .pdf formats
https://wjschne.github.io/apaquarto/
Creative Commons Zero v1.0 Universal
170 stars 15 forks source link

Wide table runs into caption contingent on label prefix when using tinytable #83

Open fkohrt opened 3 months ago

fkohrt commented 3 months ago

If I create a table using tinytable that is very wide, the caption is at risk of being struck through:

---
title: "Test Document"
author:
  - name: Test Author
    affiliations:
      city: Los Angeles
      region: CA
lang: en
format:
  apaquarto-pdf:
    documentmode: man
keep-tex: true
---

```{r}
#| label: "tbl-descriptive-statistics"
#| echo: false
#| tbl-cap: "Summary Statistics"

# Install dev version of `tinytable`
# remotes::install_github("vincentarelbundock/tinytable")

library(tinytable)
tt(head(iris))


![Screenshot from 2024-08-22 16-09-29](https://github.com/user-attachments/assets/1e6bd7cf-b223-4a00-a0c9-31013994ac65)

Curiously, removing the `tbl-` prefix from the label resolves the issue:

![Screenshot from 2024-08-22 16-10-24](https://github.com/user-attachments/assets/4f174660-c870-4c90-9b68-f0b976100fee)

Initially raised at vincentarelbundock/tinytable#327, where the following was also noted:

> And for reference, here's the LaTeX that this produces. Note that the _only_ code that `tinytable` generates is the `\begin{tblr}` block, and that the issue stems for a conflict between a vanilla `tblr` environment and the `table` and `caption` commands inserted by Quarto and/or `apaquarto`.
> 
> ```latex
> \begin{table}
> 
> {\caption{{Summary Statistics}{\label{tbl-descriptive-statistics}}}
> \vspace{-20pt}}
> 
> \centering
> \begin{tblr}[         %% tabularray outer open
> ]                     %% tabularray outer close
> {                     %% tabularray inner open
> colspec={Q[]Q[]Q[]Q[]Q[]},
> }                     %% tabularray inner close
> \toprule
> Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species \\ \midrule %% > TinyTableHeader
> 5.1 & 3.5 & 1.4 & 0.2 & setosa \\
> 4.9 & 3.0 & 1.4 & 0.2 & setosa \\
> 4.7 & 3.2 & 1.3 & 0.2 & setosa \\
> 4.6 & 3.1 & 1.5 & 0.2 & setosa \\
> 5.0 & 3.6 & 1.4 & 0.2 & setosa \\
> 5.4 & 3.9 & 1.7 & 0.4 & setosa \\
> \bottomrule
> \end{tblr}
> 
> \end{table}
> ```
wjschne commented 3 months ago

This was caused by a hacky solution of mine to a problem with longtable (the default environment for quarto tables). The longtable environment does not play nicely with the apa7 package that apaquarto depends on to make .pdf via LaTeX. I am not sure what to do about it, but I have inserted a possible fix. By default, apaquarto removes 20pt of extra space (i.e., \vspace{-20pt}) between captions and tables when in manuscript mode. Using tinytable, longtable is not used, and space should not be subtracted. If I can find a way to take care of the problem automatically, I will do it. In the meantime, you can now add after-caption-space: 0pt as a code-chunk option. For example:

---
title: "Test Document"
author:
  - name: Test Author
    affiliations:
      city: Los Angeles
      region: CA
lang: en
format:
  apaquarto-pdf:
    documentmode: man
keep-tex: true
---

```{r}
#| label: "tbl-descriptive-statistics"
#| echo: false
#| tbl-cap: "Summary Statistics"
#| after-caption-space: 0pt

library(tinytable)
tt(head(iris))


![Screenshot 2024-08-25 121626](https://github.com/user-attachments/assets/26e5c335-464d-4524-99b2-3f5d392f3d68)