Include 宏

Include 宏

此宏命令会把指定页面中格式化的内容包含进插入位置,并且会对指定的页面递归包含。系统将会自动探测并防止出现循环包含!

用法:

  • <<Include(pagename, heading, level, from="regex", to="regex", sort=ascending|descending, items=n, skipitems=n, titlesonly|titleonly, editlink|pagelink, filter|extra="opt1:value1;opt2:value2;...")>>

参数:

  • pagename

    需要包含的页面名。以 "/" 或者 "../" 开头的页面为相对页面,如果本参数以 "^" 开头,它将被作为正则表达式处理,并包含所有匹配的页面。

    • 如果 pagename 是正则表达式,其中可以出现名为 sort 的具名匹配,形如 "(?P<sort>...)",则包含的页面不再按照页面标题排序,而是按照页面名称中的 sort 具名匹配来排序。

    heading

    为引用部分增加一个标题(需要使用 "'" 包含,以防止其中的特殊字符过早被解释,本项为可选项)。如果使用空标题如 "",则自动使用页面名称为标题(优先使用页面中名为 page_title 的 pragma 内容作为页面标题)。(可选项)。

    level

    为上一项所增加的标题定义标题级别(可用级别为1..5,本项为可选项)。如果是包含页面内容(非titleonly和titlesonly),页面内容的标题级别会自动设置为 level 之下的级别。(可选项)。

    from

    需要包含页面中的部分内容时,选中内容的起始标志──可用正则表达式(可选项)。

    to

    需要包含页面中的部分内容时,选中内容的结束标志──可用正则表达式(可选项)。

    sort

    当 pagename 为正则表达式时,也就是以 "^" 开头时(即要包含多个页面),所包含的页面的排序方式(可选项)。

    items

    当使用正则表达式匹配到多个页面时,可以用此参数限制最多能显示出的页面个数(可选项)。

    skipitems

    当使用正则表达式匹配到多个页面时,可以使用此参数指定跳过前面的若干页面不显示(可选项)。

    titlesonly

    包含一个指向页面的链接以及包含内容的标题形成的提纲,而不是页面的内容。以标题样式显示整个大纲(可选项)。

    titleonly

    页面标题作为一个可点击的列表项显示。而 titlesonly 出了会显示包含页面内大纲外,还显示为标题样式(可选项)。

    editlink

    在被包含页面的页脚增加链接,仅当页面允许编辑时显示指向被包含页面以及编辑被包含页面的链接,如果无权编辑页面,则不显示任何链接(可选项)。

    pagelink

    在被包含页面的页脚增加链接,当页面允许编辑时显示指向被包含页面以及编辑被包含页面的链接,如果无权编辑页面,仅显示到被包含页面的链接(可选项)。

    filter 或者 extra

    附加参数提供对 Include 宏更多的控制(可选项)。

    • user:anonymous ── 含义为仅对匿名(未登录状态)访问Web页面执行该 Include 宏,对于登录账号,不执行该宏。

    • user:known ── 含义为仅对登录账号执行该 Include 宏,对于匿名(未登录状态)访问 Web页面,则不执行 Include 语句。

    • subpages:yes|no ── 当被包含页面是一个分类页面,该 Include 宏包含或者不包含该分类下的子页面。

    • subcategories:yes|no ── 当被包含页面是一个分类页面,该 Include 宏包含或者不包含该分类的子分类。

    • recursive:yes|no ── 当使用了 subpages 或 subcategories 时,是否进行递归包含。

  • (!) 除了 pagename 以外的其他参数均为可选项,群英汇增强的 Include 宏,除了 heading 参数和 level 参数外,其它参数的顺序无须顾虑。level参数只有在提供 heading 参数(空标题亦可)时才能出现。heading 参数可以被省略而无须占位符。

示例:

  • <<Include(FooBar)>> -- 将页面 !FooBar 的内容包含入当前段落。

  • <<Include(FooBar,"Foo Bar")>> -- 为包含的内容增加一个内容为 'Foo Bar' 的H1标题, FooBar 内容如果包含标题,则自动在级别1下重排。

  • <<Include(FooBar,"", 2)>> -- 为包含的内容增加一个内容为 'Foo Bar' 的H2标题, FooBar 内容如果包含标题,则自动在级别2下重排。

  • <<Include(FooBar, 'All about Foo Bar', 2)>> -- 增加一个 'All about Foo Bar' 的H2标题

  • <<Include(FooBar, from="^----$")>> -- 仅包含第一条横线后的内容

  • <<Include(FooBar, to="^----$")>> -- 仅包含第一条横线以前的内容

  • <<Include(^FooBar/.*, sort=descending)>> -- 使包含的页按页面名称的字母顺序降序排列

  • <<Include(^FooBar/.*, items=3)>> -- 最多包含入3个页面

  • <<Include(^BlogBase/.*, to="^----$", sort=descending, items=7)>> -- 最多显示一个星期的blog项目

  • <<Include(^BlogBase/.*, to="^----$", sort=descending, items=7, skipitems=7, titlesonly)>> -- 仅显示上个星期的标题

  • 您可以将本宏命令与 MonthCalendar宏 结合使用来实现 blogging 功能:

    • <<Include(^FirstnameLastname/20..-..-..,,to="^----",sort=descending,items=3)>> -- 显示月历中的最近的三个项目

    • <<Include(^FirstnameLastname/20..-..-..,,to="^----",sort=descending,items=4,skipitems=3,titlesonly)>> -- 只显示下面的4个标题


相关页面: