Deleting redundant `\author` and `\affiliation` fields in R papaja document
Asked Answered
C

2

5

I'm creating an R Markdown document using the 'papaja' package and the 'apa7' LaTeX template. When used together, the latter package and template currently produce a conflict due to duplicated \author and \affiliation fields in the tex file. Earlier, a method was found to resolve this conflict that worked by adding the following LaTeX commands to the preamble (through header-includes in the YAML header):

  - \renewcommand\author[1]{}
  - \renewcommand\affiliation[1]{}

However, this method is not currently working (I couldn't find out why). I've tried several modifications of the above code, such as \renewcommand\author{\phantom{}}{}, but to no avail.

The error can be reproduced with the following steps:

  1. In RStudio, install the development version of the papaja package:

    # Install devtools package if necessary
    if(!"devtools" %in% rownames(installed.packages())) install.packages("devtools")
    
    # Install the stable development verions from GitHub
    devtools::install_github("crsh/papaja")
    
  2. Click on the + button at the top left and create an R Markdown document.

  3. Delete all the content in the new file and replace it with the following:

    ---
    title             : "Long title"
    shorttitle        : "Short title"
    
    documentclass     : apa7
    classoption       : man
    output            : papaja::apa6_pdf
    
    header-includes:
      - \authorsnames[1, 2, 2]{first author, second author, third author}
      - \authorsaffiliations{{first affiliation}, {second affiliation}}
    ---
    
    text text text text text text text text text.
    
  4. Knit the document.

  5. Notice the following error in the console:

    ! LaTeX Error: Command \c@NumberOfAuthors already defined.
                   Or name \end... illegal, see p.192 of the manual.
    
    Error: LaTeX failed to compile Untitled.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See Untitled.log for more info.
    Execution halted
    
  6. Open the .tex file that has been produced, delete the two lines containing \author{\phantom{0}} and \affiliation{\phantom{0}}, and hit the Compile PDF button. Notice that the document is now knitted well.

For a single individual, the above workaround using the tex file might not be too problematic. However, it proves problematic for the reproducibility of the manuscript by other people.

I would be sincerely grateful if someone could suggest a solution based on some LaTex code entered in the header-includes preamble.

Thank you very much!



.tex file

% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
  english,
  man]{apa7}
\title{Long title}
\author{\phantom{0}}
\date{}

