在 markdown 块中格式化表格:如何使用“渲染器”?

在 markdown 块中格式化表格:如何使用“渲染器”?

正如你所见,这类似于那个问题。不过我觉得我的问题还没解决所以就打开这个。

我在我的文档中使用了markdown这个包LaTeX,效果很好。但是我发现在添加标题后,我的表格总是浮动到页面顶部,就像这样;

测试1

所以我必须禁用浮动属性。我找到了该markdown.sty文件:

麦粒肿

然后找到table标签并放在[htbp]其后面。然后就成功了!

测试2

现在我知道问题出在哪里了。但这确实不是一个好的解决方案。然后我读了用户手册并找到Table Renderer设置。它显示:

2.3.1.21 表格渲染器

\markdownRendererTable 宏代表一个表格。仅当启用 pipeTables 选项时才会生成此宏。该宏接收参数 {⟨caption⟩}{⟨number of rows⟩}{⟨number of columns⟩},后跟 {⟨alignments⟩},然后是重复 ⟨number of rows⟩ 次的 {⟨row⟩},其中 ⟨row⟩ 是重复 ⟨number of columns⟩ 次的 {⟨column⟩},⟨alignments⟩ 是重复 ⟨number of columns⟩ 次的 ⟨alignment⟩,⟨alignment⟩ 是以下之一......

LATEX 示例 使用文本编辑器创建一个名为 document.tex 的文本文档,其内容如下:

\documentclass{article}
\usepackage[pipeTables, tableCaptions]{markdown}
\newcount\rowCounter
\newcount\columnCounter
\makeatletter
\def\processRow#1{%
  \columnCounter=1%
  \ifnum\rowCounter=0\relax
    As for the alignment,
  \else
    In row \the\rowCounter,
  \fi
  \processColumn#1
  \advance\rowCounter by 1\relax
  \ifnum\rowCounter>\rowTotal\relax
    \expandafter\@gobble
  \fi\processRow}%
\def\processColumn#1{%
  column number \the\columnCounter{}
  \ifnum\rowCounter=0\relax
    \if#1d{}has default alignment\fi
    \if#1l{}is left-aligned\fi
    \if#1c{}is centered\fi
    \if#1r{}is right-aligned\fi
  \else
    says \emph{#1}%
  \fi
  \advance\columnCounter by 1\relax
  \ifnum\columnCounter<\columnTotal\relax, \fi
  \ifnum\columnCounter=\columnTotal\relax, and \fi
  \ifnum\columnCounter>\columnTotal\relax
    .\expandafter\@gobble
  \fi\processColumn}%
\makeatother
\markdownSetup{
  renderers = {
    table = {%
      This is a table with caption \emph{#1} that is #3 colums wide
      and #2 rows long.
      \rowCounter=0%
      \def\rowTotal{#2}%
      \def\columnTotal{#3}%
      \processRow
    },
  },
}
\begin{document}
\begin{markdown}
| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
|   12  |  12  |    12   |    12  |
|  123  |  123 |   123   |   123  |
|    1  |    1 |     1   |     1  |

  : Demonstration of pipe table syntax
\end{markdown}
\end{document}

应生成一个名为 document.pdf 的 PDF 文档,该文档包含以下文本:

这是带有标题“管道表语法演示”的表格,该表格有 4 列宽和 4 行长。至于对齐方式,列 1 右对齐,列 2 左对齐,列 3 采用默认对齐方式,列 4 居中。在第 1 行中,列 1 表示右对齐,列 2 表示左对齐,列 3 表示默认,列 4 表示居中。在第 2 行中,列 1 表示 12,列 2 表示 12,列 3 表示 12,列 4 表示 12。在第 3 行中,列 1 表示 123,列 2 表示 123,列 3 表示 123,列 4 表示 123。在第 4 行中,列 1 表示 1,列 2 表示 1,列 3 表示 1,列 4 表示 1。

呃......我觉得我的 TeX 水平还不足以理解它是如何把表格变成“混乱”的

答案1

您可以指定 LaTeX 不应使表格浮动:

\usepackage{float}
\makeatletter
\renewcommand*{\fps@table}{H}
\makeatother

这样,您就可以避免重新定义表格渲染器

答案2

遵循问题中描述的方法:

\documentclass{article}
\usepackage{markdown}
\markdownSetup{pipeTables = true}                   
\markdownSetup{tableCaptions = true}
\makeatletter
\markdownSetup{renderers={
  table = {%
    \markdownLaTeXTable={}%
    \markdownLaTeXTableAlignment={}%
    \markdownLaTeXTableEnd={%
      \markdownLaTeXBottomRule
      \end{tabular}}%
    \ifx\empty#1\empty\else
      \addto@hook\markdownLaTeXTable{%
        \begin{table}[htbp]
        \centering}%
      \addto@hook\markdownLaTeXTableEnd{%
        \caption{#1}
        \end{table}}%
    \fi
    \addto@hook\markdownLaTeXTable{\begin{tabular}}%
    \markdownLaTeXRowCounter=0%
    \markdownLaTeXRowTotal=#2%
    \markdownLaTeXColumnTotal=#3%
    \markdownLaTeXRenderTableRow
  }
}}
\makeatother
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\begin{document}
\begin{markdown}
# markdown

markdown markdown markdown markdown markdown 
markdown markdown markdown markdown markdown markdown
markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown markdown 


| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
|   12  |  12  |    12   |    12  |
|  123  |  123 |   123   |   123  |
|    1  |    1 |     1   |     1  |

: table 1
\end{markdown}
\end{document}

结果:

在此处输入图片描述

相关内容