分类 技术 下的文章

在之前的一篇文章中,我介绍了使用 pandoc 将少量 Markdown 文件 批量转换 为 HTML 的过程。在那篇文章中,我创建了多个 HTML 文件,但 Pandoc 可以做的更多。它被称为文档转换的“瑞士军刀” —— 这是有充分理由的。很少有它做不到的事情。

Pandoc 可以将 .docx、.odt、.html、.epub、LaTeX、DocBook 等格式互相转换,或者转换为其他格式,例如 JATS、TEI Simple、AsciiDoc 等。

是的,这意味着 Pandoc 可以将 .docx 文件转换为 .pdf 和 .html 文件,但你可能会想:“Word 也可以将文件导出为 .pdf 和 .html。为什么我需要 Pandoc 呢?”

嗯,本来呢,你这个说法也没错,但考虑到 Pandoc 可以转换这么多格式,它很可能成为你所有转换任务的首选工具。例如,我们中的许多人都知道 Markdown 编辑器 可以将其 Markdown 文件导出为 .html。而使用 Pandoc 文件也可以转换为许多其他格式。

我很少将 Markdown 导出为 HTML。我通常让 Pandoc 来做这件事。

使用 Pandoc 转换文件格式

本文中,我会将 Markdown 文件转换成几种不同的格式。我几乎所有的写作都使用 Markdown 语法,但我经常需要转换为另一种格式:学校作业通常需要的 .docx 格式;我创建的网页通常需要的 .html 格式;工作需要的 .epub 格式;传单和讲义需要的 .pdf 格式;甚至包括一个大学数字人文项目偶尔需要的 TEI Simple 格式。Pandoc 可以轻松处理所有这些格式,甚至更多。

首先,你需要 安装 pandoc。此外,要创建 .pdf 文件,还需要 LaTeX。我最喜欢的套件是 TeX Live

注意:如果你想在安装前试用 pandoc,这里有一个在线试用页面:http://pandoc.org/try/

安装 pandoc 和 texlive

Ubuntu 和其他 Debian 发行版的用户可以在终端中输入以下命令:

sudo apt-get update
sudo apt-get install pandoc texlive

请注意第二行,你将一次性安装 pandoctexliveapt-get 命令 支持你这样做。不过,我建议你先去喝杯咖啡,因为这可能需要几分钟的时间。

开始转换

安装完成 pandoctexlive 后,你就可以尝试用它们来完成一些工作了!

该项目的示例文档将是一篇文章,该文章于 1894 年 12 月首次发表在《北美评论》上,标题为“如何击退火车劫匪”。我将使用的 Markdown 文件是前一段时间创建的,该文章的一个恢复项目的一部分(LCTT 译注:这是篇一百多年前发表的文章,这是一个数字化“恢复”项目)。

我把这篇文章保存为 how_to_repel_train_robbers.md,它位于我的 Documents 目录下,名为 samples 的子目录中。它在 Ghostwriter 中看起来是这样的:

在 Ghostwriter 中查看原始的 Markdown 文件

我想创建此文件的 .docx、.pdf 和 .html 版本。

第一次转换

首先,我将制作一个 .pdf 副本,因为我在安装 LaTeX 包时遇到了些麻烦。

~/Documents/samples/ 目录中,我输入以下,以创建一个 .pdf 文件:

pandoc -o htrtr.pdf how_to_repel_train_robbers.md

上述命令将基于 how_to_repel_train_robbers.md 文件,创建一个名为 htrtr.pdf 的文件。我使用 htrtr 作为名称的原因是:嗯,它比 how_to_repel_train_robbers 短。htrtr 其实是长标题中的单词首字母排列。

这是 .pdf 文件制作完成后的一个截图:

在 Ocular 中查看的转换后的 PDF 文件

第二次转换

接下来,我想创建一个 .docx 文件。该命令与我用来创建 .pdf 的命令几乎相同,它是:

pandoc -o htrtr.docx how_to_repel_train_robbers.md

很快,一个 .docx 文件就创建好了。这是它在 Libre Writer 中的样子:

在 Libre Writer 中查看转换后的 DOCX 文件

第三次转换

我可能会想在网上发布这个,所以再多一个支持网页的格式也不错。我将使用以下命令创建一个 .html 文件:

