LaTeX 板


LINE

includegraphics 与 adjustbox 搭配虽然好用 但是就 adjustbox 中裁切的功能来说, 左侧边界及上方边界虽然一望便知 右侧边界及下方边界还要计算就比较麻烦了 如果像是用 foxit reader, 得先确定该 pdf 档的页面大小, 再减去图片 的右界/下界, 才能得到应裁切的量 当资料量一多的时候, 时常计算是蛮繁琐的 上面的问题可以用 LaTeX 中简易的巨集计算功能加以解决 即引入 fp 套件 不过问题又来了, LaTeX 当中的巨集定义最多只能提供9个变数 但是我们的计算里必须有很多资讯加以考虑: 例如: 欲引入 pdf 页面的页数, 长宽, 档名 (4个变数) 左 下 右 上 四个边界 (4个变数) 引入的图片是否需放大或缩小? 是否需旋转? (2 个变数) 是否要给予标题/label (2个变数) ... 因此, 单纯的 LaTeX 巨集很难处理这些问题 况且 #1 ~ #9 的巨集变数也不容易除错修改 比较好的办法应该是使用 xkeyval 这个套件 xkeyval 套件的中文文件很少, 大部份是英文的 而且给的范例也不好懂 以 C 语言来比喻, 这些范例不是从 Hello World 开始 , 反而像是在谈指标, 谈字串 ~~~ 晕倒 最简单的 xkeyval 使用方式应该像这样: \makeatletter % 开始 \define@key{family}{keya}{\def\mykeya{#1}} \newcommand{\printmykey}[1]{ \setkeys{family}{#1} this is \mykeya } \makeatother % 结束 \define@key{}{}{} => 第1个{}内是 family, 即其後定义的 keya 属於 family 这个群组 第3个 {} 内是命令, 意即取得 keya 这个 key 後要做的事 在范例中, 敝人是通过取得使用者输入的 keya 值, 设定一变数 \mykeya 以便在之後使用 \mykeya 如果使用者没有提供该 key, 也要有 presetkeys 的功能可提供预设值 以下是敝人的 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} \XeTeXlinebreaklocale "zh" \XeTeXlinebreakskip=0pt plus 1pt \usepackage{fp} \usepackage{xkeyval} \usepackage{adjustbox} \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=0.5\textwidth, scewidth=\sourcepdfwidth, sceheight=\sourcepdfheight}{} \newcommand{\getsourcepdfparameter}[1]{ \setkeys{pdfmanage}{#1} } \makeatother %结束 \newcommand{\myincludepdfgraphics}[1]{ \getsourcepdfparameter{#1} %底下使用 fp 套件计算右边界及下方边界应裁的量 \FPeval\truerightmargin{\mysourcewidth-\myrightmargin} \FPeval\truedownmargin{\mysourceheight-\mydownmargin} \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,newwidth=5} %测试范例 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} --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.63.211.145
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LaTeX/M.1421846145.A.877.html
1F:推 andrew43: 好文! 01/21 21:47
2F:→ bleph: 谢谢您的谬赞 01/22 12:49
※ 编辑: bleph (210.63.211.145), 01/22/2015 12:55:19 ※ 编辑: bleph (210.63.211.145), 01/22/2015 13:01:27







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP