De vertical de dos columnas a horizontal de una columna: fuerce el texto y el número de página (en modo horizontal) al margen izquierdo

De vertical de dos columnas a horizontal de una columna: fuerce el texto y el número de página (en modo horizontal) al margen izquierdo

Ayúdenme a forzar el texto Holay el número de página 2en el margen superior izquierdo de la página rotada en el siguiente código.

Nota: Estoy trabajando con un documento vertical de dos columnas y necesito un cambio temporal a un documento horizontal de una columna, con el Holatexto ubicado en el borde superior izquierdo.

¡Gracias!

\documentclass[twocolumn]{article}

% Packages for various functionalities
\usepackage{lipsum} % For dummy text; you can remove this in your actual document
\usepackage{graphicx} % For including images
\usepackage{caption} % For captions
\usepackage{authblk} % For author affiliations
\usepackage{longtable} % For long tables
\usepackage{pdflscape} % For landscape pages
\usepackage[margin=1in]{geometry} % Adjust margins as desired
\usepackage{showframe} % To display page borders
\usepackage{geometry} %to change page margins
 \geometry{
 letterpaper,
 left=10mm,
 top=10mm,
 bottom=10mm,
 right=10mm
 }
 
% Title and authors
\title{Your Title Here}
\author[1]{Author One}
\author[2]{Author Two}
\affil[1]{Affiliation One}
\affil[2]{Affiliation Two}

\begin{document}

\maketitle

\section{Introduction}
% ... (Sections and content here)


\begin{landscape}
\newgeometry{margin=2cm, top=2cm, bottom=2cm, left=2cm, right=2cm} % Adjust margins for landscape page
\clearpage %needed for next command
\onecolumn %reset to one column mode


Hola

\clearpage %needed for next command
\twocolumn %reset to two-column mode
\restoregeometry %return to initial page margins
\end{landscape}


\section{Discussion}
% ... (Remaining content here)

\end{document}

El mal resultado actual se ve así:

ingrese la descripción de la imagen aquí

Quiero el resultado como el de abajo (a la izquierda):

ingrese la descripción de la imagen aquí

Respuesta1


Editar el jueves 4 de enero de 2024 a las 22:24 (UTC +0000):

Número 1:

EnTeX - LaTeX Stack Exchange Chat Ulrike Fischer señalóque con \newgeometrydel paquetegeometríadebe aplicar la onecolumnopción aunque cambie al modo de una columna a través de \onecolumn.

Número 2:

El bloque de tipo es el cuadro que contiene el texto de una página del documento. (Ni los encabezados ni los pies de página, ni las notas al margen).

Pero en LaTeX no se introducen parámetros/longitudes \typeblockwidth/ .\typeblockheight

En cambio, cada uno de \textwidthy \textheightdebe determinar dos cosas:

En todo caso

  • \textwidthes determinar la extensión horizontal del bloque tipográfico.
  • \textheightes determinar la extensión vertical del bloque tipográfico.

En caso de que el texto dentro del bloque tipográfico esté justificado horizontalmente

  • \textwidthes también determinar la longitud máxima de líneas de texto que caben en el bloque tipográfico.
  • \textheightes también determinar la cantidad de espacio disponible para colocar líneas de texto una encima de otra dentro del bloque tipográfico.

En caso de que el texto dentro del bloque tipográfico esté justificado verticalmente

  • \textwidthes también determinar la cantidad de espacio disponible para colocar líneas de texto una encima de otra dentro del bloque tipográfico.
  • \textheightes también determinar la longitud máxima de líneas de texto que caben en el bloque tipográfico.

Dentro del entorno landscapedel paquete.paisaje1 \textheight se modifica para determinar la cantidad de espacio disponible dentro de los bloques tipográficos de las páginas para colocar líneas de texto una encima de otra, mientras que estas líneas dentro de los bloques tipográficos de las páginas se justifican verticalmente.

Este cambio ignora el hecho de que \textheighten cualquier caso, sin importar si el texto dentro del bloque tipográfico está justificado horizontal o verticalmente, debe determinar la extensión vertical del bloque tipográfico.

Es decir, mientras el entorno landscapedel paquetepaisaje1 está vigente, \textheightya no determina la extensión vertical del bloque tipográfico.

Pero con la rutina \ShowFramePicturedel paquetemarco de exposiciónpara dibujar los marcos se supone (correctamente, en mi humilde opinión) que \textheighten cualquier caso determina la extensión vertical del bloque tipográfico.

De este modopaisajeLa primera modificación de \textheightdebe deshacerse antes de que \ShowFramePicturese realice el dibujo de un conjunto de marcos.

Así que decidí redefinir \ShowFramePictureel landscapeentorno para restablecer \textheight(solo) dentro del alcance local que está vigente al dibujar los marcos.

