MWE

MWE

En economía, el orden de los autores es tradicionalmente alfabético. Debido al conocido sesgo inducido por este orden, existe un pequeño movimiento para ordenar aleatoriamente a los autores de un artículo (ejemplo).

Puedo ordenar a los autores de documentos en tiempo de compilación usando pgfmathrandom, pero esto no es lo suficientemente aleatorio. Me gustaría ordenar los autores dinámicamente en el momento de la visualización. Los ejemplos que puedo encontrar sobre la implementación de la funcionalidad Javascript en LaTeX/PDF no son aplicables, ya que no manejan el ajuste directo del contenido del documento (ejemplo).

MWE deseado ( \maketitleno es necesario anularlo, esa parte es simple):

 \documentclass{article}

 \usepackage{[magic-package]}

 \addauthor{Aaron}
 \addauthor{Zhang}

 \begin{document}
 \maketitle

 \end{document}

Debería rendir:

 +--------------+               +--------------+
 | Aaron, Zhang |               | Zhang, Aaron |
 |              |               |              |
 | Lorem ipsum  | w.p. 1/2,     | Lorem ipsum  | w.p. 1/2.

Respuesta1

Aquí hay una opción usando eleformspaquete.

Aleatoriza a los autores en el momento de abrir el documento usando JavaScript y coloca el resultado en un campo de formulario donde normalmente se inserta el autor en la página de título.

Sin embargo, existen algunas limitaciones:

  • No es realmente fácil usar una fuente no estándar en los campos de texto de un formulario PDF, por eso uso Times en todas partes.
  • Debe especificar la altura del campo de texto, por lo que si su número de autores excede una línea, deberá ajustarlo manualmente. Esto probablemente podría automatizarse si estuviera realmente interesado.
  • Y por supuesto, requiere Adobe Reader.

MWE

\documentclass{article}

\usepackage{newtxtext,newtxmath}
\usepackage[useui]{eforms}

\newcommand{\randauthorformat}{%
  border={invisible},
  textsize={11.5},
  textfont={Times-Roman},
  align={centered},
  fieldflags={readonly,multiline,noscrolling},
  % Default value for readers that don't support JavaScript
  value={Author One, Author Two, Author Three, and Author Four},
  pageopen={%
    % Add authors to array
    var array = ["Author One", "Author Two", "Author Three", "Author Four"];
    % Shuffling algorithm from https://stackoverflow.com/a/2450976/12652399
    var currentIndex = array.length, temporaryValue, randomIndex;
    while (0 !== currentIndex) {
      randomIndex = Math.floor(Math.random() * currentIndex);
      currentIndex -= 1;
      temporaryValue = array[currentIndex];
      array[currentIndex] = array[randomIndex];
      array[randomIndex] = temporaryValue;
    }
    var i = array.length;
    currentIndex = 0;
    var authors = "";
    while (currentIndex < array.length) {
      authors += array[currentIndex];
      if (currentIndex < array.length - 1) {
        authors += ", ";
      }
      if (currentIndex == array.length - 2) {
        authors += "and ";
      }
      currentIndex += 1;
    }
    var f = this.getField("author");
    f.value = authors;
  }
}
\newcommand{\randauthor}{%
  \textField[\ui{presets=\randauthorformat}]{author}{\linewidth}{11.5pt}}

\title{Randomised Authors}
\author{\randauthor}

\begin{document}
\maketitle
\end{document}

Salida MWE

información relacionada