So drehen Sie PDFLscape-Querformatseiten beim N-Upping automatisch

So drehen Sie PDFLscape-Querformatseiten beim N-Upping automatisch

Ich verwende pdflscapefür meine Querformatseiten ein A5-Hochformatdokument. Anschließend verwende ich die folgende Befehlszeile, um das PDF für den Ausdruck auf A4-Papier vorzubereiten:

pdftk blank.pdf document.pdf output padded_document.pdf verbose && pdfnup --paper a4paper padded_document.pdf

Im resultierenden Format padded_document-nup.pdfsind jedoch alle Querformatseiten noch immer im Querformat, was einem A6-Format entspricht, anstatt sie gedreht und im A5-Format zu haben.

Gibt es eine Möglichkeit, sie automatisch zu drehen, damit sie in der gewünschten Größe erscheinen? Ich weiß, ich könnte sie pdflscapedurch ersetzen lscape, aber das vergesse ich ständig und es wäre schön, eine Lösung zu haben, bei der ich mein Dokument nicht jedes Mal ändern muss, wenn ich es drucken möchte. Also entweder ein cleverer Trick im PDF oder etwas, das ich in meine Befehlszeile einfügen kann.

\documentclass[a5paper]{article}
\usepackage{mwe}
\usepackage{pdflscape}
\begin{document}
\blindtext\blindtext
\begin{landscape}
\thispagestyle{empty}
\begin{figure}
\includegraphics[width=\linewidth]{example-image-a}
\caption{Landscape figure}
\end{figure}
\end{landscape}
\blindtext\blindtext

\blindtext\blindtext
\end{document}

Das sieht im 4-up-Format mit Seitenrändern (nicht im gewünschten 2-up-Format ohne Ränder, aber Sie verstehen, was ich meine) folgendermaßen aus:

3 Hochformat, 1 Querformat

Was essollensieht so aus:

4 Porträt Ich habe das Letzte vorgetäuscht, indem ich einfach lscapeanstelle von verwendet habe pdflscape.

Antwort1

pdfnupverwendet pdfjam, welches wiederum das LaTeX-Paket verwendet pdfpages. Letzteres kennt die Option rotateoversize, aus demDokumentation:

Mit dieser Option können übergroße Seiten gedreht werden. Seiten im Querformat sind beispielsweise im Vergleich zu ihren Hochformat-Gegenstücken übergroß, da sie ohne Drehung nicht in die Kontur einer Hochformatseite passen. Standardmäßig werden übergroße Seiten skaliert und nicht gedreht. Entweder trueoder false(oder kein Wert, was äquivalent zu ist true). (Standard: rotateoversize=false)

Diese Option kann in der Befehlszeile für pdfnupoder angegeben werden pdfjam:

$ pdfnup --paper a4paper --rotateoversize true test.pdf

Seite 1 Seite 2

Antwort2

Willst du so etwas?

2xA5 auf A4

\documentclass[a5paper]{article}
\usepackage{mwe}
\usepackage{pdflscape}
\usepackage{pgfpages}
\pgfpagesdeclarelayout{my 2up}
{
  \def\pgfpageoptionborder{0pt}
}
{
  \pgfpagesphysicalpageoptions
  {%
    logical pages=2,%
    physical height=\paperwidth,%
    physical width=\paperheight,%
  }
  \pgfpageslogicalpageoptions{1}
  {%
    resized width=.5\pgfphysicalwidth,%
    resized height=\pgfphysicalheight,%
    center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}%
  }%
  \pgfpageslogicalpageoptions{2}
  {%
    resized width=.5\pgfphysicalwidth,%
    resized height=\pgfphysicalheight,%
    center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}%
  }%
}
\pgfpagesuselayout{my 2up}[a4paper]
\begin{document}
  \blindtext\blindtext
  \begin{landscape}
    \thispagestyle{empty}
    \begin{figure}
      \includegraphics[width=\linewidth]{example-image-a}
      \caption{Landscape figure}
    \end{figure}
  \end{landscape}
  \blindtext\blindtext

  \blindtext\blindtext
\end{document}

Antwort3

Ich hoffe, dass dies nützlicher ist als das andere. Sie können A4 oder A5 (eine eindeutige Größe für die Eingabedatei), Quer- oder Hochformat (eine Ausrichtung für die Eingabedatei) in eine Datei im A4-Format konvertieren, die aus zwei zusammengefügten und querformatigen A5-Seiten pro Seite besteht.

#!/bin/bash

IFS='
'

FILE_EXT=$(echo "$1" | cut -f2 -d '.')

# Vérifier si fichier pdf
if [ "$FILE_EXT" != pdf ]
then
echo "Attention, le fichier $1 n'est pas un fichier .pdf"
exit
fi

FILE_NAME=$(echo "$1" | cut -f1 -d '.')

# Détecter la présence du fichier en .pdf
if [ ! -e "./$FILE_NAME.pdf" ]
then
echo "Attention, le fichier $FILE_NAME.pdf n'existe pas"
exit
fi

X=$(pdfinfo $FILE_NAME.pdf | grep 'Page rot:' | cut -d":" -f2)

if [ $X -eq 0 ] || [ $X -eq 180 ] ;
    then echo "portrait"
    pdftk $FILE_NAME.pdf cat 1-endright output sortie-0.pdf
    else echo "landscape"
    cp $FILE_NAME.pdf sortie-0.pdf
fi

echo '\documentclass[a4paper]{article}' > sortie-1.tex
echo '\usepackage{pdfpages}' >> sortie-1.tex
echo '\begin{document}' >> sortie-1.tex
echo "\includepdf[pages=-,nup=1x2]{sortie-0.pdf}" >> sortie-1.tex
echo '\end{document}' >> sortie-1.tex

pdflatex sortie-1.tex 

mv sortie-1.pdf "${FILE_NAME}-Sortie.pdf"
rm sortie-*

Antwort4

Wenn es mit lscapedem Drucken funktioniert, warum verwenden Sie dann nicht ein solches Skript für die Druckversion:

#!/bin/bash

IFS='
'

cat $1 | sed "s/pdflscape/lscape/g" > Sortie-0.tex
pdflatex Sortie-0.tex
pdfnup --paper a4paper Sortie-0.pdf -o Sortie-1.pdf
rm Sortie-0*

verwandte Informationen