Obsidian 插件:Advanced Tables 改进了表格导航、格式和操作

Obsidian 插件:Advanced Tables 改进了表格导航、格式和操作

为 Obsidian 中的标记表添加改进的导航、格式和操作。

插件名片

  • 插件名称:Advanced Tables
  • 插件作者:Tony Grosinger
  • 插件说明:改进了表格导航、格式和操作
  • 插件分类:[’ 界面相关 ’, ’ 编辑工具 ’, ’ 表格 ’, ’ 效率 ’, ‘obsidian 插件 ‘]
  • 插件项目地址:点我跳转
  • 国内下载地址:下载安装

效果&特性

该插件将 markdown 繁杂的围栏式语法,通过自动补全的方式使得只需专注于内容输入 ,而无需操心语法。整个表格输入过程中,仅由第一个 | 是手动输入的。该插件配合 editing-toolbar 能起到可视化编辑表格的效果,不用使用快捷键。

Obsidian 插件:Advanced Tables 改进了表格导航、格式和操作--效果&特性

  • 自动格式化表格
  • Excel 样式的表格导航 (使用  Tab  和  Enter  在行和列之间导航)
  • 类 org-mode 式的公式计算
  • 添加、删除、移动行和列
  • 设置列的对齐方式 (左对齐、居中、右对齐)
  • 对指定的列进行排序
  • 将表格导出为 CSV 格式

中文字符对齐

该插件针对英文字符能很好的自动对齐,但对中文字符对齐效果不佳。目前的解决方案是选用一款等宽的中文字体解决。但因为一个表格语法对齐而改变字体,如果不是特别在意的话建议还是忽略

使用

通过“|”创建表,然后键入表格的第一个标题并按 Tab。继续输入标题并按 Tab 键,直到创建完所有标题。按回车键转到下一行。

详细步骤

按如下步骤创建表格:

  1. 输入  | ;
  2. 输入列标题,然后按  Tab 键;
  3. 重复第二步,直到所有标题输入完毕,然后按 回车 键;
  4. 此时光标来到表格的第一行;
  5. 输入列的内容,然后按 Tab 键;
  6. 重复第五步,直到所有列的内容输入完毕,如果需要增加新行,按 回车 键;

快捷键

基本上所有表格操作都有对应的快捷键,包括但不限于行列的移动,居中居左居右对齐,删除行列,文件格式化所有表格,插入行列

快捷键(Hotkey)效果
Tab切换到下一个单元格
Shift + Tab切换到前一个单元格
Enter切换到下一行
Ctrl + Shift + D在侧边栏打开表格控制面板

表格控制面板

插件本身支持图形化的操作,可以通过面板对表格进行控制。打开控制面板的快捷键为:Ctrl + Shift + D。 控制面板如下图所示。

Obsidian 插件:Advanced Tables 改进了表格导航、格式和操作--表格控制面板

制面板上提供了表格操作的快捷方式。从图形可以很容易推测出每个图标对应的操作。当鼠标位于图标上方时还有提示消息,告知用户该图标的功能。

控制面板提供的功能包括:

  • 设置列的对齐方式
  • 行的上移、下移
  • 列的左移、右移
  • 插入行
  • 插入列
  • 删除行
  • 删除列
  • 以光标所在列为基础对表格进行正向、逆向排序
  • 将表格导出为 CSV 文件

注意事项

请注意要先用 | 符号来进入快速编辑表格的模式。后面的输入只需要用 Tab 键进行区分。
使用 ctrl+shift+d 可以调出来表格的工具

移动端 App

在移动设备上使用 Obsidian 时,也可以使用 Advanced Tables 插件。

EnterTab 键导航表格将无法使用。

遇到这种问题,你可以使用 Obsidian 的移动设备工具栏,并在其中添加 “Next Cell”(下一个单元格)和“Next Row”(下一行)命令,以便于在移动端表格中导航,当然你也依然可以在侧边栏中使用相应按钮进行操作。

公式计算

粗略翻译了一下原文档,如有误请参考原文档地址:md-advanced-tables/formulas.md

快速一览

| Item              | Grams |
| ----------------- | ----- |
| Whole Wheat Flour | 110   |
| Bread Flour       | 748   |
| Warm Water        | 691   |
| Salt              | 18    |
| Starter           | 40    |
| **Total Grams**   |       |
<!-- TBLFM: @>$2=sum(@I..@-1) -->

表格后面紧接着一个 HTML 语法式的注释,即 <!----> 夹住的部分,然后是一个固定字段 TBLFM: 用于标识这是一个公式计算。

Warning

注意这个 HTML 语法的注释每一个空格都不能省略

接下来是书写公式:

<!-- TBLFM: DESTINATION=SOURCE -->
  • DESTINATION:需要计算的列
  • SOURCE:计算规则
