• 崔永元骚扰范冰冰,怎么成了举报偷税漏税?他自己也不得不承认是在嫉妒之心嘛!(原创首发) 2020-01-17
  • 西部网(陕西新闻网)www.cnwest.com 2020-01-17
  • 统计局:一线城市房价同比持续下降 31个二线城市房价上涨 ——凤凰网房产重庆 2019-12-27
  • 官宣!女排四大功勋球员同时退役 没有两大前国手 2019-12-27
  • 徕卡M10限量版外观曝光-热门标签-华商网数码 2019-12-20
  • 70期:开创了中国人太空“开飞船”历史的刘旺 2019-12-03
  • 经济数字包括成本,经济数字好看,但其效益如何会是经济收入增加没有经济效益,那是成本增加比经济收入增加还多。 2019-11-30
  • 中方有力回击!美国多个行业喊痛:“加征关税就是对美国消费者征税” 2019-11-30
  • Le calendrier deux sessions de Xi Jinping 2019-11-28
  • 北京市房山区区长陈清拟任区委书记 2019-11-23
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-11-23
  • 多座跨江跨海大桥相继建成 粤港澳大湾区城市群将形成一小时经济圈 2019-11-16
  • 光明日报:不存在的补脑保健品,为何总有人趋之若鹜 2019-11-13
  • [微笑]科普:房屋价值的构成中,土地及建安成本只占很小的一部分,真正值钱的是位置,因为位置决定了关联资源的多寡! 2019-11-01
  • 乡贤们,台州发“英雄帖”了 2019-11-01
  • 山歌生肖诗:LaTeX技巧 943:LaTeX 插图时对文件扩展名的处理

    最老版特码诗 www.kdltu.tw 这是一篇简单的记录,缘起与有人在 XeLaTeX 中插入 .png 格式的图片,但提示 no boundingbox。这与我的认知不同:这一错误通常只在 LaTeX 方式编译时才会出现,而且加上 bmpsize 宏包结合 xDVIPDFMx 驱动就能解决。但这次问题出现在 XeLaTeX 下,我感到很奇怪,也引起了我的兴趣。

    MWE

    最小工作示例如下:

    % compile with XeLaTeX
    \documentclass{article}
    \usepackage{graphicx}
    \begin{document}
      \includegraphics{foo.bar.png}   % reports error (no boundingbox)
    \end{document}

    报错如下:

    ! LaTeX Error: Cannot determine size of graphic in foo.bar.png (no BoundingBox)
    .
    
    See the LaTeX manual or LaTeX Companion for explanation.
    Type  H <return>  for immediate help.
     ...
    
    l.5   \includegraphics{foo.bar.png}
                                          % reports error (no boundingbox)
    ?

    分析

    如前所述,这就很奇怪了。我第一反应是图片本身有什么问题。但多方检查都没发现有什么问题??悸堑酵拇朐?pdfLaTeX 下编译理应也能通过并顺利输出,故执行命令 pdflatex test.tex,并观察现象。

    ! LaTeX Error: Unknown graphics extension: .bar.png.
    
    See the LaTeX manual or LaTeX Companion for explanation.
    Type  H <return>  for immediate help.
     ...
    
    l.5   \includegraphics{foo.bar.png}
                                          % reports error (no boundingbox)
    ?

    出乎意料,本该顺利通过的代码,在 pdfLaTeX 下也报错了。不过,这次报错的问题和使用 XeLaTeX 时还不太一样。pdfLaTeX 提示说不认识名为 .bar.png 的图片扩展名。

    这给了我新的提示。显然 pdfLaTeX 在处理图片时,以第一个 . 作为分割,之后的部分都是扩展名;而后根据图片文件的扩展名去处理。推测 XeLaTeX 也会做类似的操作,只是细节上有所不同,XeLaTeX 没有在遇见 .bar.png 这个扩展名的第一时间报错,而是延迟到了计算边界框尺寸时发现没有匹配该扩展名(.bar.png)时才报错。如果确实如此,那么在 graphicx.sty 当中应该有所体现。追溯到 graphicx.sty 依赖的 graphics.sty当中:

    \def\[email protected]#1{%
      \begingroup
      \let\[email protected]\[email protected]
      \[email protected]{#1}%
      \ifx\[email protected]\relax
    % ...

    显然,\[email protected] 是在解析图片文件的文件名。这是一个定义在 LaTeX2e 中的底层命令,根据其文档,它会将解析结果保存在 \[email protected], \[email protected], \[email protected] 三个宏当中。在 \[email protected] 的定义中,解析扩展名是通过利用 TeX 的宏定义式的技巧来实现的:

    \def\[email protected]#1.#2

    在调用 \[email protected] 时,会将遇到的第一个 . 之前的内容当做 #1 而把 . 之后的内容当做 #2。这个 #2 最后被保存在了 \[email protected] 当中,作为文件扩展名。

    解决办法

    了解了问题的根源,解决起来就容易了。

    最简单的绕过办法,是保持图片文件的文件名当中只有一个句点,用于区分文件名及其扩展名。这样 TeX 就不会被误导了。例如,将 MWE 中的文件名从 foo.bar.png 改为 foo_bar.png,再尝试于 LaTeX 当中插入。

    如果不想修改文件名,那么可以利用 TeX 的分组,将真实的文件名包裹在一对分组花括号当中。也就是写成形如这样的代码 {foo.bar}.png。这样,在 \[email protected] 处理参数的过程中,由于 foo.bar 被放在一个分组当中,整个被当成是一个 token,因而不会被打散,也因而能解析到正确的扩展名 png。

    选自:https://liam.page/2019/01/27/keep-single-dot-in-image-filename-for-LaTeX/ 

    分享到:
    未经允许不得转载:LaTeX技巧 943:LaTeX 插图时对文件扩展名的处理
    已有 条意见

      最新文章

      加载中...
        本站提供专业LaTeX排版、咨询、定制服务,请点击下图咨询详情


        全国首个精品的LaTeX视频教程,大牛带着你入门,让LaTeX学习不再纠结,请点击下图咨询详情

        热门评论

          联系我们

          交流QQ群:91940767
          本站QQ号:343083553
          邮箱联系[email protected]
          淘宝店铺https://shop240512713.taobao.com/ 提供排版,模板定制,培训,图片处理,视频教程等LaTeX服务。

          关注我们微信公众号

          如果您投稿或者希望加入我们团队,请发送您的简历到[email protected]。
        • 崔永元骚扰范冰冰,怎么成了举报偷税漏税?他自己也不得不承认是在嫉妒之心嘛!(原创首发) 2020-01-17
        • 西部网(陕西新闻网)www.cnwest.com 2020-01-17
        • 统计局:一线城市房价同比持续下降 31个二线城市房价上涨 ——凤凰网房产重庆 2019-12-27
        • 官宣!女排四大功勋球员同时退役 没有两大前国手 2019-12-27
        • 徕卡M10限量版外观曝光-热门标签-华商网数码 2019-12-20
        • 70期:开创了中国人太空“开飞船”历史的刘旺 2019-12-03
        • 经济数字包括成本,经济数字好看,但其效益如何会是经济收入增加没有经济效益,那是成本增加比经济收入增加还多。 2019-11-30
        • 中方有力回击!美国多个行业喊痛:“加征关税就是对美国消费者征税” 2019-11-30
        • Le calendrier deux sessions de Xi Jinping 2019-11-28
        • 北京市房山区区长陈清拟任区委书记 2019-11-23
        • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-11-23
        • 多座跨江跨海大桥相继建成 粤港澳大湾区城市群将形成一小时经济圈 2019-11-16
        • 光明日报:不存在的补脑保健品,为何总有人趋之若鹜 2019-11-13
        • [微笑]科普:房屋价值的构成中,土地及建安成本只占很小的一部分,真正值钱的是位置,因为位置决定了关联资源的多寡! 2019-11-01
        • 乡贤们,台州发“英雄帖”了 2019-11-01
        • 英超积分榜新浪 太原跑专车赚钱吗 查河南22选5开奖结果 零点棋牌游戏大厅 最准香港赛马会总公司 四川时时彩爱彩乐 安徽11选5 五星彩票游戏 梦幻家具制造赚钱 快乐十分开奖