\usepackage{amsmath,amssymb}
\usepackage{lmodern}
\usepackage{iftex}
\ifPDFTeX
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
  \usepackage{unicode-math}
  \defaultfontfeatures{Scale=MatchLowercase}
  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
  \usepackage[]{microtype}
  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
  \IfFileExists{parskip.sty}{%
    \usepackage{parskip}
  }{% else
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
  \KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
  pdftitle={Long title},
  pdflang={en-EN},
  hidelinks,
  pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\usepackage{graphicx}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
% Make \paragraph and \subparagraph free-standing
\ifx\paragraph\undefined\else
  \let\oldparagraph\paragraph
  \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
  \let\oldsubparagraph\subparagraph
  \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
% Manuscript styling
\usepackage{upgreek}
\captionsetup{font=singlespacing,justification=justified}

% Table formatting
\usepackage{longtable}
\usepackage{lscape}
% \usepackage[counterclockwise]{rotating}   % Landscape page setup for large tables
\usepackage{multirow}       % Table styling
\usepackage{tabularx}       % Control Column width
\usepackage[flushleft]{threeparttable}  % Allows for three part tables with a specified notes section
\usepackage{threeparttablex}            % Lets threeparttable work with longtable

% Create new environments so endfloat can handle them
% \newenvironment{ltable}
%   {\begin{landscape}\begin{center}\begin{threeparttable}}
%   {\end{threeparttable}\end{center}\end{landscape}}
\newenvironment{lltable}{\begin{landscape}\begin{center}\begin{ThreePartTable}}{\end{ThreePartTable}\end{center}\end{landscape}}

% Enables adjusting longtable caption width to table width
% Solution found at http://golatex.de/longtable-mit-caption-so-breit-wie-die-tabelle-t15767.html
\makeatletter
\newcommand\LastLTentrywidth{1em}
\newlength\longtablewidth
\setlength{\longtablewidth}{1in}
\newcommand{\getlongtablewidth}{\begingroup \ifcsname LT@\roman{LT@tables}\endcsname \global\longtablewidth=0pt \renewcommand{\LT@entry}[2]{\global\advance\longtablewidth by ##2\relax\gdef\LastLTentrywidth{##2}}\@nameuse{LT@\roman{LT@tables}} \fi \endgroup}

% \setlength{\parindent}{0.5in}
% \setlength{\parskip}{0pt plus 0pt minus 0pt}

% Overwrite redefinition of paragraph and subparagraph by the default LaTeX template
% See https://github.com/crsh/papaja/issues/292
\makeatletter
\renewcommand{\paragraph}{\@startsection{paragraph}{4}{\parindent}%
  {0\baselineskip \@plus 0.2ex \@minus 0.2ex}%
  {-1em}%
  {\normalfont\normalsize\bfseries\itshape\typesectitle}}

\renewcommand{\subparagraph}[1]{\@startsection{subparagraph}{5}{1em}%
  {0\baselineskip \@plus 0.2ex \@minus 0.2ex}%
  {-\z@\relax}%
  {\normalfont\normalsize\itshape\hspace{\parindent}{#1}\textit{\addperi}}{\relax}}
\makeatother

% \usepackage{etoolbox}
\makeatletter
\patchcmd{\HyOrg@maketitle}
  {\section{\normalfont\normalsize\abstractname}}
  {\section*{\normalfont\normalsize\abstractname}}
  {}{\typeout{Failed to patch abstract.}}
\patchcmd{\HyOrg@maketitle}
  {\section{\protect\normalfont{\@title}}}
  {\section*{\protect\normalfont{\@title}}}
  {}{\typeout{Failed to patch title.}}
\makeatother

\usepackage{xpatch}
\makeatletter
\xapptocmd\appendix
  {\xapptocmd\section
    {\addcontentsline{toc}{section}{\appendixname\ifoneappendix\else~\theappendix\fi\\: #1}}
    {}{\InnerPatchFailed}%
  }
{}{\PatchFailed}
\usepackage{csquotes}
\authorsnames[1, 2, 2]{first author, second author, third author}
\authorsaffiliations{{first affiliation}, {second affiliation}}
\ifXeTeX
  % Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)
  \usepackage{polyglossia}
  \setmainlanguage[]{english}
\else
  \usepackage[main=english]{babel}
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
\fi
\ifLuaTeX
  \usepackage{selnolig}  % disable illegal ligatures
\fi


\shorttitle{Short title}

\affiliation{\phantom{0}}

\begin{document}
\maketitle

text text text text text text text text text.


\end{document}

Clot answered 8/1, 2022 at 18:20 Comment(2)
Can you add keep_tex: true to your header and show the intermediate .tex file?Banter
Of course--I just added it.Clot
B
4

Quick hack:

---
title             : "Long title"
shorttitle        : "Short title"

documentclass     : apa7
classoption       : man
output            : papaja::apa6_pdf

header-includes:
  - \xpatchcmd{\authorsnames}{\newcounter{NumberOfAuthors}}{\setcounter{NumberOfAuthors}{0}}{}{}
  - \xpatchcmd{\authorsnames}{\newcounter{NumberOfSuperscripts}}{\setcounter{NumberOfSuperscripts}{0}}{}{}
  - \authorsnames[1, 2, 2]{first author, second author, third author}
  - \authorsaffiliations{{first affiliation}, {second affiliation}}
  - \renewcommand{\affiliation}[1]{}
---

text text text text text text text text text.

enter image description here

Banter answered 10/1, 2022 at 20:59 Comment(3)
Thank you so very much! I'll send the bounty tomorrow when it becomes available. Best regardsClot
@PabloBernabeu You're welcome! (You could also wait a bit longer with the bounty in case someone knows a clean solution instead of this hack)Banter
Ok, I'll do that.Clot
L
2

I found a book on the Papaja package. That link will bring you to the YAML section. I think this is what you were looking for.

First, there doesn't appear to be an association for APA 7, unless you have the development version of Papaja. That being said, there is a ticket on this in their main github.

If you set the output to apa6_docx, this "and &" error won't be there. (And even if it were, you could have deleted it.) You can save it as a PDF from there. I'm not sure if this is an option for you, but I thought I would mention it.

This is what it states about subsequent authors (and much more).

---
title             : "Long title"
shorttitle        : "Short title"

author: 
  - name          : "First Author"
    affiliation   : "1"
  - name          : "Second Author"
    affiliation   : "1"
  - name          : "Third Author"
    affiliation   : "2"
  
affiliation:
  - id            : "1"
    institution   : "The University"
  - id            : "2"
    institution   : "The Other University"
    
documentclass     : apa7
classoption       : man
output            : papaja::apa6_docx
---

text text text text text text text text text.

enter image description here

Loafer answered 8/1, 2022 at 22:28 Comment(1)
Thank you very much for your attention. The problem with this built-in method is the appearance of 'and &' before the last author. That's why I've been entering the authors through header-includes. Yet certainly, if a solution didn't appear, I would take the 'and &' rather than having to edit the tex file.Clot

© 2022 - 2024 — McMap. All rights reserved.