<!-- TBLFM: @>$2=sum(@I..@-1) -->
  • @>:最后一行
  • $2:第二列
  • @I:表示表头与表体之间的分隔行
  • ..:表示范围
  • @-1:最后一行的上面一行,即倒数第二行
  • sum(@I..@-1):sum 是求和函数,括号内是个范围参数

合起来就是:最后一行第二列用分割行到倒数第二行求和所得

行与列的选择

@ 代表行,$ 代表列,@1 代表第一行,$1 代表第一列

除了使用数字指定特定的行和列(称为绝对行或绝对列),还可以使用符号动态地引用表格的部分。

  • @<$< 分别表示第一行和第一列。
  • @>$> 分别表示最后一行和最后一列。
  • @I 表示表头与表体之间的分隔行。

行和列也可以相对于当前正在填充的单元格进行引用。例如,@-1 表示“同一列,上方一行”,而 $+2 表示“同一行,向右两列”。

在编写单元格引用时,如果省略了行或列部分,它表示“在当前行”或“在当前列”。在我们的例子中,@I@-1 都省略了列,因此这些引用是目标单元格相同列的引用。

行始终由 @ 表示,列由 $ 表示。行和列可以指定为绝对值或相对值。

  • @1 表示第一行,@5 表示从上面数第 5 行。
  • $1 表示第一列,$5 表示从左数第 5 列。
  • @<$< 分别表示第一行和第一列。
  • @>$> 分别表示最后一行和最后一列。
  • @I 表示标题下的第一行内容。
  • @-1 表示填充单元格上方的行。
  • $+2 表示填充单元格右边的第二列。

行或列可以单独指定,或者组合在一起。例如,@5 表示当前列中的第 5 行。同样,$5 表示当前行中的第 5 列。当它们一起使用时,它们表示单个单元格。

当它们一起使用时,行应始终在列之前。

范围选择

仅有行和列时,公式可以选择单个单元格或整行和列。使用范围,公式可以选择部分行/列以及多个行/列。

范围由行/列、两个句点和另一个行/列创建。例如 @1..@3。然而请注意,两边的组成部分必须匹配。范围不能从行到列,或从单元格到行。

  • @2..$4 - 不合法,不能从行到列。
  • @2$3..@5 - 合法,如果一个项存在于第一个项中而不存在于第二个项中,则将其添加到第二项中。
  • @2$3..@5$5 - 合法,从一个单元格到另一个单元格。
  • $4..$6 - 合法,从一列到另一列。

范围可用于选择行或列的部分。

  • @2$>..@5$> - 最后一列,从第 2 行到第 5 行。阶度 4x1
  • @3$<..@3$5 - 第三行,从第一列到第 5 列。阶度 1x5

范围也可以用于选择多个行或列。

  • @<..@> - 从第一行到最后一行的整行(整个表格)。
  • @3$1..@4$3 - 从第 3 行到第 4 行,从第 1 列到第 3 列。阶度 2x3

代数运算

公式可以用于在表格中添加、减去、乘以和除以值。所有代数操作都必须包含在括号中。

加法

当相加时,指定的值中至少一个必须是单个单元格。公式不得将一个范围加到另一个范围中。

  • (@2$3+@3$4) - 合法,相加两个单元格。
  • (@2+@3$4) - 合法,将当前单元格中第 2 行的值加到@3$4 的单元格。
  • (@2$3+$4) - 合法,将@23 中的值加到当前行,第 3 中的值加到当前行,第 4 列的值中。
  • (@2+@3) - 合法,将第 2 行当前列中的值加到第 3 行当前列中的值。
  • @2$3+$4 - 不合法,缺少括号。

加法示例

在这个表格中,右列从第 4 行到最后一行填充。对于每一行,它将前两行的值相加。你可能会认出这是 Fibonacci数列

| Start | Fibonacci |
|-------+-----------|
|     1 |         1 |
|     1 |         1 |
|       |         2 |
|       |         3 |
|       |         5 |
|       |         8 |
|       |        13 |
|       |        21 |
<!-- TBLFM: @4$>..@>$>=(@-1+@-2) -->

减法

减法要求第二个操作数为单个单元格。第一个操作数可以是范围或单元格。

  • (@2$3-@3$4) - 有效,减去两个单元格。
  • (@2-@3$4) - 有效,在每一行中减去一个单元格的值。
  • (@3$4-@2) - 有效,在@3$4 中减去当前列中第 2 行的值。
  • @2-@3$4 - 无效,缺少括号。

减法示例

在此示例中,我们正在从@2$3(3)的值中减去第 3 行(4,5,6)中的值。请注意,每个结果(-1,-2,-3)减去了第三行相应单元格中的值。

| One | Two | Three |
|-----+-----+-------|
|   1 |   2 |     3 |
|   4 |   5 |     6 |
|  -1 |  -2 |    -3 |
#+TBLFM: @>=(@2$3-@3)

乘法

