
다음 revtex4에서는 PDF 페이지 보기를 90도 회전하도록 턴페이지를 만들 수 있습니까?수평의방향(콘텐츠를 90도 회전하는 것 이상이지만 페이지는 동일하게 유지)수직의정위)?
\documentclass[aps,pre,superscriptaddress]{revtex4-1}
\begin{turnpage}
\begin{figure} or
\begin{table}
[...]
\end{figure} or \end{table}
\end{turnpage}
다른 유사한 기능은 다음과 같습니다.
\usepackage{lscape}
\begin{landscape}
\end{landscape}
답변1
댓글에 약간의 혼란이 있는 것 같아서 내가 이해한 대로 질문을 다시 설명합니다. revtex4
( 4-1
및 4-2
) turnpage
내용을 가로 모드로 조판하는 환경을 제공합니다. 하지만. PDF에는 여전히 가로 페이지가 세로 방향으로 표시됩니다. 이 페이지가 가로 모드로 조판될 뿐만 아니라 동일한 방향으로 표시되기를 원합니다.*
나는 여기에서 얻은 "마법의 코드"를 통해 이것을 달성했습니다.ArXiv에서 emulateapj를 사용하여 가로 지향 테이블 게시. 특히 관련 코드 줄은 다음과 같습니다.
[...]
\clearpage
\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}
[...]
이 코드를 사용하면 이 두 줄 뒤의 페이지는 가로 모드로 조판되고, 이 두 줄 앞의 페이지는 세로 모드로 유지됩니다. 나는 조사하지 않았다왜이 매크로는 정확하게 작동하지만(만약 그렇게 하면 이 답변을 업데이트하겠습니다) 질문에 명시된 목표를 달성하기에 충분해 보입니다. 특히, 이는 \clearpage
중요하지 않습니다. 저는 잘 작동할 것으로 기대합니다 . 중요한 점은 페이지가 배송되기 전에 매크로를 \pagebreak
재설정하여 PDF 페이지의 회전을 설정할 수 있다는 것입니다 .\pdfpageattr
이제 환경의 정의를 살펴보았는데 turnpage
( \ShowCommand{\turnpage}
; \endturnpage
아무것도 수행하지 않음) 다음과 같은 결과를 얻었습니다.
\turnpage =
\def \width@float {\textheight}
\def \widthd@float {\textheight}
\appdef \@endfloatbox
{
\@ifxundefined \@currbox
{\ltxgrid@warn {Cannot rotate! Not a float}}
{
\setbox \@currbox \vbox to\textwidth
{\vfil \unvbox \@currbox \vfil}
\global\setbox \@currbox \vbox
{ \rotatebox{90}{\box \@currbox} }
}
}
공백은 내 것이며 명확성을 위해. 따라서 우리는 sideways
환경이 너무 특별한 작업을 수행하는 것이 아니라 페이지 크기만큼 부동 소수점을 설정하고 부동 소수점의 내용을 회전하는 일부 코드를 추가한다는 것을 알게 되었습니다. (여기서는 초 source2e
P1입니다.)
이 플로트가 항상 다음 페이지로 푸시된다고 가정하면(이게 얼마나 큰 가정인지는 잘 모르겠지만 실제로는 효과가 있습니다**), 다음과 같은 경우 이 플로트를 가로 방향으로 표시할 수 있습니다. \pdfpageattr
다음 페이지 시작 부분에서 올바르게 설정한 다음 다음 페이지 시작 부분에서 PDF 방향을 재설정합니다.
나는 배송 후크(즉 lthooks-doc
및 ltshipout-doc
)를 활용하여 이를 달성했습니다.
\appdef \turnpage {%
% When we're declaring our turnpage float, instruct LaTeX to run
% the following code after the current page has been finalized.
\AddToHookNext{shipout/after}{%
% Set the following page to be rotated by 90 degrees.
\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}%
% Also, once this page is finalized (recalling that this is already
% being called for the float's page), set the PDF attributes such that
% the next pages are upright again.
\AddToHookNext{shipout/after}{%
\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 0}%
}%
}%
}
나는 이것이 얼마나 강력해 보이는지(LaTeX의 의미가 아닌 일상적인 의미에서) 놀랐습니다. 내 문서에서는 전혀 깨지지 않았습니다. 중요한 것은 table*
별표가 기본 과 함께 사용된다는 것 입니다. 그렇지 않으면 수정되지 않은 경우에도 revtex4
float의 위치 지정이 완전히 깨집니다.
일반적인 주의 사항: 나는 결코 LaTeX 전문가가 아닙니다. (나는 TeX 책을 읽은 적이 없습니다. 그것이 암시라면) 이 중 많은 부분이 시행착오에서 비롯됩니다. TeX에 대해 더 깊이 이해하고 있는 사람이 내 추론의 실수를 바로잡을 수 있기를 바랍니다.
명확성을 위해 실제로 이 코드를 사용하는 방법은 다음과 같습니다.
\documentclass{revtex4-2}
\usepackage{graphicx} % Necessary to use turnpage!
\appdef \turnpage {%
% When we're declaring our turnpage float, instruct LaTeX to run
% the following code after the current page has been finalized.
\AddToHookNext{shipout/after}{%
% Set the following page to be rotated by 90 degrees.
\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 90}%
% Also, once this page is finalized (recalling that this is already
% being called for the float's page), set the PDF attributes such that
% the next pages are upright again.
\AddToHookNext{shipout/after}{%
\global\pdfpageattr\expandafter{\the\pdfpageattr/Rotate 0}%
}%
}%
}
\begin{document}
Start of the document...
\begin{turnpage}
\begin{table*}
\caption{Caption of this table.}
The contents of the table would go here.
\end{table*}
\end{turnpage}
...rest of the document
\end{document}
이것을 테스트하는 동안 환경이 있는 페이지가 문서 turnpage
의 유일한 페이지 shipout/before
인 경우 깨지는 것을 발견했습니다. . 하지만 다른 콘텐츠가 있는 한 잘 작동하는 것 같습니다.shipout/after
\appdef
* 솔직히 말해서 귀하의 질문은 제게는 아주 명확해 보입니다. 혼란의 원인이 무엇인지 잘 모르겠습니다.
** 제가 생각할 수 있는 한 가지 극단적인 경우는 sideways
플로트가 완벽하게 배치되어 a가 \pagebreak
이미 자연스럽게 발생했기 때문에 페이지가~ 후에대신 회전 sideways
됩니다. 실제로 이런 일이 일어날 수 있는지는 확실하지 않습니다. \pagebreak
부동 소수점 바로 앞에 를 삽입하여 테스트하면 여전히 좋은 결과가 나옵니다. 하지만 특정 사례를 처리하기 위해 제공한 코드를 수정하는 것은 쉬울 것입니다. 발생합니다.