pandoc -o htrtr.html how_to_repel_train_robbers.md

同样,创建它的命令与前两次转换非常相似。这是该 .html 文件在浏览器中的样子:

在 Firefox 中查看的转换后的 HTML 文件

注意到什么了吗?

让我们再看看之前的命令。它们是:

pandoc -o htrtr.pdf how_to_repel_train_robbers.md
pandoc -o htrtr.docx how_to_repel_train_robbers.md
pandoc -o htrtr.html how_to_repel_train_robbers.md

这三个命令唯一不同的是 htrtr 后的扩展名。这提示你 pandoc 会依赖于你提供的输出文件扩展名(来决定目标转换格式)。

总结

Pandoc 可以做的远不止这里完成的三个小转换。如果你选择使用一个首选格式编写文件,但时不时又需要将文件转换为另一种格式,pandoc 很大概率都能为你完成。

现在,既然你已经学会了,你会用它做什么呢?你会把它自动化吗?如果你有一个网站,想供读者下载文章怎么办?你可以修改这些小命令,把它们编写成一个脚本,你的读者可以决定他们想要哪种格式。你可以提供 .docx、.pdf、.odt、.epub 或更多格式。你的读者只需要选择一种格式,然后对应的转换脚本就会执行,最后,你的读者下载他们想要的文件。这是完全可以做到的。


via: https://itsfoss.com/pandoc-convert-file/

作者:Bill Dyer 选题:lujun9972 译者:lkxed 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

基于 Fedora 的系统上的 mktemp 命令和基于 Debian 的系统上的 tempfile 是专门为减轻这种负担而设计的,它使创建、使用和删除独特的文件变得容易。

使用 Bash 脚本语言进行编程时,有时需要创建一个临时文件。例如,你可能需要一个可以提交到磁盘的中间文件,以便你可以使用另一个命令对其进行处理。创建诸如 temp 之类的文件或任何以 .tmp 结尾的文件很容易。但是,这些名称很可能是由其他进程生成的,因此你可能会不小心覆盖现有的临时文件。除此之外,你不应该花费脑力想出看起来独特的名字。基于 Fedora 的系统上的 mktemp 命令和基于 Debian 的系统上的 tempfile 是专门为减轻这种负担而设计的,它使创建、使用和删除独特的文件变得容易。

创建一个临时文件

mktemptempfile 都创建一个临时文件作为它们的默认操作,并打印文件的名称和位置作为输出:

$ tempfile
/tmp/fileR5dt6r

$ mktemp 
/tmp/tmp.ojEfvMaJEp

除非你指定不同的路径,否则系统会将临时文件放在 /tmp 目录中。

对于 mktemp,可以使用 -p 选项指定路径:

$ mktemp -p ~/Demo
/home/tux/Demo/tmp.i8NuhzbEJN

对于 tempfile,可以使用 --directory-d 选项:

$ tempfile --directory ~/Demo/
/home/sek/Demo/fileIhg9aX

找到你的临时文件

使用自动生成的临时文件的问题是你无法知道它的名字是什么。这就是为什么两个命令都返回生成的文件名作为输出的原因。你可以使用 Konsole、GNOME 终端或 rxvt 等交互式 shell 来使用终端上显示的文件名与文件进行交互。

但是,如果你正在编写脚本,则无法通过读取文件名并在以下命令中使用它来进行干预。

mktemptempfile 的作者想到了这个问题,并且有一个简单的解决方法。终端将输出发送到名为“标准输出”的流。你可以通过将变量设置为在子 shell 中启动的命令的结果来捕获标准输出:

$ TMPFILE=$(mktemp -p ~/Demo)

$ echo $TMPFILE
/home/tux/Demo/tmp.PjP3g6lCq1

引用文件时使用 $TMPFILE,它与直接与文件本身交互相同。

使用 mktemp 创建一个临时目录

你还可以使用 mktemp 命令创建目录而不是文件:

$ mktemp --directory -p ~/Demo/
/home/tux/Demo/tmp.68ukbuluqI

$ file /home/tux/Demo/tmp.68ukbuluqI
/home/tux/Demo/tmp.68ukbuluqI: directory

