使用 Ghostscript

使用 Ghostscript

我所要求的可能超出了我的能力范围,但我试图将文档打印在 74 页 A5 纸上,而不是 74 页 A4 纸上。我已设法将纸张尺寸更改为 A5,但它打印在 146 页上,因为字体仍为原始大小!

我不知道如何将所有字体“缩放” 0.5(IE使每个字符的每个实例都变成其原始大小的 50%。我发现一些线索表明添加[scaled=0.5]到字体包是一种解决方案,但它不适用于我试图更改的文档。将 from 更改\documentclass10pt没有5pt任何作用(也许不会 - 我一无所知)

标题如下,希望可以全部发布。

我可以遵循简单的指示,但这是我第一次接触这个世界!

\documentclass[10pt,a5paper,twoside]{article}

\usepackage[latin1]{inputenc}
\usepackage[german,english]{babel}
\usepackage[textwidth=11.3cm,textheight=18.0cm,includehead]{geometry}
\usepackage{multicol}
\usepackage{ifthen}




\newboolean{germanorder}
\setboolean{germanorder}{false}

\newboolean{usepdflinks}
\setboolean{usepdflinks}{true}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[RO,LE]{\textbf\thepage}
\fancyhead[RE]{\textbf{\nouppercase{\leftmark}}}
\fancyhead[LO]{\textbf{\nouppercase{\rightmark}}}
\renewcommand{\sectionmark}[1]{\markboth{test}{\thesection.\ #1}}

\fancypagestyle{plain}{
    \fancyhf{}
    \fancyfoot[R]{\textbf{\thepage}}
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}
}

\ifthenelse{\boolean{usepdflinks}}
{\usepackage[pdftex,pdfborder={0 0 0}]{hyperref}}
{
    \newcommand{\hyperlink}[2]{#2}
    \newcommand{\hypertarget}[2]{#2}
}

\newcommand{\comment}[1]{}   % Remove comments
\newcommand{\explanation}[1]{}   % Remove comments
\newcommand{\cardtext}[2][]{#2}
\newcommand{\apx}[2][]{#2}
\newcommand{\ruling}[2][]{#2}
\newcommand{\notenglish}[1]{#1$^\dagger$}
\newcommand{\changed}[2][]{#2}
\newcommand{\MOOR}{\textsc{MOOR}}

\newcommand{\de}[1]{(\textsl{\foreignlanguage{german}{#1}})}
\newcommand{\numberref}[1]{\textbf{\small #1}}
\newcommand{\cardref}[3]{\hyperlink{#3}{#1 %
\ifthenelse{\boolean{germanorder}}{\de{#2}}{\numberref{#3}}}}

%\newcommand{\card}[5]{\hypertarget{#3}{}%
%\ifthenelse{\boolean{germanorder}}{%   German and other languages
%\noindent\textbf{\textsl{#2}}\hfill\numberref{#3}\nopagebreak

%\noindent\textbf{#1}\hfill{\tiny#4}}{% English
%\noindent\textbf{#1}\hfill{\tiny#4\hspace{0.5em}}\numberref{#3}}%
%\nopagebreak

%\noindent#5\vspace{0.3\baselineskip} }

\newcommand{\card}[5]{\hypertarget{#3}{}%
\noindent\parbox[b]{5.24cm}{\noindent\textbf{#1}\\[-1ex]{\tiny#4}}%
\hfill{\hfill\raisebox{4pt}{\textbf{\Large #3}}}%
\nopagebreak

\noindent#5\vspace{0.5\baselineskip} }

\newcommand{\action}[3]{\noindent\hypertarget{#2}{\textbf{#1}}\hfill%
\nopagebreak

\noindent#3\vspace{0.3\baselineskip}}

\newcommand{\actionref}[2]{\hyperlink{#2}{``#1''}}

\newlength{\guessheight}
\settoheight{\guessheight}{I}
\newlength{\guessdepth}
\settodepth{\guessdepth}{g}
\addtolength{\guessheight}{0.6\guessdepth}
\addtolength{\guessdepth}{0.2\guessdepth}
\newlength{\guesswidth}
\settowidth{\guesswidth}{I}

\newcommand{\ecp}[2][]{\makebox[2pt][l]{\rule{\fboxrule}{\guessheight}\rule[\guessheight]{\guesswidth}{\fboxrule}}#2\makebox[2pt][r]{\rule[-\guessdepth]{\guesswidth}{\fboxrule}\rule[-\guessdepth]{\fboxrule}{\guessheight}}}

\newcommand{\english}[1]{%
\ifthenelse{\boolean{germanorder}}{}{\item \textsl{#1}}
}

\newenvironment{explanationlist}{\small\begin{list}{$\Rightarrow$}{\setlength{\topsep}{0pt}\setlength{\itemsep}{0pt}}}{\end{list}}

\newcommand{\sectionline}{\begin{center}\rule{4cm}{0.2mm}\end{center}}

\addtolength{\columnsep}{1mm}


\begin{document}

答案1

也许您可以使用该pdfpages包来执行此操作。创建一个.tex包含以下内容的新文件:

\documentclass[a5paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{originalfile}
\end{document}

您的原始 A4 文档在哪里originalfile.pdf?编译此文档pdflatex,您将获得原始文档的 A5 版本。

(回复评论:)使用环境,filecontents您可以将上述代码保存在与主文件相同的文件中,并且arara可以自动执行编译。代码示例:

% arara: pdflatex
% arara: pdflatex: { files: [a5version.tex]}
% arara: clean: { files: [a5version.tex, a5version.aux,a5version.log]}

\documentclass[a4paper]{article}
\usepackage{kantlipsum} % for dummy text

% create the file for a5 version
\usepackage{filecontents}
\begin{filecontents}{a5version.tex}
\documentclass[a5paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{originalfile} % insert filename of main file here
\end{document}
\end{filecontents}

\begin{document}
\kant
\end{document}

答案2

一个更简单的解决方案是pgfpages(部分pgf包裹)。

您只需使用以下设置,您的文档就会调整为 A5 纸张大小。

\pgfpagesuselayout{resize to}[a5paper]

平均能量损失

\documentclass[a4paper]{article}

\usepackage{pgfpages}
\pgfpagesuselayout{resize to}[a5paper]

\usepackage{blindtext} % just for the example

\begin{document}

\blinddocument % just for the example

\end{document} 

输出(A5 格式)

enter image description here

答案3

使用 Ghostscript

这是一个小脚本,它可以将您的 PDF 重新缩放为任何纸张格式。该脚本使用第一个参数作为 -file 的输入.pdf,第二个参数是所需的纸张格式。它将输出写入同名文件,并将新的纸张格式附加到名称中。

请记住,缩放仅适用于 DIN A� 格式,因为无论尺寸如何,它们的长边/短边比都是√2。

用 运行bash

#!/bin/sh

# Usage: First argument is PDF file
#        Second argument is paper format (e.g. a4)

gs -q -dNOPAUSE -dBATCH \
    -sDEVICE=pdfwrite \
    -sPAPERSIZE=$3 \
    -dFIXEDMEDIA \
    -dPDFFitPage \
    -sOutputFile="${1%%.*}-$2.pdf" \
    "$1"
echo "Output written to ${1%%.*}-$2.pdf"
exit 0

相关内容