【问题标题】:Rmarkdown Image Skips Ahead of TextRmarkdown 图像在文本之前跳过
【发布时间】:2016-03-12 18:45:19
【问题描述】:

我正在整理一个具有以下 YAML 设置的 Rmarkdown PDF 文档:

---
output: 
  pdf_document:
    fig_caption: true 
    fig_crop: true
    toc_depth: 3
  header-includes:
  - \usepackage{hyperref}
 ---

在文档正文中,我使用以下语法插入了一些 PNG 图像

Paragraph 1..........

![Caption](path/image.png)

Paragraph 2....

当呈现文档时,图像会按预期显示在文本中,介于Paragraph 1Paragraph 2 之间。但是,我得到了一些不可预知的结果,在某些情况下,渲染图像出现在Paragraph 2 之后,我无法解决它。

【问题讨论】:

    标签: r latex knitr r-markdown


    【解决方案1】:

    我也遇到了同样的问题。如果您将图像包装在“段落”标签中,则图像将与文本对齐。

    Paragraph 1...
    
    <p>
    ![](image.png)
    </p>
    
    Paragraph 2...
    

    【讨论】:

    • 它确实适用于 PDF。我正在编织 pdf,添加 &lt;p&gt; 标签后得到了正确的结果。
    • 嗯...好吧,也许 pandoc 中正在发生一些奇怪的事情。但是

      是 HTML,而不是 TeX,所以这是一个非常奇怪的 hack。

    【解决方案2】:

    在处理类似问题时,我使用了\FloatBarrier(来自placeins 包)来控制定位。我不是最有经验的knitrrmarkdownLaTeX 用户,但我之前已经成功了。

    基本上,图像“浮动”;您可以通过插入屏障来控制不能飘过的东西。该描述很粗略,但您可能会发现该技术有效。

    【讨论】:

    • \FloatBarrier 限制浮动是正确的,但我认为这不是 OP 正在寻找的。他希望这个数字根本不会浮动。不幸的是,在编写 RMD 时这是不可能的,请参阅 this answer by Yihui。此外,您应该添加 \FloatBarrier 需要 placeins 包。
    • @user2706569,所以,至少按照我设想的解决方案的方式,我所问的是不可能的?
    • 嗯,你可以在图片后面使用\FloatBarrier,这样可以防止人物出现在障碍物之后。但是,“干净的 LaTeX”解决方案是使用 H 包中的 H 位置。但是 this 在编写 markdown 时是不可能的。为什么要输出PDF时要写markdown?引用 Yihu(上面的链接):“如果您选择 Markdown 是因为它的简单性,那么即使使用像 pandoc 这样强大的工具,您也不应该期望它有太多的功能。底线:Markdown 不是 LaTeX。它是为 HTML 而不是 LaTeX 设计的。”
    • 您使用它是因为您正在编写 R 代码,并且想要创建一个动态报告。正确的?就像我在回答中所说的那样,我不是这些事情的专家;我只是碰巧为自己解决了一个类似的问题。在我看来,“你为什么不直接用 LaTeX 写呢?”是一个相当强烈的要求。请注意您所问的“为什么在需要 pdf 时使用降价”之间的区别?以及@YiHui 的建议“不要期望太多”。这种差异是巨大的,也是关键的。
    • @user2706569 见上文(抱歉重复评论)
    【解决方案3】:

    \newline 似乎有效。

    R的历史与概况

    ![R programming](Images/R.PNG)\newline

    【讨论】:

      【解决方案4】:

      &amp;nbsp; 将插入垂直空格

      要保留您的图形标题,请确保 ![] 仍位于 Rmarkdown 文档中的单独段落中(由上下空行分隔)

      ### Heading 1 ![This is my figure caption](`r fig_var`){width=400px} 
      
      &nbsp;
      
      ### Heading 2
      

      其中fig_var 是一个 r 变量,其中包含图形图像的完整路径

      【讨论】:

        【解决方案5】:

        一种选择是添加

        \newpage
        

        以与浮动屏障类似的方式运行。它不是很优雅,但似乎很有效。

        为了更清楚,请考虑上面的示例:

        Paragraph 1..........
        
        ![Caption](path/image.png)
        
        Paragraph 2....
        

        为避免图像移动到第二段前面,您可以执行以下操作:

        Paragraph 1..........
        
        ![Caption](path/image.png)
        
        \newpage
        
        Paragraph 2....
        

        【讨论】:

        • 您能否通过问题中提供的代码示例提供如何使用newpage 的示例?
        【解决方案6】:

        这个问题没有正确答案。

        1. 尝试添加 fig.show='hold' 以将图片保留在应有的位置
        2. 可能会跳过段落,因为 Latex 会尝试以最小的空间填充文本/图像。

        我使用 (1) 解决了我的问题并“使用” (2),您可以使用 \pagebreak 根据第 1 段和第 2 段之前和之后的内容,放在适当的位置。

        这只能在看到 pdf 结果后通过将相关图像更好地拟合到可能的下一页(更多空间)中来完成。当然,这也意味着在其他地方添加分页符(例如在 p1、p2 或图像中的任何一个之前或之后)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-25
          • 1970-01-01
          相关资源
          最近更新 更多