自定义临时名称

有时你甚至可能希望在伪随机生成的文件名中加入可预测性元素。你可以使用这两个命令自定义临时文件的名称。

使用 mktemp,你可以为文件名添加后缀:

$ mktemp -p ~/Demo/ --suffix .mine
/home/tux/Demo/tmp.dufLYfwJLO.mine

使用 tempfile,你可以设置前缀和后缀:

$ tempfile --directory ~/Demo/ --prefix tt_ --suffix .mine
/home/tux/Demo/tt_0dfu5q.mine

把 tempfile 作为 touch 使用

你还可以使用 tempfile 设置自定义名称:

$ tempfile --name not_random
not_random

当你使用 --name 选项时,它是绝对的,忽略所有其他形式的自定义。事实上,它甚至忽略了 --directory 选项:

$ tempfile --directory ~/Demo --prefix this_is_ --suffix .all --name not_random_at
not_random_at

在某种程度上,tempfile 可以替代 touchtest,因为它拒绝创建已经存在的文件:

$ tempfile --name example.txt
open: file exists

tempfile 命令并非默认安装在所有 Linux 发行版上,因此在将其用作脚本中的 test 的 hack 之前,你必须确保它存在。

安装 mktemp 和 tempfile

GNU Core Utils 包括 mktemp 命令。主要发行版默认包括 Core Utils(它是包含 chmodcutdu 和其他基本命令的同一个软件包)。

Debian Utils 软件包包含 tempfile 命令,默认安装在大多数基于 Debian 的发行版和 Slackware Linux 上。

总结

临时文件很方便,因为不会混淆它们是否可以安全删除。它们是临时的,意在根据需要使用并毫不犹豫地丢弃。在需要时使用它们,并在完成后清除它们。


via: https://opensource.com/article/22/6/make-temporary-file-bash

作者:Seth Kenlon 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

了解由我们生活中的所有连接设备组成的网络。

 title=

在早期,计算机既笨重又昂贵,计算机用户很少,他们必须在计算机上的预留时间内亲自来处理他们的 打孔卡 punchcard 。被称为 大型机 Mainframe 的系统进行了许多创新,并在 终端机 terminal (没有自己的 CPU 的桌面计算机)上实现了 分时 time-shared 任务。

时至今日,强大的计算设备能做到 价格低至 35 美元,且大小不超过一张信用卡。这甚至还没有涵盖现代生活中负责收集和处理数据的所有小设备。从高层次的角度来看这些计算机的集合,你可以想象得到,所有这些设备多得像云中的水滴一样。

碰巧“ 云计算 cloud computing ”一词已经被占用,因此需要为由物联网(IoT)和其他具有战略意义的服务器组成的网络提供一个独特的名称。此外,如果已经有一个代表数据中心节点的云,那么在云之外与我们交融的这些节点肯定有其独特之处。

欢迎来到雾计算

云通过互联网提供计算服务。构成云的数据中心很大,但与潜在客户的数量相比相对较少。这表明当数据在云及其众多用户之间来回传送时存在潜在的瓶颈。

相比之下, 雾计算 Fog Computing 可以在数量上超过其潜在客户,而不会出现瓶颈,因为设备执行大部分数据的收集或计算。它是云的外部“边缘”,是云落地的部分。

雾和边缘计算

雾计算和 边缘计算 edge computing 本质上是同义词。两者都与云和物联网密切相关,并做出相同的架构假设:

  • 你离 CPU 越近,数据传输就越快。
  • Linux 一样,小型专用计算机,可以“做一件事并把它做好”,这是一个强大的优势(当然,我们的设备实际上不仅仅做一件事,但从高层次上看,你购买的用于监测健康的智能手表本质上是在做“一”件事)。
  • 离线是不可避免的,但好的设备可以在此期间同样有效地运行,然后在重新连接时同步。
  • 本地设备能比大型数据中心更简单、更便宜。

边缘网络

将雾计算视为与云完全分离的实体很诱人,但它们毕竟是组成一个整体的两个部分。云需要数字企业的基础设施,包括公共云提供商、电信公司,甚至是运行自己服务的专业公司。本地化服务也很重要,可以在云核心与其数以百万计的客户之间提供 中转站 waystations