1 El paquetepaisaje pdfcargas internaspaisajey modifica el entorno landscapedel paquete.paisajede modo que a cada página enviada al archivo .pdf mientras el entorno landscapeestá vigente, se agrega una directiva para que el visor de PDF muestre en la pantalla esta página girada en un ángulo de 90 grados. Esta directiva solo afecta cómo se muestra la página en la pantalla de la computadora/en la pantalla utilizada para ver el archivo .pdf. En realidad, esta directiva no afecta el trabajo de composición tipográfica de TeX. Afecta el "trabajo de visualización" del programa utilizado para ver el archivo pdf. Aunque con las páginas escritas y enviadas mientras el entorno landscapeestaba vigente, las líneas de texto de los bloques tipográficos están justificadas verticalmente, no es necesario inclinar la cabeza hacia la izquierda o hacia la derecha para leerlas en la pantalla/visualización como esas páginas. se muestran girados 90 grados para que pueda leerlos mirando la pantalla de su computadora de izquierda a derecha.


\documentclass[twocolumn, letterpaper]{article}

% Packages for various functionalities
\usepackage{lipsum} % For dummy text; you can remove this in your actual document
\usepackage{graphicx} % For including images
\usepackage{caption} % For captions
\usepackage{authblk} % For author affiliations
\usepackage{longtable} % For long tables
\usepackage{pdflscape} % For landscape pages
\usepackage{geometry} %to change page margins
\usepackage{showframe} % To display page borders

\geometry{
 letterpaper,
 left=20mm,
 top=20mm,
 bottom=20mm,
 right=20mm
}

\newcommand\savetextheight{}%

% Title and authors
\title{Your Title Here}
\author[1]{Author One}
\author[2]{Author Two}
\affil[1]{Affiliation One}
\affil[2]{Affiliation Two}

\begin{document}

\maketitle

\section{Introduction}
%... (Sections and content here)
\lipsum[1-8]

\onecolumn %reset to one column mode
\newgeometry{onecolumn, margin=2cm, top=2cm, bottom=2cm, left=2cm, right=2cm}% Adjust margins for landscape page

\edef\savetextheight{\number\textheight\space sp\relax}%
\begin{landscape}%
\makeatletter
\renewcommand\ShowFramePicture{%
  \begingroup
    % -------------------------------------------------------------------------------------------
    %  \textheight is modified within the landscape-environment because the box holding the text
    %  is rotated. But the frames around the text are drawn on the sheet of paper, which during
    %  typesetting is not rotated (, although pdflscape tells pdf-viewers to display it rotated).
    %  Thus modification of \textheight is to be undone while drawing the frames:
    % -------------------------------------------------------------------------------------------
    \textheight=\savetextheight
    % -------------------------------------------------------------------------------------------
    \ShowFrameColor\linethickness{\ShowFrameLinethickness}%
    \AtPageLowerLeft{%
      \framebox(\paperwidth,\paperheight){}}%
    \AtTextLowerLeft{%
      \framebox(\textwidth,\textheight){}}%
    \AtTextUpperLeft{%
      \put(0,\headsep){%
        \framebox(\textwidth,\headheight){}}}%
    \AtTextLowerLeft{%
      \put(0,-\footskip){%
        \line(1,0){\textwidth}}}%
    \AtTextLowerLeft{%
      \SF@tempdima=\textwidth\advance\SF@tempdima\marginparsep
      \if@twoside
        \ifodd\c@page\else
          \if@mparswitch
            \SF@tempdima=-\marginparsep\advance\SF@tempdima-\marginparwidth
          \fi
        \fi
      \fi
      \put(\SF@tempdima,0)%
        {\framebox(\marginparwidth,\textheight){}}%
    }%
  \endgroup
}
\makeatother
\noindent Hola \lipsum[1-18]
\clearpage
\lipsum[1-8]
\end{landscape}%

\twocolumn
\restoregeometry %return to initial page margins

\section{Discussion}
% ... (Remaining content here)
\lipsum[1-8]

\end{document}
ingrese la descripción de la imagen aquí

Respuesta2

¡Bienvenido a TeX.SE!

El siguiente MWE (ejemplo de trabajo mínimo) reproduce la segunda imagen en cuestión:

\documentclass[twocolumn]{article}
\usepackage[letterpaper,
            margin=1in]{geometry} % Adjust margins as desired

\usepackage{afterpage} % For landscape pages
\usepackage{pdflscape} % For landscape pages

% Packages for various functionalities
\usepackage{lipsum} % For dummy text; you can remove this in your actual document
\usepackage{graphicx} % For including images
\usepackage{caption} % For captions
\usepackage{authblk} % For author affiliations
\usepackage{longtable} % For long tables
                    

% Title and authors
\title{Your Title Here}
\author[1]{Author One}
\author[2]{Author Two}
\affil[1]{Affiliation One}
\affil[2]{Affiliation Two}

\begin{document}
\pagestyle{plain}

\maketitle

