转化 org-table 的内容到 markdown 格式时, 保持 _ 不变化

之前看到有个选项, (setq org-export-with-sub-superscripts nil)

但是它只对表格外面的 _ 有效, 表格内仍然会被替换为: \_, 这点很恼火.

例子:

student_id

| 测试表格   |
|------------|
| student_id |

导出到 markdown 时, 输出的效果是这样的: |

image

这个应该和 org-export-with-sub-superscripts 没关系,加了个反斜杠应该是因为下划线是 Markdown 的元字符的关系。你可以把 student_id 改成 =student_id=

你的解决方案变成 `hello_world` 了, 也不是我想要的, 而且转化 org 到 md 的本意是, 可以快速的编写表格, 又可以在支持 markdown 的地方分享, 如果还得自己添加 =???=, 就失去了便捷性了.

我最终, 自己写了一个 bash 脚本, 输出时, 做了一下替换, 将 \_ 替换为 _.

谢谢.

你可以试试下面这个例子:

| 测试表格             |
|---------------------|
| total_student_count |

转成 markdown 再用你的脚本替换一下看看 markdown 渲染出来的效果是不是你想要的

输出结果:

<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">


<colgroup>
<col  class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">测试表格</th>
</tr>
</thead>

<tbody>
<tr>
<td class="org-left">total_student_count</td>
</tr>
</tbody>
</table>

我脚本也贴出来, 你可以自己试一下.

#!/bin/sh

org_table_file=$1
name=$(mktemp).md

emacs --batch "$org_table_file" \
      -l 'ox-md' \
      --eval "(setq org-export-with-toc nil)" \
      --eval "(setq org-export-with-sub-superscripts nil)" \
      --eval "(org-export-to-file 'md \"${name}\")"

cat $name |sed 's#\\_#_#g'|sed 's#\\`#`#g'

Option name Markup
Intra-word emphasis total\\_student\\_count
Intra-world emphasis total_student_count

我输出结果是我想要的.

DeepinScreenshot_select-area_20181116231430

Emacs 26.1, org 9.1.9

1 个赞