revtex 및 Turnpage: PDF 페이지 보기를 가로 방향으로 90도 회전합니다.

revtex 및 Turnpage: PDF 페이지 보기를 가로 방향으로 90도 회전합니다.

다음 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-14-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환경이 너무 특별한 작업을 수행하는 것이 아니라 페이지 크기만큼 부동 소수점을 설정하고 부동 소수점의 내용을 회전하는 일부 코드를 추가한다는 것을 알게 되었습니다. (여기서는 초 source2eP1입니다.)

이 플로트가 항상 다음 페이지로 푸시된다고 가정하면(이게 얼마나 큰 가정인지는 잘 모르겠지만 실제로는 효과가 있습니다**), 다음과 같은 경우 이 플로트를 가로 방향으로 표시할 수 있습니다. \pdfpageattr다음 페이지 시작 부분에서 올바르게 설정한 다음 다음 페이지 시작 부분에서 PDF 방향을 재설정합니다.

나는 배송 후크(즉 lthooks-docltshipout-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*별표가 기본 과 함께 사용된다는 것 입니다. 그렇지 않으면 수정되지 않은 경우에도 revtex4float의 위치 지정이 완전히 깨집니다.

일반적인 주의 사항: 나는 결코 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부동 소수점 바로 앞에 를 삽입하여 테스트하면 여전히 좋은 결과가 나옵니다. 하지만 특정 사례를 처리하기 위해 제공한 코드를 수정하는 것은 쉬울 것입니다. 발생합니다.

관련 정보