Пожалуйста, помогите мне переместить текст Hola
и номер страницы 2
в левый верхний край повернутой страницы в следующем коде.
Примечание: Я работаю с двухколоночным документом с портретной ориентацией и мне нужно временно изменить его на одноколоночный с альбомной ориентацией, при этом текст Hola
должен быть расположен на верхней левой границе.
Спасибо!
\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}
Текущий плохой результат выглядит так:
Я хочу получить результат, как на рисунке ниже (слева):
решение1
Редактировать в четверг, 4 января 2024 г., 22:24 (UTC +0000):
Проблема 1:
ВTeX - LaTeX Stack Exchange Chat Ульрике Фишер отметилачто с \newgeometry
пакетомгеометриявам необходимо применить onecolumn
опцию -, хотя переключение в одностолбцовый режим осуществляется через \onecolumn
.
Проблема 2:
Текстовый блок — это блок, содержащий текст страницы документа. (Не колонтитулы и не заметки на полях.)
Но в LaTeX никакие параметры/длины не \typeblockwidth
вводятся \typeblockheight
.
Вместо этого каждый из \textwidth
и \textheight
должен определять две вещи:
В любом случае
\textwidth
заключается в определении горизонтальной протяженности типографского блока.\textheight
заключается в определении вертикального расширения типографского блока.
В случае, если текст внутри блока выравнивается по горизонтали
\textwidth
также необходимо определить максимальную длину строк текста, которые помещаются в наборный блок.\textheight
также необходимо определить количество места, доступного для размещения строк текста друг над другом внутри набора.
В случае, если текст внутри блока выравнивается по вертикали
\textwidth
также необходимо определить количество места, доступного для размещения строк текста друг над другом внутри набора.\textheight
также необходимо определить максимальную длину строк текста, которые помещаются в наборный блок.
В пределах среды landscape
упаковкиlscape1 \textheight
изменяется для определения объема пространства, доступного для размещения строк текста внутри блоков страниц друг над другом, при этом эти строки внутри блоков страниц выравниваются по вертикали.
Это изменение игнорирует тот факт, что \textheight
в любом случае — независимо от того, выравнивается ли текст внутри шрифтового блока по горизонтали или вертикали — необходимо определить вертикальное расширение шрифтового блока.
Т.е., в то время как среда landscape
пакетаlscape1 действует, \textheight
больше не определяет вертикальное расширение типоблока.
Но с рутиной \ShowFramePicture
пакетавитринадля рисования рамок предполагается (имхо, правильно), что \textheight
в любом случае определяется вертикальная протяженность наборного блока.
Таким образомlscape's 1 изменение должно быть отменено, прежде чем будет выполнено \textheight
рисование набора кадров через .\ShowFramePicture
Поэтому я решил переопределить \ShowFramePicture
-environment, landscape
чтобы сбросить \textheight
(только) локальную область действия, которая действует при отрисовке кадров.
1 Пакетpdflscapeвнутренне загружаетlscapeи изменяет среду landscape
пакетаlscapeтак что к каждой странице, отправленной в .pdf-файл, пока landscape
действует среда, добавляется директива для pdf-просмотрщика, чтобы отобразить на экране эту страницу, повернутую на угол 90 градусов. Эта директива влияет только на то, как страница отображается на экране компьютера/на дисплее, используемом для просмотра .pdf-файла. Эта директива фактически не влияет на работу набора TeX. Она влияет на «работу отображения» программы, используемой для просмотра pdf-файла. Хотя со страницами, набранными и отправленными, пока landscape
действует среда, строки текста в блоках набора выравниваются по вертикали, вам не нужно наклонять голову влево или вправо для их чтения на экране/дисплее, поскольку эти страницы отображаются повернутыми на 90 градусов, так что вы можете читать их, глядя на экран/дисплей вашего компьютера слева направо.
\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}
решение2
Добро пожаловать в TeX.SE!
Следующий MWE (минимальный рабочий пример) воспроизводит ваше второе изображение, о котором идет речь:
\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}
Не совсем понятно, где вы хотите разместить номера страниц. Пока что я оставил их так, как они расположены по умолчанию (по центру в стопе).
В случаях, когда вы хотите иметь номер страницы в другом месте, вам нужно определить новые стили заголовка/подвала, например, с помощью fancyhdr
пакета use. Например, чтобы преамбула добавила
\usepackage{fancyhdr}
\fancypagestyle{LandScape}%
{%
\fancyhf{}%
\fancyhead[L]{\thepage}%
\renewcommand{\headrulewidth}{0pt}%
\renewcommand{\footrulewidth}{0pt}%
}
и перед \begin{landscape}
вставкой в тексте документа
\pagestyle{LandScape}
Результирующий стиль страницы:
Редактировать:
- Непонятно, почему вы определяете,
\newgeometry
когда у него те же настройки, что и у других страниц документа (портретной ориентации). В таких случаях я бы его не использовал, т.е. в вашем случае я бы просто отключил его. - Если ваша главная задача — правильно отрисовать рамки макета страницы на всех страницах, вам следует придерживаться решения, предложенного @Ulrich Diez (+1).
- Его решение, адаптированное к моему первоначальному ответу, с немного измененным кодом показано в следующем 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}