跳到主要内容

Beancount 中的选项配置

Beancount 的行为可以使用 option 指令进行自定义,这些指令位于主账本文件的顶部。这些键值对控制着一切,从您的根账户的名称到货币转换的处理方式。正确配置这些选项对于根据您的特定需求定制 Beancount 至关重要。⚙️

核心配置选项

options-configuration

这些选项控制着账本的基本设置。

基本设置

以下是一些您最常设置的选项。

option "title" "个人账本"
option "render_commas" "TRUE"
option "plugin_processing_mode" "raw"
  • title: 设置报表和 Web 界面的标题。
  • render_commas: 如果为 TRUE,报表中的数字将使用千位分隔符格式化(例如,1,000,000.00)。
  • plugin_processing_mode: 控制插件的加载方式。raw 仅加载您明确指定的插件,而 default 包括一组标准的实用插件。

账户名称自定义

您可以重命名 Beancount 的五个基本账户类型。这纯粹是表面上的更改,只会改变它们在报表中的显示方式。

option "name_assets" "资产"
option "name_liabilities" "负债"
option "name_equity" "权益"
option "name_income" "收入"
option "name_expenses" "支出"

权益账户配置

Beancount 会自动创建几个特殊的权益账户,以处理期初余额和收入计算。您可以为这些账户指定自定义名称。

option "account_previous_balances" "期初余额"
option "account_previous_earnings" "收益:期初"
option "account_current_earnings" "收益:当期"
option "account_previous_conversions" "转换:期初"
option "account_current_conversions" "转换:当期"
option "account_rounding" "舍入"
  • account_previous_balances: 用于将期初余额注入账本的账户。
  • account_current_earnings: 用于累计当期所有收入和支出总额的账户,有效地计算您的净收入。
  • account_rounding: 存放自动舍入产生的小额差异的账户。

精度和容差设置

这些选项控制 Beancount 如何处理交易中的舍入和小额不平衡。

默认容差配置

Beancount 可以自动推断具有多种货币或成本的交易的容差,从而允许小的舍入差异而不会导致错误。

option "inferred_tolerance_default" "USD:0.01"
option "inferred_tolerance_multiplier" "1.1"
option "infer_tolerance_from_cost" "True"
  • inferred_tolerance_default: 设置给定货币的默认容差。您可以使用 *:0.5 为所有货币设置默认值。
  • inferred_tolerance_multiplier: 应用于容差的因子,以提供稍微大一点的误差范围。
  • infer_tolerance_from_cost: 如果为 True,则容差将从成本中的位数推断出来。

记账方法

此选项定义 Beancount 如何处理推断出一条腿的交易。

option "booking_method" "SIMPLE"
  • SIMPLE: 允许每笔交易仅自动平衡一种商品。这是推荐的也是最常用的方法。
  • FULL: 允许平衡多种商品,这是一种更复杂且很少需要的方法。

货币管理

正确的货币配置对于准确的报告至关重要。

运营货币

您可以声明一种或多种“运营货币”。这些是您进行交易并希望在报表中看到的主要货币。

option "operating_currency" "USD"
option "operating_currency" "EUR"
option "conversion_currency" "NOTHING"

声明运营货币会告诉 Beancount 在报表中为它们创建专用列,从而可以轻松地以您最常用的货币查看您的财务状况。将 conversion_currency 设置为 NOTHING 将禁用自动转换列,这通常是首选的,以便获得更简洁的报表。

文档管理

Beancount 可以将交易链接到外部文件,如收据或发票。documents 选项指定存储这些文件的根文件夹。

option "documents" "/path/to/documents/archive"

要求:

  • 文件必须使用 YYYY-MM-DD.description.ext 格式命名(例如,2025-07-28.amazon-order.pdf)。
  • 您可以为不同的文件夹指定多个 documents 选项。
  • 路径可以是绝对路径,也可以是相对于主账本文件的相对路径。

插件系统

Beancount 的功能可以通过插件扩展。

插件配置

您可以通过指定其模块路径来启用插件。

option "plugin" "beancount.plugins.module_name"

如前所述,plugin_processing_mode 选项控制 Beancount 是仅加载您指定的插件 (raw) 还是同时加载一组默认插件 (default)。

技术限制和约束

这些选项控制 Beancount 解析器的技术方面。

字符串处理

您可以设置多行字符串中允许的行数的限制,以防止解析错误。

option "long_string_maxlines" "64"

实验性功能

Beancount 有时会包含可以使用选项启用的实验性功能。例如,要启用显式容差语法:

option "experiment_explicit_tolerances" "True"

这允许您在交易过账中直接指定容差,例如:532.23 ~ 0.001 USD

系统行为控制

这些选项用于保持兼容性或特定系统行为。

遗留支持

此选项启用旧的、固定的容差值,以便与旧账本向后兼容。

option "use_legacy_fixed_tolerances" "True"

固定的旧版容差为:

  • Balance/Pad 指令: 0.015 单位
  • 交易: 0.005 单位

推荐配置 ✅

对于大多数用户,以下配置提供了一个稳健且明智的起点。

基本设置

option "title" "个人账本"
option "operating_currency" "USD" // 更改为您的主要货币
option "documents" "/home/user/Documents/beancount" // 更改为您的文档路径
option "render_commas" "TRUE"

精度控制

option "inferred_tolerance_default" "USD:0.01" // 更改为您的主要货币
option "inferred_tolerance_multiplier" "1.1"
option "infer_tolerance_from_cost" "True"

账户结构

option "account_previous_balances" "Equity:Opening-Balances"
option "account_current_earnings" "Equity:Current-Earnings"
option "account_rounding" "Expenses:Rounding"

此设置为新的 Beancount 账本提供了坚实的基础,确保了清晰的报告、合理的精度控制和符合逻辑的权益账户结构。