summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2011-10-27 12:46:11 -0700
committerJohn Wiegley <johnw@newartisans.com>2011-10-27 12:46:11 -0700
commit602f331c18d0a908572725217ab7ce7bd2a46a92 (patch)
tree4dd464a1e2e7dd17a6d75eb9c382b005eef1fb83
parent7439c2040839d0c1187883a12fd9e43107983d67 (diff)
parent937a004ae7d3973bae8fe0ec2330db00c0dbe7c1 (diff)
downloadfork-ledger-602f331c18d0a908572725217ab7ce7bd2a46a92.tar.gz
fork-ledger-602f331c18d0a908572725217ab7ce7bd2a46a92.tar.bz2
fork-ledger-602f331c18d0a908572725217ab7ce7bd2a46a92.zip
Merge pull request #43 from enderw88/next
Many documentation edits and a fix for Bug 555 on stats command
-rw-r--r--doc/ledger3.texi550
1 files changed, 465 insertions, 85 deletions
diff --git a/doc/ledger3.texi b/doc/ledger3.texi
index 719547cb..da63dd98 100644
--- a/doc/ledger3.texi
+++ b/doc/ledger3.texi
@@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@titlepage
@title Ledger: Command-Line Accounting
@subtitle For Version 3.0 of Ledger
-@subtitle Draft Manual Time-stamp: <2011-10-21 21:33 (cpearls)>
+@subtitle Draft Manual Time-stamp: <2011-10-26 15:20 (cpearls)>
@author John Wiegley
@end titlepage
@@ -72,7 +72,7 @@ twinkling in their father's CRT.
* Principles of Accounting::
* Keeping a Journal::
* Command-line Syntax::
-* Basic Reporting Commands::
+* Reporting Commands::
* Budgeting and Forecasting::
* Value Expressions::
* Format Strings::
@@ -2478,7 +2478,7 @@ doing it.
-@node Command-line Syntax, Basic Reporting Commands, Keeping a Journal, Top
+@node Command-line Syntax, Reporting Commands, Keeping a Journal, Top
@chapter Command-line Syntax
@@ -2570,7 +2570,7 @@ know which version of ledger you are using.
@option{--file FILE} (@option{-f FILE}) reads FILE as a ledger file.
This command may be used multiple times.
Typically, the environment variable
-@env{Ledger_FILE} is set, rather than using this command-line option.
+@env{LEDGER_FILE} is set, rather than using this command-line option.
@option{--output FILE} (@option{-o FILE}) redirects output from any
command to @var{FILE}. By default, all output goes to standard
@@ -2594,10 +2594,10 @@ precedence over settings in the init file.
@option{--cache FILE} identifies FILE as the default binary cache
file. That is, if the ledger files to be read are specified using the
-environment variable @env{Ledger_FILE}, then whenever a command is
+environment variable @env{LEDGER_FILE}, then whenever a command is
finished a binary copy will be written to the specified cache, to
speed up the loading time of subsequent queries. This filename can
-also be given using the environment variable @env{Ledger_CACHE}, or by
+also be given using the environment variable @env{LEDGER_CACHE}, or by
putting the option into your init file. The @option{--no-cache}
option causes Ledger to always ignore the binary cache.
@@ -2719,7 +2719,7 @@ Valid Ledger invocations look like:
ledger [OPTIONS] <COMMAND> <SEARCH-TERMS>
@end smallexample
-Where @samp{COMMAND} is any command verb (@pxref{Basic Reporting Commands}), @samp{OPTIONS} can occur
+Where @samp{COMMAND} is any command verb (@pxref{Reporting Commands}), @samp{OPTIONS} can occur
anywhere, and @samp{SEARCH-TERM} is one or more of the following:
@smallexample
@@ -2807,7 +2807,7 @@ would print all but the first five).
@option{--pager} tells Ledger to pass its output to the given pager
program---very useful when the output is especially long. This
-behavior can be made the default by setting the @env{Ledger_PAGER}
+behavior can be made the default by setting the @env{LEDGER_PAGER}
environment variable.
@option{--average} (@option{-A}) reports the average posting
@@ -2861,7 +2861,7 @@ format used by reports. The default uses a date like 2004/08/01,
which represents the default date format of @samp{%Y/%m/%d}. To
change the way dates are printed in general, the easiest way is to put
@option{--date-format FORMAT} in the Ledger initialization file
-@file{~/.ledgerrc} (or the file referred to by @env{Ledger_INIT}).
+@file{~/.ledgerrc} (or the file referred to by @env{LEDGER_INIT}).
@option{--format STR} (@option{-F STR}) sets the reporting format for
whatever report ledger is about to make. @xref{Format Strings}.
@@ -2908,7 +2908,7 @@ and expecting that script to return a value understood by ledger. A
sample implementation of a @command{getquote} script, implemented in
Perl, is provided in the distribution. Downloaded quote price are
then appended to the price database, usually specified using the
-environment variable @env{Ledger_PRICE_DB}.
+environment variable @env{LEDGER_PRICE_DB}.
There are several different ways that ledger can report the totals it
displays. The most flexible way to adjust them is by using value
@@ -2936,7 +2936,7 @@ a price history.
Every option to ledger may be set using an environment variable. If
an option has a long name such @option{--this-option}, setting the
-environment variable @env{Ledger_THIS_OPTION} will have the same
+environment variable @env{LEDGER_THIS_OPTION} will have the same
affect as specifying that option on the command-line. Options on the
command-line always take precedence over environment variable
settings, however.
@@ -3038,33 +3038,48 @@ weekly last august
@end smallexample
-@node Basic Reporting Commands, Budgeting and Forecasting, Command-line Syntax, Top
-@chapter Basic Reporting Commands
+@node Reporting Commands, Budgeting and Forecasting, Command-line Syntax, Top
+@chapter Reporting Commands
+@menu
+* Primary Financial Reports::
+* Reports in other formats::
+* Reports about your Journals::
+* Developer Commands::
+@end menu
+
+@node Primary Financial Reports, Reports in other formats, Reporting Commands, Reporting Commands
+@section Primary Financial Reports
+
@menu
* balance::
+* equity::
* register::
* print::
-* output::
-* xml::
-* emacs::
-* equity::
-* prices::
-* xact::
-* payees::
-* accounts::
@end menu
-@node balance, register, Basic Reporting Commands, Basic Reporting Commands
-@section balance
+@node balance, equity, Primary Financial Reports, Primary Financial Reports
+@subsection balance
The @command{balance} command reports the current balance of all
accounts. It accepts a list of optional regexps, which confine the
balance report to the matching accounts. If an account contains
multiple types of commodities, each commodity's total is reported
separately.
+@node equity, register, balance, Primary Financial Reports
+@subsection equity
+
+The @command{equity} command prints out accounts balances as if they
+were transactions. This makes it easy to establish the starting balances
+for an account, such as when @ref{Archiving Previous Years}.
-@node register, print, balance, Basic Reporting Commands
-@section register
+
+@menu
+* register::
+* print::
+@end menu
+
+@node register, print, equity, Primary Financial Reports
+@subsection register
The @command{register} command displays all the postings occurring
in a single account, line by line. The account regexp must be
@@ -3084,8 +3099,8 @@ included in the Ledger distribution. The only requirement is that you
add either @option{-j} or @option{-J} to your register command, in
order to plot either the amount or total column, respectively.
-@node print, output, register, Basic Reporting Commands
-@section print
+@node print, , register, Primary Financial Reports
+@subsection print
The @command{print} command prints out ledger transactions in a textual
format that can be parsed by Ledger. They will be properly formatted,
@@ -3096,52 +3111,195 @@ postings which match in some way to be printed.
The @command{print} command can be a handy way to clean up a ledger
file whose formatting has gotten out of hand.
-@node output, xml, print, Basic Reporting Commands
-@section output
+@node Reports in other formats, Reports about your Journals, Primary Financial Reports, Reporting Commands
+@section Reports in other formats
+@menu
+* csv::
+* emacs::
+* org::
+* pricemap::
+* xml::
+* prices and pricedb::
+@end menu
+
+@node csv, emacs, Reports in other formats, Reports in other formats
+@subsection csv
-The @command{output} command is very similar to the @command{print}
-command, except that it attempts to replicate the specified ledger
-file exactly. The format of the command is:
+@node emacs, org, csv, Reports in other formats
+@subsection emacs
+
+The @command{emacs} command outputs results in a form that can be read
+directly by Emacs Lisp. The format of the sexp is:
@smallexample
-ledger -f FILENAME output FILENAME
+((BEG-POS CLEARED DATE CODE PAYEE
+ (ACCOUNT AMOUNT)...) ; list of postings
+ ...) ; list of transactions
@end smallexample
-Where @file{FILENAME} is the name of the ledger file to output. The
-reason for specifying this command is that only transactions contained
-within that file will be output, and not an included transactions (as can
-happen with the @command{print} command).
+@node org, pricemap, emacs, Reports in other formats
+@subsection org
+The @code{org} command produces a journal file suitable for use in the
+emacs org mode. More details on using org mode can be found at
+@url{http://www.orgmode.org}.
-@node xml, emacs, output, Basic Reporting Commands
-@section xml
+@node pricemap, xml, org, Reports in other formats
+@subsection pricemap
-The @command{xml} command outputs results similar to what
-@command{print} and @command{register} display, but as an XML form.
-This data can then be read in and processed. Use the
-@option{--totals} option to include the running total with each
-posting.
+@node xml, prices and pricedb, pricemap, Reports in other formats
+@subsection xml
-@node emacs, equity, xml, Basic Reporting Commands
-@section emacs
+By default, Ledger uses a human-readable data format, and displays its
+reports in a manner meant to be read on screen. For the purpose of
+writing tools which use Ledger, however, it is possible to read and
+display data using XML. This section documents that format.
-The @command{emacs} command outputs results in a form that can be read
-directly by Emacs Lisp. The format of the sexp is:
+The general format used for Ledger data is:
@smallexample
-((BEG-POS CLEARED DATE CODE PAYEE
- (ACCOUNT AMOUNT)...) ; list of postings
- ...) ; list of transactions
+<?xml version="1.0"?>
+<ledger>
+ <xact>...</xact>
+ <xact>...</xact>
+ <xact>...</xact>...
+</ledger>
@end smallexample
-@node equity, prices, emacs, Basic Reporting Commands
-@section equity
+The data stream is enclosed in a @samp{ledger} tag, which contains a
+series of one or more transactions. Each @samp{xact} describes the transaction
+and contains a series of one or more postings:
-The @command{equity} command prints out accounts balances as if they
-were transactions. This makes it easy to establish the starting balances
-for an account, such as when @ref{Archiving Previous Years}.
+@smallexample
+<xact>
+ <en:date>2004/03/01</en:date>
+ <en:cleared/>
+ <en:code>100</en:code>
+ <en:payee>John Wiegley</en:payee>
+ <en:postings>
+ <posting>...</posting>
+ <posting>...</posting>
+ <posting>...</posting>...
+ </en:postings>
+</xact>
+@end smallexample
-@node prices, xact, equity, Basic Reporting Commands
-@section prices
+The date format for @samp{en:date} is always @samp{YYYY/MM/DD}. The
+@samp{en:cleared} tag is optional, and indicates whether the
+posting has been cleared or not. There is also an
+@samp{en:pending} tag, for marking pending postings. The
+@samp{en:code} and @samp{en:payee} tags both contain whatever text the
+user wishes.
+
+After the initial transaction data, there must follow a set of postings
+marked with @samp{en:postings}. Typically these postings will
+all balance each other, but if not they will be automatically balanced
+into an account named @samp{<Unknown>}.
+
+Within the @samp{en:postings} tag is a series of one or more
+@samp{posting}'s, which have the following form:
+
+@smallexample
+<posting>
+ <tr:account>Expenses:Computer:Hardware</tr:account>
+ <tr:amount>
+ <value type="amount">
+ <amount>
+ <commodity flags="PT">$</commodity>
+ <quantity>90.00</quantity>
+ </amount>
+ </value>
+ </tr:amount>
+</posting>
+@end smallexample
+
+This is a basic posting. It may also be begin with
+@samp{tr:virtual} and/or @samp{tr:generated} tags, to indicate virtual
+and auto-generated postings. Then follows the @samp{tr:account}
+tag, which contains the full name of the account the posting is
+related to. Colons separate parent from child in an account name.
+
+Lastly follows the amount of the posting, indicated by
+@samp{tr:amount}. Within this tag is a @samp{value} tag, of which
+there are four different kinds, each with its own format:
+
+@enumerate
+@item boolean
+@item integer
+@item amount
+@item balance
+@end enumerate
+
+The format of a boolean value is @samp{true} or @samp{false}
+surrounded by a @samp{boolean} tag, for example:
+
+@smallexample
+<boolean>true</boolean>
+@end smallexample
+
+The format of an integer value is the numerical value surrounded by an
+@samp{integer} tag, for example:
+
+@smallexample
+<integer>12036</integer>
+@end smallexample
+
+The format of an amount contains two members, the commodity and the
+quantity. The commodity can have a set of flags that indicate how to
+display it. The meaning of the flags (all of which are optional) are:
+
+@table @strong
+@item P
+The commodity is prefixed to the value.
+@item S
+The commodity is separated from the value by a space.
+@item T
+Thousands markers are used to display the amount.
+@item E
+The format of the amount is European, with period used as a thousands
+marker, and comma used as the decimal point.
+@end table
+
+The actual quantity for an amount is an integer of arbitrary size.
+Ledger uses the GNU multi-precision math library to handle such
+values. The XML format assumes the reader to be equally capable.
+Here is an example amount:
+
+@smallexample
+<value type="amount">
+ <amount>
+ <commodity flags="PT">$</commodity>
+ <quantity>90.00</quantity>
+ </amount>
+</value>
+@end smallexample
+
+Lastly, a balance value contains a series of amounts, each with a
+different commodity. Unlike the name, such a value does need to
+balance. It is called a balance because it sums several amounts. For
+example:
+
+@smallexample
+<value type="balance">
+ <balance>
+ <amount>
+ <commodity flags="PT">$</commodity>
+ <quantity>90.00</quantity>
+ </amount>
+ <amount>
+ <commodity flags="TE">DM</commodity>
+ <quantity>200.00</quantity>
+ </amount>
+ </balance>
+</value>
+@end smallexample
+
+That is the extent of the XML data format used by Ledger. It will
+output such data if the @command{xml} command is used, and can read
+the same data.
+
+
+@node prices and pricedb, , xml, Reports in other formats
+@subsection prices and pricedb
The @command{prices} command displays the price history for matching
commodities. The @option{-A} flag is useful with this report, to
@@ -3149,15 +3307,44 @@ display the running average price, or @option{-D} to show each price's
deviation from that average.
There is also a @command{pricedb} command which outputs the same
-information as @command{prices}, but does in a format that can be
-parsed by Ledger.
+information as @command{prices}, but does in a format that can be parsed
+by Ledger. This is useful for generating and tidying up pricedb
+databasefiles.
-@node xact, payees, prices, Basic Reporting Commands
-@section xact
-The @command{xact} commands simplifies the creation of new transactions.
-It works on the principle that 80% of all postings are variants of
-earlier postings. Here's how it works:
+@node Reports about your Journals, Developer Commands, Reports in other formats, Reporting Commands
+@section Reports about your Journals
+
+@menu
+* accounts::
+* convert::
+* commodities::
+* entry and xact::
+* payees::
+@end menu
+
+@node accounts, convert, Reports about your Journals, Reports about your Journals
+@subsection accounts
+
+The @command{accounts} reports all of the accounts in the journal.
+Following the command with a regular expression will limit the output to
+accounts matching the regex.
+
+
+@node convert, commodities, accounts, Reports about your Journals
+@subsection convert
+
+@node commodities, entry and xact, convert, Reports about your Journals
+@subsection commodities
+Report all commodities present in the journals under consideration.
+
+
+@node entry and xact, payees, commodities, Reports about your Journals
+@subsection entry and xact
+
+The @code{entry} and @command{xact} commands simplify the creation of
+new transactions. It works on the principle that 80% of all postings
+are variants of earlier postings. Here's how it works:
Say you currently have this posting in your ledger file:
@@ -3173,7 +3360,7 @@ Italiano} again. The exact amounts are different, but the overall
form is the same. With the @command{xact} command you can type:
@smallexample
-ledger xact 2004/4/9 viva food 11 tips 2.50
+ledger entry 2004/4/9 viva food 11 tips 2.50
@end smallexample
This produces the following output:
@@ -3191,39 +3378,78 @@ be similar to that earlier posting. If Ledger does not succeed in
generating a new transaction, an error is printed and the exit code is set
to @samp{1}.
-There is a shell script in the distribution's @file{scripts} directory
-called @file{xact}, which simplifies the task of adding a new transaction
-to your ledger. It launches @command{vi} to confirm that the transaction
-looks appropriate.
-
Here are a few more examples of the @command{xact} command, assuming
the above journal transaction:
@smallexample
-ledger xact 4/9 viva 11.50
-ledger xact 4/9 viva 11.50 checking # (from `checking')
-ledger xact 4/9 viva food 11.50 tips 8
+ledger entry 4/9 viva 11.50
+ledger entry 4/9 viva 11.50 checking # (from `checking')
+ledger entry 4/9 viva food 11.50 tips 8
ledger xact 4/9 viva food 11.50 tips 8 cash
ledger xact 4/9 viva food $11.50 tips $8 cash
ledger xact 4/9 viva dining "DM 11.50"
@end smallexample
-@node payees, accounts, xact, Basic Reporting Commands
-@section payees
-The @command{payees} reports all of the unique payees in the journal.
+@command{xact} is identical to @command{entry} and is provide for
+backwards compatibility with Ledger 2.X.
-@node accounts, , payees, Basic Reporting Commands
-@section accounts
+@node payees, , entry and xact, Reports about your Journals
+@subsection payees
+The @command{payees} reports all of the unique payees in the journal. To filter the payes displayed you must use the @@ prefix:
+@smallexample
+macbook-2:$ ledger payees '@@Tar.+t'
+El Dorade Restaraunt
+My Big Fat Greek Restaraunt
+Target
+macbook-2:$
+@end smallexample
+
+
+
+
+@node Developer Commands, , Reports about your Journals, Reporting Commands
+@section Developer Commands
+@menu
+* echo::
+* reload::
+* source::
+* Pre-commands::
+@end menu
+
+@node echo, reload, Developer Commands, Developer Commands
+@subsection echo
+This command simply echos its argument back to the output.
+
+
+@node reload, source, echo, Developer Commands
+@subsection reload
+Forces ledger to reload any journal files. This function exists to
+support external programs controlling a running ledger process and does
+nothing for a command line user.
+
+@node source, Pre-commands, reload, Developer Commands
+@subsection source
+
+@node Pre-commands, , source, Developer Commands
+@subsection Pre-Commands
+@table @code
+@item args
+@item eval
+@item expr
+@item format
+@item generate
+@item parse
+@item period
+@item query
+@item template
+@end table
-The @command{accounts} reports all of the accounts in the journal.
-Following the command with a regular expression will limit the output to
-accounts matching the regex.
@menu
* Budgeting and Forecasting::
@end menu
-@node Budgeting and Forecasting, Value Expressions, Basic Reporting Commands, Top
+@node Budgeting and Forecasting, Value Expressions, Reporting Commands, Top
@chapter Budgeting and Forecasting
@menu
@@ -3556,6 +3782,7 @@ Useful specifying a date in plain terms. For example, you could say
* Basics::
* Format Expressions::
* --balance-format::
+* New formatting codes::
@end menu
@node Basics, Format Expressions, Format Strings, Format Strings
@@ -3710,19 +3937,172 @@ what is printed for all subsequent postings. If not used, the
same format string is used for all postings.
@end table
-@node --balance-format, , Format Expressions, Format Strings
+@node --balance-format, New formatting codes, Format Expressions, Format Strings
@section --balance-format
As an example of how flexible the --format strings can be, the default balance format looks like this:
@smallexample
- "%(justify(scrub(display_total), 20, -1, true, color))''
+ "%(justify(scrub(display_total), 20, -1, true, color))"
" %(!options.flat ? depth_spacer : \"\")"
"%-(ansify_if(partial_account(options.flat), blue if color))\n%/"
"%$1\n%/"
"--------------------\n"
@end smallexample
+@node New formatting codes, , --balance-format, Format Strings
+@section New Formatting Codes
+
+@menu
+* Field Widths::
+* Colors::
+* Quantities and Calculations::
+* Dates::
+* Text Formatting::
+* Misc::
+@end menu
+
+@node Field Widths, Colors, New formatting codes, New formatting codes
+@subsection Field Widths
+@multitable @columnfractions .3 .2 .5
+@item @strong{Function} @tab @strong{Abbrev.} @tab @strong{Description}
+@item @code{date_width}
+@item @code{payee_width}
+@item @code{account_width}
+@item @code{amount_width}
+@item @code{total_width}
+@end multitable
+
+@node Colors, Quantities and Calculations, Field Widths, New formatting codes
+@subsection Colors
+
+The character based formatting ledger can do is limited to the ANSI terminal character colors and font highlight in a normal TTY seesion.
+@multitable @columnfractions .3 .3 .3
+@item @code{red} @tab @code{magenta} @tab @code{bold}
+@item @code{green } @tab @code{cyan} @tab @code{underline}
+@item @code{yellow } @tab @code{white} @tab @code{blink}
+@item @code{blue }
+@end multitable
+
+
+
+@node Quantities and Calculations, Dates, Colors, New formatting codes
+@subsection Quantities and Calcuations
+
+
+
+@multitable @columnfractions .3 .2 .5
+@item @strong{Function} @tab @strong{Abbrev.} @tab @strong{Description}
+@item @code{amount_expr } @tab @code{} @tab
+@item @code{abs} @tab @code{U} @tab
+@item @code{commodity } @tab @code{} @tab
+@item @code{display_amount } @tab @code{t} @tab
+@item @code{display_total } @tab @code{T} @tab
+@item @code{floor } @tab @code{} @tab
+@item @code{get_at } @tab @code{} @tab
+@item @code{is_seq } @tab @code{} @tab
+@item @code{market } @tab @code{P} @tab
+@item @code{percent } @tab @code{} @tab
+@item @code{price } @tab @code{} @tab
+@item @code{quantity } @tab @code{} @tab
+@item @code{rounded } @tab @code{} @tab
+@item @code{truncated } @tab @code{} @tab
+@item @code{total_expr } @tab @code{} @tab
+@item @code{top_amount } @tab @code{} @tab
+@item @code{to_boolean } @tab @code{} @tab
+@item @code{to_int } @tab @code{} @tab
+@item @code{to_amount } @tab @code{} @tab
+@item @code{to_balance } @tab @code{} @tab
+@item @code{unrounded } @tab @code{} @tab
+@end multitable
+
+@node Dates, Text Formatting, Quantities and Calculations, New formatting codes
+@subsection Dates
+
+@multitable @columnfractions .3 .2 .5
+@item @strong{Function} @tab @strong{Abbrev.} @tab @strong{Description}
+@item @code{date } @tab @code{} @tab
+@item @code{format_date } @tab @code{} @tab
+@item @code{now } @tab @code{} @tab --> d m
+@item @code{today } @tab @code{} @tab
+@item @code{to_datetime } @tab @code{} @tab
+@item @code{to_date } @tab @code{} @tab
+@item @code{value_date } @tab @code{} @tab
+@end multitable
+
+@node Text Formatting, Misc, Dates, New formatting codes
+@subsection Text Formatting
+@subsubsection Summary
+@multitable @columnfractions .6 .4
+@item @strong{Function} @tab @strong{Description}
+@item @code{ansify_if(str,color) } @tab Colorize the string
+@item @code{justify(str, fwidth, lwidth, right, colorize) } @tab Right or left justify the string.
+@item @code{join(str) } @tab Remove line feeds from the input string. Mainly used internaally for org-mode output
+@item @code{quoted(str) } @tab Returns @code{"<str>"}.
+@item @code{strip } @tab @code{Removes additional annotations from values.}
+@item @code{scrub } @tab @code{S}
+@item @code{should_bold } @tab @code{}
+@end multitable
+@subsubsection Detailed Descriptions
+@table @code
+@item ansify_if(value, color)
+Surrounds the string representing value with ANSI codes to give it @code{color} on an TTY display. Has no effect if directed to a file.
+@item justify(value, first_width, latter_width, right_justify, colorize)
+Right or left justify the string representing @code{value}. The width of the field in the first line is given by @code{first_width}. For subsequent lines the width is given by @code{latterwidth}. If @code{latter_width=-1}, then @code{first_width} is use for all lines. If @code{right_justify=true} then the field is right justify within the width of the field. If it is @code{false}, then the field is left justified and padded to the full width of the field. If @code{colorize} is true then ledger will hone color settings.
+@item join(str)
+Replaces line feeds in str with @code{\n}.
+@item quoted(str)
+Return str surounded by double quotes, @code{"<str>"}.
+@item strip(value)
+Values can have numerous annotations, such as effective dates and lot prices. @code{strip} removes these annotations.
+@end table
+@node Misc, , Text Formatting, New formatting codes
+@subsection Miscellaneous
+@multitable @columnfractions .3 .2 .5
+@item @strong{Function} @tab @strong{Abbrev.} @tab @strong{Description}
+@item @code{amount_expr } @tab @code{} @tab
+@item @code{abs } @tab @code{} @tab --> U
+@item @code{commodity } @tab @code{} @tab
+@item @code{display_amount } @tab @code{} @tab --> t
+@item @code{display_total } @tab @code{} @tab --> T
+@item @code{date } @tab @code{} @tab
+@item @code{format_date } @tab @code{} @tab
+@item @code{format } @tab @code{} @tab
+@item @code{floor } @tab @code{} @tab
+@item @code{get_at } @tab @code{} @tab
+@item @code{is_seq } @tab @code{} @tab
+@item @code{justify } @tab @code{} @tab
+@item @code{join } @tab @code{} @tab
+@item @code{market --> P } @tab @code{} @tab
+@item @code{null } @tab @code{} @tab
+@item @code{now --> d m } @tab @code{} @tab
+@item @code{options } @tab @code{} @tab
+@item @code{post } @tab @code{} @tab
+@item @code{percent } @tab @code{} @tab
+@item @code{price } @tab @code{} @tab
+@item @code{print } @tab @code{} @tab
+@item @code{quoted } @tab @code{} @tab
+@item @code{quantity } @tab @code{} @tab
+@item @code{rounded } @tab @code{} @tab
+@item @code{scrub } @tab @code{} @tab
+@item @code{strip --> S } @tab @code{} @tab
+@item @code{should_bold } @tab @code{} @tab
+@item @code{truncated } @tab @code{} @tab
+@item @code{total_expr } @tab @code{} @tab
+@item @code{today } @tab @code{} @tab
+@item @code{top_amount } @tab @code{} @tab
+@item @code{to_boolean } @tab @code{} @tab
+@item @code{to_int } @tab @code{} @tab
+@item @code{to_datetime } @tab @code{} @tab
+@item @code{to_date } @tab @code{} @tab
+@item @code{to_amount } @tab @code{} @tab
+@item @code{to_balance } @tab @code{} @tab
+@item @code{to_spring } @tab @code{} @tab
+@item @code{to_mask } @tab @code{} @tab
+@item @code{to_sequence } @tab @code{} @tab
+@item @code{unrounded } @tab @code{} @tab
+@item @code{value_date } @tab @code{} @tab
+@end multitable
@node Journal File Format, Extending with Python, Format Strings, Top
@chapter Journal File Format for Developers