乘法需要至少一个值为单个单元格。无法使用公式将一个范围与另一个范围相乘。

  • (@2$3*@3$4) - 有效,将两个单元格相乘。
  • (@2*@3$4) - 有效,将单个单元格与第 2 行中的当前列相乘。
  • (@2$3*$4) - 有效,将单个单元格与第 4 列中的当前行相乘。
  • (@2*@3) - 有效,将第 2 行中的当前列与第 3 行中的当前列相乘。
  • (@2..@3*@2$4..@4$4) - 无效,两个操作数都是范围。
  • @2$3*$4 - 无效,缺少括号。

除法

除法要求第二个操作数为单个单元格。第一个操作数可以是范围或单元格。

  • (@2$3/@3$4) - 有效,将两个单元格相除。
  • (@2/@3$4) - 有效,在每行的每个值上除以单个单元格。
  • (@3$4/@2) - 有效,将单个单元格除以第 2 行中的当前列。
  • (@3$4/@2..@3) - 无效,无法将单个单元格除以范围。
  • @2/@3$4 - 无效,缺少括号。

条件操作

条件允许根据两个输入的比较选择一个值。例如:

if(@3$4<@4$5, @2, @3)

在此示例中,我们将比较位于单元格 @3$4 中的值与单元格 @4$5。如果第一个小于第二个,则结果将为第一个参数(@2),否则结果将为第二个参数(@3)。

仅能在单元格之间进行比较,无法比较范围。

比较运算符

  • < :小于
  • > :大于
  • <= :小于或等于
  • >= :大于或等于
  • == :相等
  • != : 不等于

条件示例

此条件操作将最后一列的值设置为大于三的第一列的值。如果是,则将该值放在最后一列,否则将三的值放在最后一列。

换句话说,此函数将最后一列设置为第一列和三的较大者。

| One | Two | Three |
|-----+-----+-------|
|   1 |   2 |     3 |
|   4 |   5 |     4 |
|  -1 |  -2 |     3 |
#+TBLFM: $>=if($1>3, $1, 3)

函数

函数看起来与条件操作非常相似。一个有值的关键词后面跟随括号。例如,mean (@3$<..@ 3$4)。函数调用传递提供的范围、单元格、行或列中的数据,然后执行计算并返回结果。

有两个可以使用的函数:

sum

sum 与上面的加法代数运算非常相似,但它将添加提供的范围、行或列中的所有单元格,并输出单个单元格结果。

|       One | Two | Three |
|-----------+-----+-------|
|         1 |   2 |       |
|         4 |   5 |       |
| **Total** |     |    12 |
<!-- TBLFM: @>$>=sum(@2$<..@3$2) -->

mean

mean 计算提供的范围、行或列的平均值。与 sum 一样,它将输出单个单元格结果。

嵌套

函数的不同构建块可以嵌套在一起,只要它们的 arity 匹配。例如,sum 的输出可以用作条件操作的输入。以下是一些有效嵌套的示例:

  • <!-- TBLFM: @>=sum(@3..@4)+@3$1 --> - 将第三行到第四行相加,再加上第三行第四列的值填到最后一行
  • <!-- TBLFM: @3$3=if(@2$4+@2$5==@2$6, @3$3, @4$3) --> - 在比较中添加两个单元格

链接和多个公式

表格可能有多个定义的公式。有两种方法可以实现这一点。在单个公式行中,多个公式可以使用“::”链接在一起。例如:

<!-- TBLFM: @2=@4::$1=$2 -->

链接时,将从左到右计算公式。将应用第一公式后产生的结果作为第二公式的输入。这意味着第二个公式可以在第一个公式计算的值上操作。

第二种方法是使用多个公式行。

<!-- TBLFM: @2=@4--> <!--TBLFM:$1=$2 -->

此方法与链接相同。公式行将从上到下计算。就像链接时一样,将一个公式产生的输出表作为下一个公式的输入。

可以混合使用这些方法。

<!-- TBLFM: @2=@4::$1=$2 --> <!-- TBLFM: @5$3=sum(@2) -->

格式化选项

您可以通过使用格式化指令来请求结果以某个小数点输出。例如:

| A   | B   | C   | D   |
| --- | --- | --- | --- |
| 1   | 2   | 5   | 6   |
| 3   | 4   | 7   | 8   |
|     |     |     |     |
<!-- TBLFM: @>=(@I / @3$4);%.2f -->

在此示例中,格式化指令是末尾的“;%.2f”。如果没有它,结果将是值,“0.14285714285714285”,但是因为我们请求了两个小数点,结果将是“0.14”。

关联推荐

  • obsidian-sortable:提供搜索 Obsidian 设置和插件设置选项的能力
  • obsidian-excel-to-markdown-table:可以将来自 Microsoft Excel、Google Sheets、Apple Numbers 和 LibreOffice Calc 的数据粘贴为 Obsidian 编辑器中的 Markdown 表格。

讨论

若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。



反馈交流

其他渠道

版权声明