本文已加入专栏文章目录,归入「概论」文章系列。
如何交流 LaTeX 问题
去哪里交流
免费交流:去交流记录能保存、可公开获取的地方。
- 能使用英文:tex.stackexchange.com
功能完整、气氛严谨、交流特别活跃(以小时为单位),活跃用户中有 latex 社区元老、宏包维护者 - 偏好中文:github.com/CTeX-org/forum/issues
功能完善、交流不活跃(以天为单位);有 latex 中文社区成员参与,交流质量有保证 - 偏好中文且排斥 GitHub:wenda.latexstudio.net/
功能增加中,交流中度活跃 - 其他场所:
- 比较确定是特定 latex 宏包的问题,可以去宏包对应的 bug tracker,或直接联系维护者
- 不再活跃的 latex 专用交流平台,略过
- 非 latex 专用的交流平台,例如知乎
- 其他的话
- 有质量的即时交流是稀缺资源。即时通讯软件、私聊私信可以使用,但依赖这样的功能是坏习惯。
- 交流记录不保存,一定导致重复提问。
- 交流记录不可公开获取并检索,会增加问答双方相遇的难度,对提问方而言「加很多群、把同一个问题在每个群都发一遍」收益最大。
付费交流:去淘宝网店。
- 适合需要即时响应或内容敏感无法公开的情况
- 付费服务的质量不一定更优
交流原则
- 先搜索后提问,尝试自主解决问题,避免重复提问。
- 把问题拆小,每次只问一个界限明确的小问题,让每一次提问都容易得到解决。
- 提供准确而详细的信息:
- 介绍自己在做什么、为什么要这么做
- 介绍自己是怎么做的,让问题能在他人电脑上重复发生(以下称为「复现」)
- 使用描述性语句,谨慎使用(自创的排版)术语,解释涉及具体学科的术语
- 提供文本形式的信息,只在必要时发截图、上传文件
- 保有阅读(文字资料)的意愿
注意事项
- 区分「旧问题的继续交流」和「新问题」
继续交流多个回合后,应考虑重新提供(新)问题的完整描述,然后提一个新问题。问题描述中可以介绍「这是 xx 问题的后续」。 - 不要离题。在 latex 社区、latex 问答里,就只讨论与 latex 有关的事。
建议的提问模板
解决错误型提问
[程序报错、输出明显不正确的情况,属于此类]
- 我在完成 xx 任务
- 我遇到了 xx 问题(以文字描述、截图、提供附件等各种方式,说明问题所在)
- 我参考了 xx 资料(提供链接或准确来源),它们在 xx 方面不管用
- 通过以下例子或操作步骤能复现我的问题
实现功能型提问
[输出正常但不满足个人需求的情况,属于此类]
- 我想实现 xx 功能,用于 xx 场合,期待的效果是 xxx
- 我现在是这样做的(提供例子),参考了 xx 和 xx(提供来源)
- 目前的效果是 xxx,和期待效果之间的差异是 xxx
- 解决错误型提问,特征是程序运行报错,或输出明显错误。
- 最重要的是「让他人能复现你的问题」。
- 有的问题只在特定软件版本下能复现,可能还要提供版本信息。
- 实现功能型提问,特征是输出正常但不满足个人的特殊需求。
- 比较重要的是「明确指出预期效果」和「让他人理解需求的合理性与必要性」
- 对已经尝试一部分的提问,如有「必须沿用当前方案、不能更换」的要求,及时提出。
对 LaTeX 例子(MWE)的详细介绍
在 LaTeX 社区中,最小可用例(minimal working example,缩写为 MWE)是一个常见名词,它是指满足一定特征的例子。
## 什么是 MWE、如何准备它
1. LaTeX 具体问题的提问,最好能提供 MWE
1.1. 安装问题,例如「任何文件都无法编译」,不需要提供 MWE。
1.2. 提问不能只有 MWE:以文字、截图等各种方式对问题和需求的描述,也很重要。
2. MWE (minimal working example) 的定义
2.1. 完整:是一个完整的、在你电脑上能编译的 LaTeX 文档(以下简称「文档」)
- 以 documentclass 开始,以 end{document} 结束
2.2. 可复现:在你电脑上的编译结果,能复现你的问题,或体现你的需求。
2.3. 最小化:文档的长度尽可能短、设置尽可能简单。
- 尽可能用发行版提供的文档类、宏包、示例图片,少依赖外部文件(见第 3 点)。
- 尽可能使用标准文档类、调用尽量少的宏包、包含尽量少的自定义命令和正文。
2.4. 小结:他人复制粘贴后直接能编译、编译后能复现问题的简短例子。
2.4. 补充说明
- 完整、可复现和最小化,这三点是 MWE 的构成要素。
- 可复现最重要,其次是完整性。
- 能力不足(而非时间不足时)时,可适当放宽对最小化的要求。
- 准备 MWE 需要花费时间精力,但它能切实提高沟通效率,让问题更快解决。
3. 外部文件
3.1. 此处指无法通过发行版安装、复现问题又必须依赖的文件。
3.2. 外部文件也是 MWE 的一部分,应一并提供,或它们的下载链接。
3.1. 常见的外部文件
- 网上下载、他人发送的模板文件
- 图片
- .bib、.bst 和其他
4. 提供方式
4.1. 推荐的提供方式
- LaTeX 文档:必须为文本形式,不接受截图和照片。
- 屏幕输出:只接受截图和屏幕录像,原则上不接受对着屏幕拍的照片。
- 非屏幕输出:书影、手绘示意图等,接受照片。
4.2. 补充建议
- 在即时通讯工具中不发过长代码。
10 行以上的代码,建议先粘贴到 https://paste.ubuntu.com/,然后提供返回的链接。
- 提供截图和照片时,注意圈出重点,原则上不接受纯图片的提问。
- MWE 包含多个文件时,以 zip 压缩包形式提供。
5. 在准备 MWE 时能帮上忙的宏包
- lipsum 和 zhlipsum,方便地输出多段预设的西文和中文文本。
- mwe(ctan.org/pkg/mwe),提供示例图片(如 example-image.pdf)。
关于 MWE 三要素必要性的讨论
- 为什么要完整?
- 和可复现结合,这样能提供相当全的信息。
- 复制粘贴后直接能运行,提供了便利。
- 为什么要最小化?
- 在完整基础上的简短,能减少例子里的不必要信息。例子越短、行数越少,查找和定位问题也越方便。
- 设置的简化,可以让例子的输出效果接近默认设置(例如
article
文档类)。默认设置是有经验的解答方最熟悉的状态,熟悉能提高效率。
- 为什么要可复现?
- 一方面,可复现的例子才能和问题描述匹配;
- 另一方面,可复现能防止例子的过度简化(以至于问题不可复现)。
- 最小化很麻烦,能不能不做?
- 从提问方的角度,应力所能及地做。
- 因为能力和经验不足所以只能简化一点点,似乎做不到最简,这可以理解。因为时间紧所以不做,这是不合适的。
- 从解答方的角度,理解例子、定位问题是必经过程,所以一开始的例子越简短、越接近默认设置,整体效率越高。
关于如何提问的通用资料
关于「如何提问」,既有的讨论和总结已足够多。较为经典的是
- Eric S. Raymond and Rick Moen, How to Ask Questions The Smart Way
(常译作《提问的智慧》,网上有多份翻译,这是其中之一)
其他还有
- Sarah Kathleen Peck, The Art of Asking: Or, How to Ask and Get What You Want | http://medium.com
- How do I ask a good question? | stackoverflow.com
- The XY Problem | xyproblem.info(中文介绍和讨论有不少,例如这篇文章)
- 为什么计算机行业这么注重提问的艺术? | 知乎
以上是一般化的讨论,和 LaTeX 有关的讨论有
- I've just been asked to write a minimal example, what is that? | TeX-SX
- What makes a good MWE? | TeX-SX
- User Henri Menke's about me | TeX-SX
共性特征
关于电脑软件的网络问答,有不少共性特征
- 问答双方的交流不是即时的,常见于邮件列表和论坛
这使得每个交流回合耗时增加,对问答双方每次交流提供的信息量和信息完整性提出了要求。 - 问答双方通常无法当面交换信息
软件运行出错或不符合预期时,虽然所有的信息都在提问方的电脑里,但仍需人工提取、整理并提供,解答方才能有所了解。这对提问方提出了要求,即要付出提取、整理信息的成本。 - 问答双方信息不对称
- 提问方拥有全部原始信息,但可能不了解需要提供哪些信息、如何提取相应信息,也可能错误估计当前问题的困难程度
- 解答方可能拥有相应的知识和技能,但不了解提问方的「知识基础」,进而影响术语的使用、操作的描述,甚至出现误解
- 关于电脑软件的一些假设
- 「控制一些变量、掌握足够信息后,他人也能在自己电脑上让问题稳定可重复地发生」
- 「一个用户众多的软件,我遇到的问题,别人可能已经遇到过了」
一些(提前说明的)注意
- 在线交流问题有难度。
- 当面交流是最好的方式。此时,解答方在获取信息和代为操作方面有较大的自由。
- 当面交流限制了解答方的范围,在线交流可以让更多人看到提问。
- 配合视频或语音通话的远程桌面是次好的方式。此时,解答方能控制键盘鼠标输入、能看到屏幕输出,在获取信息和代为操作上也有不少自由。语音通话保证了口头交流的高效。
- 连线或通话要求双方同时在线,交流成本仍然较高。
- 更常见的在线交流形式,是远程且双方不同时在线。此时,参与交流的人的范围最广,相对的沟通效率最低,于是对沟通时发送的内容就提出了要求。
- 交流时,应围绕主题,多用陈述句和疑问句,少用或不用反问句。
- 新问题应单独提问,不在已解决的无关旧问题下、在文章下以评论形式提问(对既有内容的挑错和改进建议除外)
- 关于「新手」
- 在如何提供足量信息方面,「新手」可以获得额外的帮助,这些帮助可能是耐心的术语解释、学习路线推荐和不足信息的追问等,但不可能是「在信息不足的情况下随时优先获得满意回应」。
- 「新手」角色不是不配合、不学习的挡箭牌,接触两三个月后的用户不应再躲在「新手」温室里,应该把自己划入普通使用者行列。
- 随着接触时间的增加,使用者应在具体使用和如何提问方面有所成长,对交流过的内容有印象或能主动搜索到,积极减少重复提问。
- 关于「文档」
- 当软件提供了用户手册时,用户有责任阅读它。
- 用户可以因为「询问如何获取文档」、「在文档中搜索过、没搜到」、「阅读中不理解文档的特定段落」而提问,但不能因为纯粹的「知道文档在哪里却不想读」而提问。
- 如果提问获得的回应是「打开某文档,阅读其中的某具体段落、在文档内搜索某具体关键词」,建议提问方着手试一试。
- 从提问的角度,具体的问题更容易收获有效回应
- 遇到问题随时提,别怕发帖多。
- 不用、也不要积攒一个问题清单然后在一个帖子里集中发问。
- 有客观答案的问题,和征求意见的问题,应在不同帖子里提问。
- 从解答的角度,提供具体的操作步骤和修改方法,还是提供一般性原理和稍具抽象的方法论和知识,是一对矛盾。
- 具体步骤更直接和有效,但如果不理解原理,那么可能反复被相似问题困扰
- 抽象知识能解决一类问题,但学习需要时间和精力成本、效果不立竿见影
- 对提问方的提醒是,要有阅读中英文文本的耐心,不能只期望得到「照着操作一步就能完美解决」的回答;对解答方的提醒是,注意提供信息来源、引用时多提及权威参考资料
- 如果多个解答方的回应出现了冲突,可通过引用资料、进行实验、解释原理等方式讨论得出一致
- 对长期用户的提醒是,经验不能替代知识,要不时补充知识
- 总的来说,问答不能替代学习
- 这里的学习,特指阅读可信的、专门组织起来的资料,例如官方文档、广受好评的书籍和手册
- 阅读文章也很难替代学习,系列文章稍好。文章在写作时通常会考虑避免受众过窄、聚焦具体问题、对作者自身有价值等。这样,可能产生了太多「介绍(不完整)入门」的文章。
- 如果长期使用,建议找一两个可信资料,作为遇到问题时首先查阅的「知识库」
- 除非是付费服务,否则不能要求得到及时的、满意的回应
- 在基于兴趣的交流平台,提问方的「急」并不总是能提高问题的优先级
- 意愿和态度有意义,过多的、反应过于激烈的赞扬可能适得其反
- 付费服务时,「乙方」提供的是非标准化的服务,需要了解几乎全部的信息,才能对可能的工作量有大致的估计。很难像一斤水果多少钱那样提前提供准确报价。
错误示范
无效信息
- 提问
- 有人在吗?
- 在线等
- 有人用过/研究过 xx 吗?
- 谁知道 xx 怎么用?
- 建议
- 减少对即时交流的依赖
- 直接描述问题:我在用 xx,我是这么用的,遇到这样的问题……
模糊指代
- 提问:爱斯维尔模板,插入网址不会自动换行,怎么解决? 这是已引用的包 usepackage{lineno} usepackage{amsmath} usepackage{hyperref}
- 来源:https://wenda.latexstudio.net/q-1645.html
- 建议:
- 「xxx 模板」、「xxx 的回答」的说法不够具体,应提供获取链接。
- 用到了不能通过发行版安装的、从网上下载或复制的完整文件或大段代码时,应提供文件或代码的获取方式。
- 越早提供 mwe 越好
未具体化的笼统描述或具体学科术语
- 提问:如何利用LaTeX绘制句法学中的树状图?
- 来源:https://www.zhihu.com/question/395401017
- 建议:
- 提供具体的描述、形象的例子
- 「我想在 LaTeX 绘制某类图,它们长这样(截图或链接)」
其他信息
如果感觉信息不足,提问方可能要求提供额外信息,例如软件版本、操作系统等。有些信息可能是 LaTeX 问答中独有的,记录在这里
- 在完成什么类型的任务
- 诸如学位论文撰写、论文投稿的任务,在使用有人维护的模板时,从完成任务的角度,部分样式需求可能没有必要。从钻研和进阶使用的角度,当然所有问题都可以讨论。
- 诸如笔记整理、书籍撰写的任务,作者对样式有完全的控制权。
- 在使用什么发行版、什么引擎
- 对 LaTeX 的熟悉程度