\section{Introduction}
\lipsum[1-4]

\afterpage{%
    \clearpage
\newgeometry{margin=20mm} % Adjust margins for landscape page
\onecolumn              % reset to one column mode
    \begin{landscape}

Hola, landscape here!

\lipsum[1-3]

    \end{landscape}
\restoregeometry %return to initial page margins
\twocolumn %reset to two-column mode
            }% end afterpage          
\lipsum[6]

\section{Discussion}
\lipsum[7-13]

\end{document}

ingrese la descripción de la imagen aquí

No está del todo claro dónde le gusta tener los números de página. Hasta ahora los dejé en la posición predeterminada (centrados en el pie).

En los casos en que desee tener el número de página en algún otro lugar, deberá definir nuevos estilos de encabezado/pie de página, por ejemplo con el fancyhdrpaquete de uso. Por ejemplo, al preámbulo añadir

\usepackage{fancyhdr}    
\fancypagestyle{LandScape}%
{%
\fancyhf{}%
\fancyhead[L]{\thepage}%
\renewcommand{\headrulewidth}{0pt}%
\renewcommand{\footrulewidth}{0pt}%
}

y antes \begin{landscape}en el cuerpo del documento insertar

\pagestyle{LandScape}

El estilo de página resultante es:

ingrese la descripción de la imagen aquí

Editar:

  • No está claro por qué define \newgeometrycuándo tiene la misma configuración que la geometría de otras páginas de documentos (orientadas en formato vertical). En tales casos no lo usaría, es decir, en su caso simplemente lo abandonaría.
  • Si su principal preocupación es dibujar los marcos de diseño de página correctamente en todas las páginas, debe seguir con la solución propuesta por @Ulrich Diez (+1).
  • Su solución, adoptada según mi respuesta original, con un código ligeramente modificado, se muestra en el siguiente MWE:
\documentclass[twocolumn]{article}
\usepackage[letterpaper,
            margin=1in]{geometry} % Adjust margins as desired
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.5pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}     % For dummy text; in actual document
                        % you can/should remove it

\newcommand\savetextheight{}%
\edef\savetextheight{\number\textheight\space sp\relax}%
\makeatletter%
\renewcommand\ShowFramePicture{%
    \textheight=\savetextheight
%---------------------------------------------------------------%
\ShowFrameColor\linethickness{\ShowFrameLinethickness}%
\AtTextLowerLeft{% text box
  \framebox(\textwidth,\textheight){}}%
\AtTextUpperLeft{% page header
  \put(0,\headsep){%
    \framebox(\textwidth,\headheight){}}}%
\AtTextLowerLeft{% page margin
  \put(0,-\footskip){%
    \line(1,0){\textwidth}}}%
\AtTextLowerLeft{%  when document is twoside
  \SF@tempdima=\textwidth\advance\SF@tempdima\marginparsep
  \if@twoside
    \ifodd\c@page\else
      \if@mparswitch
        \SF@tempdima=-\marginparsep\advance\SF@tempdima-\marginparwidth
      \fi
    \fi
  \fi
  \put(\SF@tempdima,0)%
    {\framebox(\marginparwidth,\textheight){}}%
                }% end of twoside
                    }% end of \renewcommand
\makeatother

% Packages for various functionalities
\usepackage{afterpage}  % For remove empty space on page before 
                        % landscape page with text after it
\usepackage{pdflscape}  % For landscape pages
\usepackage{graphicx}   % For including images
\usepackage{caption}    % For captions
\usepackage{authblk}    % For author affiliations
\usepackage{longtable}  % For long tables


% Title and authors
\title{Your Title Here}
\author[1]{Author One}
\author[2]{Author Two}
\affil[1]{Affiliation One}
\affil[2]{Affiliation Two}

%---------------------------------------------------------------%
\begin{document}
\maketitle
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Introduction}
\lipsum[1-4]

\afterpage{%
    \clearpage
\onecolumn                  % reset to one column mode
\begin{landscape}%
Hola, landscape here!

\lipsum[1-2]

\begin{longtable}[htb]{|p{\dimexpr\textwidth-2\tabcolsep}|}
\caption{Longtable: width = \texttt{textwidth}} \\
    \hline
\lipsum[66] \\
    \hline
\end{longtable}

\begin{longtable}[htb]{|p{\dimexpr\textheight-2\tabcolsep}|}
\caption{Longtable: width = \texttt{textheight}} \\
    \hline
\lipsum[66] \\
    \hline
\end{longtable}

\begin{longtable}[htb]{|p{\dimexpr\linewidth-2\tabcolsep}|}
\caption{Longtable: width = \texttt{linewidth}} \\
    \hline
\lipsum[66] \\
    \hline
\end{longtable}

\end{landscape}%
\twocolumn
        }% end \afterpage


\section{Discussion}
\lipsum[1-8]

\end{document}

ingrese la descripción de la imagen aquí

información relacionada