雾计算位于云的边缘,无论客户身在何处,都与他们紧密联系在一起。有时这是一个消费环境,例如你自己的家或汽车,而另一些时候这是一种商业利益,例如零售店中的价格监控设备或工厂车间的重要的安全传感器。

雾计算就在你身边

雾计算由我们生活中的所有连接设备组成: 无人机 drone 、电话、手表、健身监视器、安全监视器、家庭自动化、便携式游戏设备、园艺自动化、天气传感器、空气质量监视器等等。理想情况下,它提供的数据有助于建立一个更好、更明智的未来。有许多伟大的开源项目正朝着改善健康的方向而努力 —— 甚至只是让生活变得更有趣一点儿 —— 这一切都得益于雾和云计算。无论如何,我们的 工作是确保它 保持开放


via: https://opensource.com/article/21/5/fog-computing

作者:Seth Kenlon 选题:lujun9972 译者:hanszhao80 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

rustup 可用于 Rust 安装与更新。它还能够在稳定版、测试版和每日更新版之间无缝切换 Rust 编译器及其工具。

Rust 编程语言 如今变得越来越流行,受到爱好者和公司的一致好评。它受欢迎的原因之一是 Rust 提供的令人惊叹的工具,使其成为开发人员使用的乐趣。rustup 是管理 Rust 工具的官方工具。它不仅可以安装和更新 Rust ,它还能够在稳定版、测试版和每日更新版之间无缝切换 Rust 编译器及其工具。本文将向你介绍 rustup 及其一些常用命令。

默认 Rust 安装方式

如果你想在 Linux 上安装 Rust,你可以使用你的包管理器。在 Fedora 或 CentOS Stream 上,你可以这样:

$ sudo dnf install rust cargo

这提供了一个稳定版的 Rust 工具链,如果你是 Rust 的初学者,并想尝试编译和运行简单的程序,它会非常有用。但是,由于 Rust 是一种新的编程语言,它变化很快,并且经常添加许多新功能。这些功能是 Rust 工具链的每日更新版和之后测试版的一部分。要试用这些功能,你需要安装这些较新版本的工具链,而不会影响系统上的稳定版本。不幸的是,你的发行版的包管理器在这里无法做到。

使用 rustup 安装 Rust 工具链

要解决上述问题,你可以下载安装脚本:

$ curl --proto '=https' --tlsv1.2 \
    -sSf https://sh.rustup.rs > sh.rustup.rs

检查它,然后运行它。它不需要 root 权限,并根据你的本地用户权限安装 Rust:

$ file sh.rustup.rs
sh.rustup.rs: POSIX shell script, ASCII text executable
$ less sh.rustup.rs
$ bash sh.rustup.rs

出现提示时选择选项 1

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
> 1

安装后,你必须获取环境变量以确保 rustup 命令立即可供你运行:

$ source $HOME/.cargo/env

验证是否安装了 Rust 编译器(rustc)和 Rust 包管理器(cargo):

$ rustc --version
$ cargo --version

查看已安装和可用的工具链

你可以使用以下命令查看已安装的不同工具链以及哪个工具链是可用的:

$ rustup show

在工具链之间切换

你可以查看默认工具链并根据需要进行更改。如果你当前使用的是稳定版工具链,并希望尝试每日更新版中提供的新功能,你可以轻松切换到每日更新版工具链:

$ rustup default
$ rustup default nightly

要查看 Rust 的编译器和包管理器的完整路径:

$ rustup which rustc
$ rustup which cargo

检查和更新工具链

要检查是否有新的 Rust 工具链可用:

$ rustup check

假设一个新版本的 Rust 发布了,其中包含一些有趣的特性,并且你想要获取最新版本的 Rust。你可以使用 update 子命令来做到这一点:

$ rustup update

帮助和文档

以上命令对于日常使用来说绰绰有余。尽管如此,rustup 有多种命令,你可以参考帮助部分了解更多详细信息:

$ rustup --help

rustup 在 GitHub 上有完整的 参考手册,你可以用作参考。所有 Rust 文档都安装在你的本地系统上,不需要你连接到互联网。你可以访问包括书籍、标准库等在内的本地文档:

