Re: [心得] 裁切 pdf 的页面(添加宏功能)

楼主: bleph (bleph)   2015-01-25 20:29:06
※ 引述《ChenMeng0518 (LSiYue)》之铭言:
: 好文!思路很有意思,可以考虑整理成套件,发布到 CTAN。
: 说两个问题。
: pdfcrop 这个程式可以用来自动裁剪 PDF 格式图档的白边。
: xeCJK 套件已经对中文断行做了处理,因此不需要再使用
: \XeTeX 的两个 primitives 来控制断行。
谢谢您宝贵的意见
小弟初学, 平日使用 LaTeX 的机会也不多,
主要是因为有一些电子书要整理成自己的笔记
(跟最初 Knuth 大师用 TeX 来排版自己的数学式子大相迳庭)
发觉 LaTeX 有裁切的功能很实用
班门弄斧, 贻笑方家
以下是针对弟的前文再加修改的 tex 档,
修改处是添加了裁切后的图片宽度大小默认的功能
与原本的档案不同之处会以标示显示
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{fixltx2e}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{soul}
\usepackage{textcomp}
\usepackage{marvosym}
\usepackage{wasysym}
\usepackage{latexsym}
\usepackage{amssymb}
\usepackage{hyperref}
\tolerance=1000
\usepackage{fontspec}
\usepackage[boldfont,slantfont]{xeCJK}
\setCJKmainfont{cwTeX Q Ming Medium}
\usepackage{fp}
\usepackage{xkeyval}
\usepackage{adjustbox}
\usepackage{ifthen} %新加入的 package, 要在后面使用
\providecommand{\alert}[1]{\textbf{#1}}
%先对 pdf 纸张大小设定默认值为 A4 paper
\def\sourcepdfwidth{21.4}
\def\sourcepdfheight{29.7}
\makeatletter %开始
\define@key{pdfmanage}{lt}{\def\myleftmargin{#1}} %左边界,也是左侧应裁切的量
\define@key{pdfmanage}{rt}{\def\myrightmargin{#1}} %右边界
\define@key{pdfmanage}{up}{\def\myuppermargin{#1}} %上方边界, 也是应裁的量
\define@key{pdfmanage}{dn}{\def\mydownmargin{#1}} %下方边界
\define@key{pdfmanage}{angle}{\def\myangle{#1}} %旋转角度
\define@key{pdfmanage}{page}{\def\mypage{#1}} %页数
\define@key{pdfmanage}{newwidth}{\def\mynewwidth{#1}} %裁割后的图片新的宽度
\define@key{pdfmanage}{scewidth}{\def\mysourcewidth{#1}} %pdf 页面宽度
\define@key{pdfmanage}{sceheight}{\def\mysourceheight{#1}} %pdf 页面高度
\define@key{pdfmanage}{source}{\def\mysourcefilename{#1}} %pdf 档名
%底下提供默认值
\presetkeys{pdfmanage}{lt=0,rt=0,up=0,dn=0,angle=0,page=1,
newwidth=-10, scewidth=\sourcepdfwidth,
sceheight=\sourcepdfheight}{}
% 这边若使用者未输入图片裁切后新的宽度, 则默认为 -10, 后面会重新计算
\newcommand{\getsourcepdfparameter}[1]{
\setkeys{pdfmanage}{#1}
}
\makeatother %结束
\newcommand{\myincludepdfgraphics}[1]{
\getsourcepdfparameter{#1}
%底下使用 fp 套件计算右边界及下方边界应裁的量
\FPeval\truerightmargin{\mysourcewidth-\myrightmargin}
\FPeval\truedownmargin{\mysourceheight-\mydownmargin}
% ifthen套件的作用在此
% 如使用者未输入新的图片宽度,则默认为 -10, 我们
% 再用右边界减去左边界,以之作为图片宽度(即图片宽度不变)
% 这样又可以少计算一项数据
\ifthenelse{\equal{\mynewwidth}{-10}}
{\FPeval\mynewwidth{\myrightmargin-\myleftmargin}{}}
\resizebox{\mynewwidth cm}{!}{ %请注意 \mynewwidth 与其后的"公分"
%有一空白键隔开
\adjustbox{trim=\myleftmargin cm \truedownmargin cm \truerightmargin cm
\myuppermargin cm,clip}{%
\includegraphics[angle=\myangle,page=\mypage]{\mysourcefilename}}}
}
\begin{document}
%测试范例 1
\myincludepdfgraphics{page=5,scewidth=21,source=4756.pdf,
sceheight=27.94,lt=1.7,dn=11.6,up=2.3,rt=11.5} % 试着不 key 入新图片宽度
%测试范例 2 , 也可以使用 figure 环境
\begin{figure}{
\myincludepdfgraphics{page=3,scewidth=21,source=4756.pdf,
sceheight=27.94,lt=1.4,dn=14.4,up=2.3,rt=7.1,newwidth=3.5}
\caption{第二张图} \label{fig2}
}
\end{figure}
\end{document}
作者: ChenMeng0518 (LSiYue)   2015-01-26 21:25:00
都说了不需要使用 \XeTeX 两个元命令来控制断行啦…
楼主: bleph (bleph)   2015-01-27 10:05:00
已修正 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com