You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TiddlyWiki列表项中实现多重条件文本格式设置?

TiddlyWiki多格式叠加模板优化方案

你遇到的嵌套<$macrocall>转义问题可以通过级联更新输出变量的方式彻底解决,无需处理多层引号转义,可支持任意数量的叠加格式规则。

优化后完整模板代码

\define strike(text:"")
~~$text$~~
\end

\define grey(text:"")
@@.empty
$text$
@@
\end

\define normal(text:"")
$text$
\end

<!-- 通用格式应用宏,无需修改 -->
\define apply-format()
<$let 
  current-content=<<__content__>>
  format-type=<<__format__>>
>
<$macrocall $name=<<format-type>> text=<<current-content>> />
\end

<!-- 初始化基础内容为条目链接 -->
<$let output=<$link/>>

<!-- 规则1:带skip标签的内容加删除线 -->
<$list filter="[<currentTiddler>tag[skip]]" emptyMessage="<$let output=<<output>>/>">
<$let output=<<apply-format content=<<output>> format:"strike">>/>
</$list>

<!-- 规则2:无正文的内容变灰色 -->
<$list filter="[<currentTiddler>!has[text]]" emptyMessage="<$let output=<<output>>/>">
<$let output=<<apply-format content=<<output>> format:"grey">>/>
</$list>

<!-- 规则3:带spoiler标签的内容应用剧透格式 -->
<$list filter="[<currentTiddler>tag[spoiler]]" emptyMessage="<$let output=<<output>>/>">
<$let output=<<apply-format content=<<output>> format:"spoiler-inline">>/>
</$list>

<!-- 规则4:带event标签的内容加前缀箭头 -->
<$let arrow={{{ [<currentTiddler>tag[event]then[→ ]else[]] }}}>

<!-- 最终输出 -->
<<arrow>> <<output>>

新增格式规则的方法

  1. 先定义你需要的格式宏,比如要实现重要内容标红:
\define red(text:"")
@@color:red;
$text$
@@
\end
  1. 在规则区域复制一段<$list>逻辑,修改触发条件和格式名即可,比如:
<!-- 新增规则:带important标签的内容标红 -->
<$list filter="[<currentTiddler>tag[important]]" emptyMessage="<$let output=<<output>>/>">
<$let output=<<apply-format content=<<output>> format:"red">>/>
</$list>

规则的前后顺序决定了格式的叠加顺序,可根据需要自行调整。

内容的提问来源于stack exchange,提问作者Takiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 09:39:01