$ rustup doc
$ rustup doc --book
$ rustup doc --std
$ rustup doc --cargo

Rust 是一种正在积极开发中的令人兴奋的语言。如果你对编程的发展方向感兴趣,请关注 Rust!


via: https://opensource.com/article/22/6/rust-toolchain-rustup

作者:Gaurav Kamathe 选题:lkxed 译者:geekpi 校对:turbokernel

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是如何在 elementary OS 中启用最小化、最大化窗口按钮的方法。

许多人(大多数是 elementary OS 的新用户)在各种论坛上问这些问题:

  1. 我怎样才能在 elementary OS 中启用最小化按钮?
  2. 我如何启用还原、最小化、最大化?
  3. 有可能恢复最小化和最大化按钮吗?

这些都是完全正常的问题,而且问问题也是可以的。对吧?这篇指南可以帮助他们在 elementary OS 中获得这些按钮。

Elementary OS 所使用的 Pantheon 桌面并没有默认的标准窗口按钮。其主要原因是通过 Dock 和应用菜单处理用户行为和活动的不同理念。可以说,这种设计或实现的行为模仿了macOS。

不过,许多用户更喜欢窗口按钮,因为这是一个所谓的“肌肉记忆”,而且有些人是从其他桌面环境(甚至是 Windows)迁移过来的。

尽管 Elementary 没有为你提供这个默认设置,你仍然可以启用它。下面是方法。

启用最小化最大化按钮 - elementary OS

打开终端,安装添加 PPA 所需的 software-properties-common 软件包。默认情况下,这个包在 elementary OS 中没有安装(不要问我为什么,真的)。

sudo apt install software-properties-common

elementary OS 6 Odin

elementary Tweak 工具被重新换了个名字,它现在被称为 Pantheon Tweaks,并正在单独开发中。使用以下命令,你可以安装它:

sudo add-apt-repository -y ppa:philip.scott/pantheon-tweaks
sudo apt install -y pantheon-tweaks

elementary OS 5 Juno 及更低版本

如果你使用的是 elementary OS 5 June 及更低版本,你可以使用相同的 PPA 安装早期的 elementary-tweaks。在终端按照以下命令进行操作:

sudo add-apt-repository -y ppa:philip.scott/elementary-tweaks
sudo apt install -y elementary-tweaks

更改设置

  • 安装后,点击顶部栏的“ 应用 Application ”,打开“ 系统设置 System settings ”。在系统设置窗口中,点击“ 个人 Personal ”下的 “Tweaks”。
  • 在 Tweaks 窗口中,进入“ 外观 Appearance ”。
  • 在窗口控制下,选择布局:“Windows”。

enable minimize maximize buttons elementary OS

  • 然后在顶部窗口栏的右侧应该有最小化、最大化和关闭按钮了。

也有其他组合形式,如 Ubuntu、macOS 等。你可以选择任何你觉得合适的:

Other Options of Window buttons in elementary

这篇指南至此就结束了。系统设置中还有其他选项,你可以尝试使用,但窗口管理器 gala 最近删除了这些选项。因此,它们目前可能无法工作。

我希望这个指南能帮助你启用 elementary OS 的最小化最大化按钮。如果你需要任何帮助,请在下面的评论栏告诉我。


via: https://www.debugpoint.com/2021/08/enable-minimize-maximize-elementary/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

几乎所有的事情都可以从 Linux 命令行完成,包括对 Xfce4 进行远程配置。

 title=

与专有操作系统相比,我很欣赏 Linux 的一个特点是,几乎所有的东西都可以从命令行中进行管理和配置。意味着几乎所有的事情都可以在本地或者通过 SSH 远程登录进行管理。虽然有时候需要花费一点时间在互联网上搜索,但是你能想到的任务,是有可能从命令行完成的。

问题

有时候需要使用命令行对桌面进行远程配置。在这种特殊情况下,我需要响应远程用户的请求将在 Xfce 控制板上的工作区从四个减少到三个。这种配置只需要在互联网上搜索约 20 分钟就找到了。

xfwm4 的默认工作区数量和许多其他设置可以在 /usr/share/xfwm4/defaults 这个文件中找到和修改。因此将 workspace_count=2 设置为 workspace_count=4 就改变了主机上所有用户的默认值。同时,非 root 用户可以执行 xfconf-query 命令来查询和设置 xfwm4 窗口管理器的各种属性。它应该由需要改变设置的用户使用,而不是由 root 使用。

在下面的例子中,首先我验证了当前工作区数量为 4 ,然后将数量改为 2,最后确认了新设置。

[user@test1 ~]# xfconf-query -c xfwm4 -p /general/workspace_count
4
[user@test1 ~]# xfconf-query -c xfwm4 -p /general/workspace_count -s 2
[user@test1 ~]# xfconf-query -c xfwm4 -p /general/workspace_count
2
[user@test1 ~]#

此更改会立即生效,用户可以马上看到,无需重新启动,甚至无需注销并重新登录。我曾在我的工作站上玩过这个游戏,当我输入设置不同数量的工作空间的命令时,可以观察到工作空间切换器的变化。我在哪儿都能找到乐子。;- )

更多探索

现在我解决了这个问题,我决深入了解一下 xfconf-query 命令。不幸的是,该工具没有手册或信息页,/usr/share 中也没有任何文档。退而求其次,使用 -h 选项获取一些帮助信息。

$ xfconf-query -h
 Usage:
   xfconf-query [OPTION…] - Xfconf commandline utility
 Help Options:
   -h, --help            显示帮助选项
 Application Options:
   -V, --version         版本信息
   -c, --channel         查询/修改通道
   -p, --property        查询/修改属性
   -s, --set             更新权限的值
   -l, --list            罗列属性(或者通道,如果没有用 -c 指定)
   -v, --verbose         详细输出
   -n, --create          当新属性不存在,则创建它
   -t, --type            指定属性值类型
   -r, --reset           重置属性
   -R, --recursive       递归(与 -r 一起使用)
   -a, --force-array     即使只有一个元素也强制采用数组
   -T, --toggle          反转现有的布尔属性
   -m, --monitor         监视属性更改的通道

这没有多大帮助,但我们还是可以从中找出一些有用的东西。首先,通道 是可以修的属性的分组。我对 general 通道下的 workspace_count 属性进行了更改。让我们看看完整的通道列表:

$ xfconf-query -l
Channels:
  xfwm4
  xfce4-keyboard-shortcuts
  xfce4-notifyd
  xsettings
  xfdashboard
  thunar
  parole
  xfce4-panel
  xfce4-appfinder
  xfce4-settings-editor
  xfce4-power-manager
  xfce4-session
  keyboards
  displays
  keyboard-layout
  ristretto
  xfcethemer
  xfce4-desktop
  pointers
  xfce4-settings-manager
  xfce4-mixer

给定通道的属性也可以用下列的命令来查看。我使用 less 分页器,因为结果是一长串数据。我对下面的列表进行了裁剪,但留下了足够多的条目,你可以看到这些条目的类型。

$ xfconf-query -c xfwm4 -l | less
/general/activate_action
/general/borderless_maximize
/general/box_move
/general/box_resize
/general/button_layout
/general/button_offset
<裁剪>
/general/workspace_count
/general/workspace_names
/general/wrap_cycle
/general/wrap_layout
/general/wrap_resistance
/general/wrap_windows
/general/wrap_workspaces
/general/zoom_desktop
(END)

你可以用这种方式探索所有的通道。我发现通道通常对应“设置管理器”中的各种设置。这些属性是你在这些对话框中设置的。请注意,并非你在“设置管理器”对话窗口中找到的所有设置都是 Xfce 桌面的一部分,因此它们没有对应的通道。屏幕保护程序就是一个例子,因为它是通用的 GNU 屏幕保护程序,并不是 Xfce 独有的。“设置管理器” 是 Xfce 定位这些配置工具的一个很好的中心位置。

文档

综上所述,xconf-query 命令似乎没有任何手册或信息页,并且我在网上发现了很多不正确的、记录不全的信息。我发现对 Xfce4 来说最好的文档是 Xfce 网站,关于 xconf-query 的一些具体信息可以在这里找到。


via: https://opensource.com/article/21/1/remote-configuration-xfce4

作者:David Both 选题:lujun9972 译者:Donkey-Hao 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出