summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorCraig Earls <enderw88@gmail.com>2011-09-28 12:06:47 -0700
committerCraig Earls <enderw88@gmail.com>2011-09-28 12:06:47 -0700
commit49f9a28715b2813db47d6dc7302be6ca3cc482d3 (patch)
tree5af73ab93ab2d2a08ee23077995b944ae6168f3a /doc
parenta45ae5d8def88f7e37eae622d179a7b0b58adb84 (diff)
downloadfork-ledger-49f9a28715b2813db47d6dc7302be6ca3cc482d3.tar.gz
fork-ledger-49f9a28715b2813db47d6dc7302be6ca3cc482d3.tar.bz2
fork-ledger-49f9a28715b2813db47d6dc7302be6ca3cc482d3.zip
Established info node consistency
Diffstat (limited to 'doc')
-rw-r--r--doc/L3-FormatStrings.texi146
-rw-r--r--doc/L3-Introduction.texi28
-rw-r--r--doc/L3-Journal.texi58
-rw-r--r--doc/L3-Main.texi18
-rw-r--r--doc/L3-Principles.texi1
-rw-r--r--doc/L3-Python.texi2
-rw-r--r--doc/L3-Reporting.texi8
-rw-r--r--doc/L3-Syntax.texi432
-rw-r--r--doc/L3-ValueExpressions.texi229
9 files changed, 484 insertions, 438 deletions
diff --git a/doc/L3-FormatStrings.texi b/doc/L3-FormatStrings.texi
index c7fff08c..ee56891f 100644
--- a/doc/L3-FormatStrings.texi
+++ b/doc/L3-FormatStrings.texi
@@ -1,3 +1,149 @@
@c -*-texinfo-*-
+@node Format Strings, Journal File Format, Period Expressions, Top
@chapter Format Strings
+
+Format strings may be used to change the output format of reports.
+They are specified by passing a formatting string to the
+@option{--format} (@option{-F}) option. Within that string,
+constructs are allowed which make it possible to display the various
+parts of an account or posting in custom ways.
+
+Within a format strings, a substitution is specified using a percent
+character (@samp{%}). The basic format of all substitutions is:
+
+@example
+%[-][MIN WIDTH][.MAX WIDTH]EXPR
+@end example
+
+If the optional minus sign (@samp{-}) follows the percent character,
+whatever is substituted will be left justified. The default is right
+justified. If a minimum width is given next, the substituted text
+will be at least that wide, perhaps wider. If a period and a maximum
+width is given, the substituted text will never be wider than this,
+and will be truncated to fit. Here are some examples:
+
+@example
+%-P a transaction's payee, left justified
+%20P The same, right justified, at least 20 chars wide
+%.20P The same, no more than 20 chars wide
+%-.20P Left justified, maximum twenty chars wide
+@end example
+
+The expression following the format constraints can be a single
+letter, or an expression enclosed in parentheses or brackets. The
+allowable expressions are:
+
+@table @code
+@item %
+Inserts a percent sign.
+
+@item t
+Inserts the results of the value expression specified by @option{-t}.
+If @option{-t} was not specified, the current report style's value
+expression is used.
+
+@item T
+Inserts the results of the value expression specified by @option{-T}.
+If @option{-T} was not specified, the current report style's value
+expression is used.
+
+@item |
+Inserts a single space. This is useful if a width is specified, for
+inserting a certain number of spaces.
+
+@item _
+Inserts a space for each level of an account's depth. That is, if an
+account has two parents, this construct will insert two spaces. If a
+minimum width is specified, that much space is inserted for each level
+of depth. Thus @samp{%5_}, for an account with four parents, will
+insert twenty spaces.
+
+@item (EXPR)
+Inserts the amount resulting from the value expression given in
+parentheses. To insert five times the total value of an account, for
+example, one could say @samp{%12(5*O)}. Note: It's important to put
+the five first in that expression, so that the commodity doesn't get
+stripped from the total.
+
+@item [DATEFMT]
+Inserts the result of formatting a posting's date with a date
+format string, exactly like those supported by @code{strftime}. For
+example: @samp{%[%Y/%m/%d %H:%M:%S]}.
+
+@item S
+Insert the pathname of the file from which the transaction's data was read.
+
+@item B
+Inserts the beginning character position of that transaction within the file.
+
+@item b
+Inserts the beginning line of that transaction within the file.
+
+@item E
+Inserts the ending character position of that transaction within the file.
+
+@item e
+Inserts the ending line of that transaction within the file.
+
+@item D
+By default, this is the same as @samp{%[%Y/%m%/d]}. The date format
+used can be changed at any time with the @option{-y} flag, however.
+Using @samp{%D} gives the user more control over the way dates are
+output.
+
+@item d
+This is the same as the @samp{%D} option, unless the transaction has an
+effective date, in which case it prints
+@samp{[ACTUAL_DATE=EFFECTIVE_DATE]}.
+
+@item X
+If a posting has been cleared, this inserts @samp{*} followed by a
+space; otherwise nothing is inserted.
+
+@item Y
+This is the same as @samp{%X}, except that it only displays a state
+character if all of the member postings have the same state.
+
+@item C
+Inserts the checking number for a transaction, in parentheses, followed by
+a space; if none was specified, nothing is inserted.
+
+@item P
+Inserts the payee related to a posting.
+
+@item a
+Inserts the optimal short name for an account. This is normally used
+in balance reports. It prints a parent account's name if that name
+has not been printed yet, otherwise it just prints the account's name.
+
+@item A
+Inserts the full name of an account.
+
+@item W
+This is the same as @samp{%A}, except that it first displays the
+posting's state @emph{if the transaction's posting states are not
+all the same}, followed by the full account name. This is offered as
+a printing optimization, so that combined with @samp{%Y}, only the
+minimum amount of state detail is printed.
+
+@item o
+Inserts the ``optimized'' form of a posting's amount. This is
+used by the print report. In some cases, this inserts nothing; in
+others, it inserts the posting amount and its cost. It's use is
+not recommend unless you are modifying the print report.
+
+@item n
+Inserts the note associated with a posting, preceded by two spaces
+and a semi-colon, if it exists. Thus, no none becomes an empty
+string, while the note @samp{foo} is substituted as @samp{ ; foo}.
+
+@item N
+Inserts the note associated with a posting, if one exists.
+
+@item /
+The @samp{%/} construct is special. It separates a format string
+between what is printed for the first posting of a transaction, and
+what is printed for all subsequent postings. If not used, the
+same format string is used for all postings.
+@end table
diff --git a/doc/L3-Introduction.texi b/doc/L3-Introduction.texi
index 6b0167d8..b393ce06 100644
--- a/doc/L3-Introduction.texi
+++ b/doc/L3-Introduction.texi
@@ -1,7 +1,8 @@
@c -*-texinfo-*-
-@chapter Introduction
+@node Introduction to Ledger, Principles of Accounting, ,Top
+@chapter Introduction to Ledger
-@ledgerprog@ is an accounting tool with the moxie to exist. It provides no
+LEDGER is an accounting tool with the moxie to exist. It provides no
bells or whistles, and returns the user to the days before user
interfaces were even a twinkling in their father's CRT.
@@ -78,9 +79,9 @@ deal with multiple accounts.
Here is a good place for an aside on the use of the word `account'.
Most private people consider an account to be something that holds money
-at an institution for them. @ledgerprog@ uses a more general definition
+at an institution for them. LEDGER uses a more general definition
of the word. An account is anywhere money can go. Other finance
-programs use ``categories'', @ledgerprog@ uses accounts. So, for
+programs use ``categories'', LEDGER uses accounts. So, for
example, if you buy some groceries at Trader Joe's then more groceries
at Whole Foods Markets you might assign the transactions like this
@smallexample
@@ -96,19 +97,19 @@ the payees were different. You can set up your accounts in any way you
choose.
Enter the beauty of computerized accounting. The purpose of the
-@ledgerprog@ program is to make general journal accounting simple, by keeping
+LEDGER program is to make general journal accounting simple, by keeping
track of the balances for you. Your only job is to enter the
-postings. If a posting does not balance, @ledgerprog@ displays an
+postings. If a posting does not balance, LEDGER displays an
error and indicates the incorrect posting.@footnote{In some
special cases, it automatically balances this transaction for you.}
-In summary, there are two aspects of @ledgerprog@ use: updating the journal
-data file, and using the @ledgerprog@ tool to view the summarized result of
+In summary, there are two aspects of LEDGER use: updating the journal
+data file, and using the LEDGER tool to view the summarized result of
your transactions.
And just for the sake of example---as a starting point for those who
want to dive in head-first---here are the journal transactions from above,
-formatted as the @ledgerprog program wishes to see them:
+formatted as the LEDGER program wishes to see them:
@smallexample
2004/09/29 Pacific Bell
@@ -125,7 +126,7 @@ $ ledger -f ledger.dat register checking
$ ledger -f ledger.dat register bell
@end example
-An important difference between @ledgerprog@ and other finance packages is
+An important difference between LEDGER and other finance packages is
that journal will never alter your input file. You can create and edit
that file in any way you prefer, but journal is only for analyzing the
data, not for altering it.
@@ -135,7 +136,7 @@ data, not for altering it.
@section Building the program
-@ledgerprog@ is written in ANSI C++, and should compile on any platform. It
+LEDGER is written in ANSI C++, and should compile on any platform. It
depends on the GNU multiprecision integer library (libgmp), and the
Perl regular expression library (libpcre). It was developed using GNU
make and gcc 3.3, on a PowerBook running OS/X.
@@ -149,8 +150,8 @@ enter these commands:
@section Getting help
-If you need help on how to use @ledgerprog, or run into problems, you can
-join the @ledgerprog@ mailing list at the following Web address:
+If you need help on how to use LEDGER, or run into problems, you can
+join the LEDGER mailing list at the following Web address:
@example
http://groups.google.com/group/ledger-cli
@@ -159,4 +160,3 @@ http://groups.google.com/group/ledger-cli
You can also find help at the @samp{#ledger} channel on the IRC server
@samp{irc.freenode.net}.
-@node Quick Reference, Ledger Tutorial, Introduction, Top
diff --git a/doc/L3-Journal.texi b/doc/L3-Journal.texi
index 1eb9afa6..419d1445 100644
--- a/doc/L3-Journal.texi
+++ b/doc/L3-Journal.texi
@@ -1,5 +1,6 @@
@c -*-texinfo-*-
+@node Keeping a Journal, Most Basic Entry, Principles of Accounting, Top
@chapter Keeping a Journal
The most important part of accounting is keeping a good journal. If you
@@ -7,33 +8,44 @@ have a good journal, tools can be written to work whatever mathematical
tricks you need to better understand your spending patterns. Without a
good journal, no tool, however smart, can help you.
-The @ledgerprog@ program aims at making journal transactions as simple as
+The LEDGER program aims at making journal transactions as simple as
possible. Since it is a command-line tool, it does not provide a user
interface for keeping a journal. If you like, you may use GnuCash to
-maintain your journal, in which case @ledgerprog@ will read
+maintain your journal, in which case LEDGER will read
GnuCash's data files directly. In that case, read the GnuCash manual
now, and skip to the next chapter.
If you are not using GnuCash, but a text editor to maintain your
-journal, read on. @ledgerprog@ has been designed to make data transactions as
+journal, read on. LEDGER has been designed to make data transactions as
simple as possible, by keeping the journal format easy, and also by
automagically determining as much information as possible based on the
nature of your transactions.
-For example, you do not need to tell @ledgerprog@ about the accounts you
-use. Any time @ledgerprog@ sees a posting involving an account it knows
+For example, you do not need to tell LEDGER about the accounts you
+use. Any time LEDGER sees a posting involving an account it knows
nothing about, it will create it@footnote{This also means if you
misspell an account it will end up getting counted separately from what
you intended. The provided Emacs major mode provides for automatically
filling in account names.}. If you use a commodity that is new to
-@ledgerprog@, it will create that commodity, and determine its display
+LEDGER, it will create that commodity, and determine its display
characteristics (placement of the symbol before or after the amount,
display precision, etc) based on how you used the commodity in the
posting.
+@menu
+* Most Basic Entry::
+* Commodities::
+* Structuring Your Accounts::
+* Transaction Notes and Tags::
+* File Format::
+* Archiving Previous Years ::
+* Ledger Tutorial ::
+@end menu
+
+@node Most Basic Entry, Commodities, Keeping a Journal, Keeping a Journal
@section The Most Basic Entry
-Here is the Pacific Bell example from above, given as a @ledgerprog@
+Here is the Pacific Bell example from above, given as a LEDGER
posting, with the additional of a check number:
@smallexample
@@ -44,8 +56,8 @@ posting, with the additional of a check number:
As you can see, it is very similar to what would be written on paper,
minus the computed balance totals, and adding in account names that work
-better with @ledgerprog@'s scheme of things. In fact, since
-@ledgerprog@ is smart about many things, you don't need to specify the
+better with LEDGER's scheme of things. In fact, since
+LEDGER is smart about many things, you don't need to specify the
balanced amount, if it is the same as the first line:
@smallexample
@@ -54,7 +66,7 @@ balanced amount, if it is the same as the first line:
Assets:Checking
@end smallexample
-For this transaction, @ledgerprog@ will figure out that $-23.00 must come from
+For this transaction, LEDGER will figure out that $-23.00 must come from
@samp{Assets:Checking} in order to balance the transaction.
Also note the structure of the account entries. There is an implied
@@ -69,15 +81,16 @@ indent and space out things exactly as shown. The only requirements are
that the start of the transaction (the date typically) is at the
beginning of the first line of the transaction, and the accounts are
indented by at least one space. If you omit the leading spaces in the
-account lines @ledgerprog@ will not count the transaction and will not
+account lines LEDGER will not count the transaction and will not
give an error. There must be at least two spaces, or a tab, between the
amount and the account. If you do not have adequate separation between
-the amount and the account @ledgerprog@ will give an error and stop
+the amount and the account LEDGER will give an error and stop
calculating}
+@node Commodities, Structuring Your Accounts, Most Basic Entry, Keeping a Journal
@section Commodities
-@ledgerprog@ is agnostic when it comes to how you value your accounts.
+LEDGER is agnostic when it comes to how you value your accounts.
Dollars, Euros, Pounds, Francs, etc. are just ``commodities''. Holdings
in stocks, bonds, mutual funds and other financial instrument can be
label using whatever is convenient for you (stock ticker symbols are
@@ -112,7 +125,7 @@ This says that $66.00 came out of checking and turned into 50 Euros. The
implied exchange rate was $1.32. Then 35 Euros was spent on Dinner in Munich.
-
+@node Structuring Your Accounts, Transaction Notes and Tags , Commodities ,Keeping a Journal
@section Structuring your Accounts
There really are no requirements for how you do this, but to preserve
@@ -126,8 +139,9 @@ places money sits, places money comes from and money you owe.
Starting the structure off this way will make it simpler for you to get
answers to the questions you really need to ask about your finances.
+@node Transaction Notes and Tags, File Format, Structuring Your Accounts, Keeping a Journal
@section Transaction Notes and Tags
-@ledgerprog@ 3.0 supports entry and transaction ``notes'', which may
+LEDGER 3.0 supports entry and transaction ``notes'', which may
contain new metadata and tag markers. Here's an example:
@smallexample
@@ -178,7 +192,7 @@ The group-by and sort functions also support tags:
@smallexample
ledger --group-by "tag('foo')" bal
@end smallexample
-Will produce a balalnce summary of all transanction with tag `foo' group by transactions wiht the same value for `foo'.
+Will produce a balance summary of all transanction with tag `foo' group by transactions wiht the same value for `foo'.
@smallexample
ledger reg --sort "tag('foo')" %foo
@@ -190,7 +204,7 @@ zero, are always ignored and are neither searched nor printed back.
-@node File format, , Value expressions, Quick Reference
+@node File Format, Command-line Syntax ,Transaction Notes and Tags, Keeping a Journal
@section File format
The ledger file format is quite simple, but also very flexible. It
@@ -273,7 +287,7 @@ ignored. Comments will not be returned in a ``print'' response.
If the semi colon is indented and occurs inside a transaction, it is
parsed as a persistent note for its preceding category. These notes or
tags can be used to augment to reporting and filtering capabilities of
-@ledgerprog.
+LEDGER.
@item Y
If a line begins with a capital Y, it denotes the year used for all
subsequent transactions that give a date without a year. The year should
@@ -320,7 +334,13 @@ C 1.00 Kb = 1024 bytes
@end example
@item i, o, b, h
-These four relate to timeclock support, which permits @ledgerprog@ to read
+These four relate to timeclock support, which permits LEDGER to read
timelog files. See the timeclock's documentation for more info on the
syntax of its timelog files.
@end table
+
+@node Archiving Previous Years , , ,Keeping a Journal
+@section Archiving Previous Years
+
+@node Ledger Tutorial , , ,Keeping a Journal
+@section Ledger Tutorial
diff --git a/doc/L3-Main.texi b/doc/L3-Main.texi
index 7f1c91f7..aabc0f34 100644
--- a/doc/L3-Main.texi
+++ b/doc/L3-Main.texi
@@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@titlepage
-@title @ledgerprog: Command-Line Accounting
+@title LEDGER: Command-Line Accounting
@author John Wiegley
@end titlepage
@@ -69,16 +69,28 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@insertcopying
@end ifnottex
+@menu
+* Introduction to Ledger::
+* Principles of Accounting::
+* Keeping a Journal::
+* Command-line Syntax::
+* Basic Reporting Commands::
+* Value Expressions::
+* Format Strings::
+* Journal File Format::
+* Extending with Python::
+@end menu
+
+
@c each chapter is in an idividual texi file included here
@include L3-Introduction.texi
@include L3-Principles.texi
@include L3-Journal.texi
-@include L3-Reporting.texi
@include L3-Syntax.texi
-@include L3-JournalFormat.texi
@include L3-Reporting.texi
@include L3-ValueExpressions.texi
@include L3-FormatStrings.texi
+@include L3-JournalFormat.texi
@include L3-Python.texi
@bye
diff --git a/doc/L3-Principles.texi b/doc/L3-Principles.texi
index 778cc52d..1de75967 100644
--- a/doc/L3-Principles.texi
+++ b/doc/L3-Principles.texi
@@ -1,3 +1,4 @@
@c -*-texinfo-*-
+@node Principles of Accounting, Keeping a Journal, Introduction to Ledger, Top
@chapter Principles of Accounting
diff --git a/doc/L3-Python.texi b/doc/L3-Python.texi
index ebb4d530..3f985237 100644
--- a/doc/L3-Python.texi
+++ b/doc/L3-Python.texi
@@ -1,3 +1,3 @@
@c -*-texinfo-*-
-
+@node Extending with Python, , Journal File Format, Top
@chapter Extending with Python
diff --git a/doc/L3-Reporting.texi b/doc/L3-Reporting.texi
index 7fea2fef..cb675aba 100644
--- a/doc/L3-Reporting.texi
+++ b/doc/L3-Reporting.texi
@@ -1,3 +1,11 @@
@c -*-texinfo-*-
+@node Basic Reporting Commands, Value Expressions, Command-line Syntax, Top
@chapter Basic Reporting Commands
+
+@menu
+* Budgeting and Forecasting::
+@end menu
+
+@node Budgeting and Forecasting, , ,Basic Reporting Commands
+@section Budgeting and Forecasting
diff --git a/doc/L3-Syntax.texi b/doc/L3-Syntax.texi
index 15e6e8f8..83bd1320 100644
--- a/doc/L3-Syntax.texi
+++ b/doc/L3-Syntax.texi
@@ -1,6 +1,17 @@
@c -*-texinfo-*-
-
+@node Command-line Syntax, Basic Reporting Commands, File Format, Top
@chapter Command-line Syntax
+
+
+@menu
+* Cookbook::
+* Quick Reference::
+* Commands::
+* Options::
+* Period Expressions::
+@end menu
+
+@node Cookbook, Quick Reference, Command-line Syntax, Command-line Syntax
@section Cookbook
@subsection Invoking Ledger
@@ -25,14 +36,14 @@ ledger register NFCUChecking --sort d -d 'd>[2011/04/01]' until 2011/05/25
(Liabilities:Tithe Owed) -1.0
@end example
-
+@node Quick Reference, Commands, Cookbook, Command-line Syntax
@section Quick Reference
-This chapter describes @ledgerprog's features and serves as a quick
+This chapter describes LEDGER's features and serves as a quick
reference. You may wish to survey this to get an overview before diving
in to the @ref{Ledger Tutorial} and more detailed examples that follow.
-@ledgerprog@ has a very simple command-line interface, named---enticingly
+LEDGER has a very simple command-line interface, named---enticingly
enough---@command{ledger}. It supports a few reporting commands, and
a large number of options for refining the output from those commands.
The basic syntax of any ledger command is:
@@ -63,16 +74,8 @@ There are many, many command options available with the
However, none of them are required to use the basic reporting
commands.
-@menu
-* Commands::
-* Options::
-* Period expressions::
-* Format strings::
-* Value expressions::
-* File format::
-@end menu
-@node Commands, Options, Quick Reference, Quick Reference
+@node Commands, Options, Quick Reference, Command-line Syntax
@section Commands
@subsection balance
@@ -99,14 +102,14 @@ always be the same as the current balance of that account.
If you have Gnuplot installed, you may plot the amount or running
total of any register by using the script @file{report}, which is
-included in the @ledgerprog@ distribution. The only requirement is that you
+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.
@subsection print
The @command{print} command prints out ledger transactions in a textual
-format that can be parsed by @ledgerprog@. They will be properly formatted,
+format that can be parsed by LEDGER. They will be properly formatted,
and output in the most economic form possible. The ``print'' command
also takes a list of optional regexps, which will cause only those
postings which match in some way to be printed.
@@ -152,7 +155,7 @@ directly by Emacs Lisp. The format of the sexp is:
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}.
+for an account, such as when @ref{Archiving Previous Years}.
@subsection prices
@@ -163,7 +166,7 @@ deviation from that average.
There is also a @command{pricesdb} command which outputs the same
information as @command{prices}, but does in a format that can be
-parsed by @ledgerprog@.
+parsed by LEDGER.
@subsection xact
@@ -199,7 +202,7 @@ This produces the following output:
It works by finding a past posting matching the regular expression
@samp{viva}, and assuming that any accounts or amounts specified will
-be similar to that earlier posting. If @ledgerprog@ does not succeed in
+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}.
@@ -220,7 +223,7 @@ ledger xact 4/9 viva food $11.50 tips $8 cash
ledger xact 4/9 viva dining "DM 11.50"
@end example
-@node Options, Period expressions, Commands, Quick Reference
+@node Options, Period Expressions, Commands, Command-line Syntax
@section Options
With all of the reports, command-line options are useful to modify the
@@ -285,7 +288,7 @@ 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
putting the option into your init file. The @option{--no-cache}
-option causes @ledgerprog@ to always ignore the binary cache.
+option causes LEDGER to always ignore the binary cache.
@option{--account NAME} (@option{-a NAME}) specifies the default
account which QIF file postings are assumed to relate to.
@@ -315,7 +318,7 @@ period separately, making it easy to see weekly, monthly, quarterly,
etc., posting totals. A period string can even specify the
beginning and end of the report range, using simple terms like ``last
june'' or ``next month''. For more using period expressions, see
-@ref{Period expressions}.
+@ref{Period Expressions}.
@option{--period-sort EXPR} sorts the postings within each
reporting period using the value expression @var{EXPR}. This is most
@@ -375,7 +378,7 @@ meet your budget. @option{--add-budget} also shows unbudgeted
postings, while @option{--unbudgeted} shows only those.
@option{--forecast} is a related option that projects your budget into
the future, showing how it will affect future balances.
-@xref{Budgeting and forecasting}.
+@xref{Budgeting and Forecasting}.
@option{--limit EXPR} (@option{-l EXPR}) limits which postings
take part in the calculations of a report.
@@ -384,7 +387,7 @@ take part in the calculations of a report.
used to calculate the ``value'' column in the @command{register}
report, the amount used to calculate account totals in the
@command{balance} report, and the values printed in the
-@command{equity} report. @xref{Value expressions}.
+@command{equity} report. @xref{Value Expressions}.
@option{--total EXPR} (@option{-T EXPR}) sets the value expression
used for the ``totals'' column in the @command{register} and
@@ -429,7 +432,7 @@ the values determined using the value expression @var{EXPR}. For
example, using @option{-S -UT} in the balance report will sort account
balances from greatest to least, using the absolute value of the
total. For more on how to use value expressions, see @ref{Value
-expressions}.
+Expressions}.
@option{--wide} (@option{-w}) causes the default @command{register}
report to assume 132 columns instead of 80.
@@ -442,7 +445,7 @@ negative amount is given, it will invert the meaning of the flag
(instead of the first five transactions being printed, for example, it
would print all but the first five).
-@option{--pager} tells @ledgerprog@ to pass its output to the given pager
+@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}
environment variable.
@@ -497,11 +500,11 @@ restricted to the reporting range (using @option{-d}).
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 @ledgerprog@ initialization file
+@option{--date-format FORMAT} in the LEDGER initialization file
@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}.
+whatever report ledger is about to make. @xref{Format Strings}.
There are also specific format commands for each report type:
@itemize
@@ -585,8 +588,8 @@ option settings in the file @file{~/.ledgerrc}, for example:
@end example
-@node Period expressions, Format strings, Options, Quick Reference
-@section Period expressions
+@node Period Expressions, Format Strings, Options, Command-line Syntax
+@section Period Expressions
A period expression indicates a span of time, or a reporting interval,
or both. The full syntax is:
@@ -672,374 +675,3 @@ last oct
weekly last august
@end example
-@node Format strings, Value expressions, Period expressions, Quick Reference
-@section Format strings
-
-Format strings may be used to change the output format of reports.
-They are specified by passing a formatting string to the
-@option{--format} (@option{-F}) option. Within that string,
-constructs are allowed which make it possible to display the various
-parts of an account or posting in custom ways.
-
-Within a format strings, a substitution is specified using a percent
-character (@samp{%}). The basic format of all substitutions is:
-
-@example
-%[-][MIN WIDTH][.MAX WIDTH]EXPR
-@end example
-
-If the optional minus sign (@samp{-}) follows the percent character,
-whatever is substituted will be left justified. The default is right
-justified. If a minimum width is given next, the substituted text
-will be at least that wide, perhaps wider. If a period and a maximum
-width is given, the substituted text will never be wider than this,
-and will be truncated to fit. Here are some examples:
-
-@example
-%-P a transaction's payee, left justified
-%20P The same, right justified, at least 20 chars wide
-%.20P The same, no more than 20 chars wide
-%-.20P Left justified, maximum twenty chars wide
-@end example
-
-The expression following the format constraints can be a single
-letter, or an expression enclosed in parentheses or brackets. The
-allowable expressions are:
-
-@table @code
-@item %
-Inserts a percent sign.
-
-@item t
-Inserts the results of the value expression specified by @option{-t}.
-If @option{-t} was not specified, the current report style's value
-expression is used.
-
-@item T
-Inserts the results of the value expression specified by @option{-T}.
-If @option{-T} was not specified, the current report style's value
-expression is used.
-
-@item |
-Inserts a single space. This is useful if a width is specified, for
-inserting a certain number of spaces.
-
-@item _
-Inserts a space for each level of an account's depth. That is, if an
-account has two parents, this construct will insert two spaces. If a
-minimum width is specified, that much space is inserted for each level
-of depth. Thus @samp{%5_}, for an account with four parents, will
-insert twenty spaces.
-
-@item (EXPR)
-Inserts the amount resulting from the value expression given in
-parentheses. To insert five times the total value of an account, for
-example, one could say @samp{%12(5*O)}. Note: It's important to put
-the five first in that expression, so that the commodity doesn't get
-stripped from the total.
-
-@item [DATEFMT]
-Inserts the result of formatting a posting's date with a date
-format string, exactly like those supported by @code{strftime}. For
-example: @samp{%[%Y/%m/%d %H:%M:%S]}.
-
-@item S
-Insert the pathname of the file from which the transaction's data was read.
-
-@item B
-Inserts the beginning character position of that transaction within the file.
-
-@item b
-Inserts the beginning line of that transaction within the file.
-
-@item E
-Inserts the ending character position of that transaction within the file.
-
-@item e
-Inserts the ending line of that transaction within the file.
-
-@item D
-By default, this is the same as @samp{%[%Y/%m%/d]}. The date format
-used can be changed at any time with the @option{-y} flag, however.
-Using @samp{%D} gives the user more control over the way dates are
-output.
-
-@item d
-This is the same as the @samp{%D} option, unless the transaction has an
-effective date, in which case it prints
-@samp{[ACTUAL_DATE=EFFECTIVE_DATE]}.
-
-@item X
-If a posting has been cleared, this inserts @samp{*} followed by a
-space; otherwise nothing is inserted.
-
-@item Y
-This is the same as @samp{%X}, except that it only displays a state
-character if all of the member postings have the same state.
-
-@item C
-Inserts the checking number for a transaction, in parentheses, followed by
-a space; if none was specified, nothing is inserted.
-
-@item P
-Inserts the payee related to a posting.
-
-@item a
-Inserts the optimal short name for an account. This is normally used
-in balance reports. It prints a parent account's name if that name
-has not been printed yet, otherwise it just prints the account's name.
-
-@item A
-Inserts the full name of an account.
-
-@item W
-This is the same as @samp{%A}, except that it first displays the
-posting's state @emph{if the transaction's posting states are not
-all the same}, followed by the full account name. This is offered as
-a printing optimization, so that combined with @samp{%Y}, only the
-minimum amount of state detail is printed.
-
-@item o
-Inserts the ``optimized'' form of a posting's amount. This is
-used by the print report. In some cases, this inserts nothing; in
-others, it inserts the posting amount and its cost. It's use is
-not recommend unless you are modifying the print report.
-
-@item n
-Inserts the note associated with a posting, preceded by two spaces
-and a semi-colon, if it exists. Thus, no none becomes an empty
-string, while the note @samp{foo} is substituted as @samp{ ; foo}.
-
-@item N
-Inserts the note associated with a posting, if one exists.
-
-@item /
-The @samp{%/} construct is special. It separates a format string
-between what is printed for the first posting of a transaction, and
-what is printed for all subsequent postings. If not used, the
-same format string is used for all postings.
-@end table
-
-@node Value expressions, File format, Format strings, Quick Reference
-@section Value expressions
-
-Value expressions are an expression language used by @ledgerprog@ to
-calculate values used by the program for many different purposes:
-
-@enumerate
-@item
-The values displayed in reports
-@item
-For predicates (where truth is anything non-zero), to determine which
-postings are calculated (@option{-l}) or displayed (@option{-d}).
-@item
-For sorting criteria, to yield the sort key.
-@item
-In the matching criteria used by automated postings.
-@end enumerate
-
-Value expressions support most simple math and logic operators, in
-addition to a set of one letter functions and variables. A function's
-argument is whatever follows it. The following is a display predicate
-that I use with the @command{balance} command:
-
-@example
-ledger -d /^Liabilities/?T<0:UT>100 balance
-@end example
-
-The effect is that account totals are displayed only if: 1) A
-Liabilities account has a total less than zero; or 2) the absolute
-value of the account's total exceeds 100 units of whatever commodity
-contains. If it contains multiple commodities, only one of them must
-exceed 100 units.
-
-Display predicates are also very handy with register reports, to
-constrain which transactions are printed. For example, the following
-command shows only transactions from the beginning of the current month,
-while still calculating the running balance based on all transactions:
-
-@example
-ledger -d "d>[this month]" register checking
-@end example
-
-This advantage to this command's complexity is that it prints the
-running total in terms of all transactions in the register. The following,
-simpler command is similar, but totals only the displayed
-postings:
-
-@example
-ledger -b "this month" register checking
-@end example
-
-@subsection Variables
-
-Below are the one letter variables available in any value expression.
-For the register and print commands, these variables relate to
-individual postings, and sometimes the account affected by a
-posting. For the balance command, these variables relate to
-accounts---often with a subtle difference in meaning. The use of each
-variable for both is specified.
-
-@table @code
-@item t
-This maps to whatever the user specified with @option{-t}. In a
-register report, @option{-t} changes the value column; in a balance
-report, it has no meaning by default. If @option{-t} was not
-specified, the current report style's value expression is used.
-
-@item T
-This maps to whatever the user specified with @option{-T}. In a
-register report, @option{-T} changes the totals column; in a balance
-report, this is the value given for each account. If @option{-T} was
-not specified, the current report style's value expression is used.
-
-@item m
-This is always the present moment/date.
-@end table
-
-@subsubsection Posting/account details
-
-@table @code
-@item d
-A posting's date, as the number of seconds past the epoch. This
-is always ``today'' for an account.
-
-@item a
-The posting's amount; the balance of an account, without
-considering children.
-
-@item b
-The cost of a posting; the cost of an account, without its
-children.
-
-@item v
-The market value of a posting, or an account without its children.
-
-@item g
-The net gain (market value minus cost basis), for a posting or an
-account without its children. It is the same as @samp{v-b}.
-
-@item l
-The depth (``level'') of an account. If an account has one parent,
-it's depth is one.
-
-@item n
-The index of a posting, or the count of postings affecting an
-account.
-
-@item X
-1 if a posting's transaction has been cleared, 0 otherwise.
-
-@item R
-1 if a posting is not virtual, 0 otherwise.
-
-@item Z
-1 if a posting is not automated, 0 otherwise.
-@end table
-
-@subsubsection Calculated totals
-
-@table @code
-@item O
-The total of all postings seen so far, or the total of an account
-and all its children.
-
-@item N
-The total count of postings affecting an account and all its
-children.
-
-@item B
-The total cost of all postings seen so far; the total cost of an
-account and all its children.
-
-@item V
-The market value of all postings seen so far, or of an account and
-all its children.
-
-@item G
-The total net gain (market value minus cost basis), for a series of
-postings, or an account and its children. It is the same as
-@samp{V-B}.
-@end table
-
-@subsection Functions
-
-The available one letter functions are:
-
-@table @code
-@item -
-Negates the argument.
-
-@item U
-The absolute (unsigned) value of the argument.
-
-@item S
-Strips the commodity from the argument.
-
-@item A
-The arithmetic mean of the argument; @samp{Ax} is the same as
-@samp{x/n}.
-
-@item P
-The present market value of the argument. The syntax @samp{P(x,d)} is
-supported, which yields the market value at time @samp{d}. If no date
-is given, then the current moment is used.
-@end table
-
-@subsection Operators
-
-The binary and ternary operators, in order of precedence, are:
-
-@enumerate
-@item @samp{* /}
-@item @samp{+ -}
-@item @samp{! < > =}
-@item @samp{& | ?:}
-@end enumerate
-
-@subsection Complex expressions
-
-More complicated expressions are possible using:
-
-@table @code
-@item NUM
-A plain integer represents a commodity-less amount.
-
-@item @{AMOUNT@}
-An amount in braces can be any kind of amount supported by ledger,
-with or without a commodity. Use this for decimal values.
-
-@item /REGEXP/
-@item W/REGEXP/
-A regular expression that matches against an account's full name. If
-a posting, this will match against the account affected by the
-posting.
-
-@item //REGEXP/
-@item p/REGEXP/
-A regular expression that matches against a transaction's payee name.
-
-@item ///REGEXP/
-@item w/REGEXP/
-A regular expression that matches against an account's base name. If
-a posting, this will match against the account affected by the
-posting.
-
-@item c/REGEXP/
-A regular expression that matches against the transaction code (the text
-that occurs between parentheses before the payee name).
-
-@item e/REGEXP/
-A regular expression that matches against a posting's note, or
-comment field.
-
-@item (EXPR)
-A sub-expression is nested in parenthesis. This can be useful passing
-more complicated arguments to functions, or for overriding the natural
-precedence order of operators.
-
-@item [DATE]
-Useful specifying a date in plain terms. For example, you could say
-@samp{[2004/06/01]}.
-@end table
-
diff --git a/doc/L3-ValueExpressions.texi b/doc/L3-ValueExpressions.texi
index 02d00e6a..f893229f 100644
--- a/doc/L3-ValueExpressions.texi
+++ b/doc/L3-ValueExpressions.texi
@@ -1,3 +1,230 @@
@c -*-texinfo-*-
-@chapter Value Expression
+@node Value Expressions, Variables, Basic Reporting Commands, Top
+@chapter Value Expressions
+
+Value expressions are an expression language used by LEDGER to
+calculate values used by the program for many different purposes:
+
+@enumerate
+@item
+The values displayed in reports
+@item
+For predicates (where truth is anything non-zero), to determine which
+postings are calculated (@option{-l}) or displayed (@option{-d}).
+@item
+For sorting criteria, to yield the sort key.
+@item
+In the matching criteria used by automated postings.
+@end enumerate
+
+Value expressions support most simple math and logic operators, in
+addition to a set of one letter functions and variables. A function's
+argument is whatever follows it. The following is a display predicate
+that I use with the @command{balance} command:
+
+@example
+ledger -d /^Liabilities/?T<0:UT>100 balance
+@end example
+
+The effect is that account totals are displayed only if: 1) A
+Liabilities account has a total less than zero; or 2) the absolute
+value of the account's total exceeds 100 units of whatever commodity
+contains. If it contains multiple commodities, only one of them must
+exceed 100 units.
+
+Display predicates are also very handy with register reports, to
+constrain which transactions are printed. For example, the following
+command shows only transactions from the beginning of the current month,
+while still calculating the running balance based on all transactions:
+
+@example
+ledger -d "d>[this month]" register checking
+@end example
+
+This advantage to this command's complexity is that it prints the
+running total in terms of all transactions in the register. The following,
+simpler command is similar, but totals only the displayed
+postings:
+
+@example
+ledger -b "this month" register checking
+@end example
+
+@menu
+* Variables::
+@end menu
+
+@node Variables, , Value Expressions, Value Expressions
+@section Variables
+
+Below are the one letter variables available in any value expression.
+For the register and print commands, these variables relate to
+individual postings, and sometimes the account affected by a
+posting. For the balance command, these variables relate to
+accounts---often with a subtle difference in meaning. The use of each
+variable for both is specified.
+
+@table @code
+@item t
+This maps to whatever the user specified with @option{-t}. In a
+register report, @option{-t} changes the value column; in a balance
+report, it has no meaning by default. If @option{-t} was not
+specified, the current report style's value expression is used.
+
+@item T
+This maps to whatever the user specified with @option{-T}. In a
+register report, @option{-T} changes the totals column; in a balance
+report, this is the value given for each account. If @option{-T} was
+not specified, the current report style's value expression is used.
+
+@item m
+This is always the present moment/date.
+@end table
+
+@subsection Posting/account details
+
+@table @code
+@item d
+A posting's date, as the number of seconds past the epoch. This
+is always ``today'' for an account.
+
+@item a
+The posting's amount; the balance of an account, without
+considering children.
+
+@item b
+The cost of a posting; the cost of an account, without its
+children.
+
+@item v
+The market value of a posting, or an account without its children.
+
+@item g
+The net gain (market value minus cost basis), for a posting or an
+account without its children. It is the same as @samp{v-b}.
+
+@item l
+The depth (``level'') of an account. If an account has one parent,
+it's depth is one.
+
+@item n
+The index of a posting, or the count of postings affecting an
+account.
+
+@item X
+1 if a posting's transaction has been cleared, 0 otherwise.
+
+@item R
+1 if a posting is not virtual, 0 otherwise.
+
+@item Z
+1 if a posting is not automated, 0 otherwise.
+@end table
+
+@subsection Calculated totals
+
+@table @code
+@item O
+The total of all postings seen so far, or the total of an account
+and all its children.
+
+@item N
+The total count of postings affecting an account and all its
+children.
+
+@item B
+The total cost of all postings seen so far; the total cost of an
+account and all its children.
+
+@item V
+The market value of all postings seen so far, or of an account and
+all its children.
+
+@item G
+The total net gain (market value minus cost basis), for a series of
+postings, or an account and its children. It is the same as
+@samp{V-B}.
+@end table
+
+@section Functions
+
+The available one letter functions are:
+
+@table @code
+@item -
+Negates the argument.
+
+@item U
+The absolute (unsigned) value of the argument.
+
+@item S
+Strips the commodity from the argument.
+
+@item A
+The arithmetic mean of the argument; @samp{Ax} is the same as
+@samp{x/n}.
+
+@item P
+The present market value of the argument. The syntax @samp{P(x,d)} is
+supported, which yields the market value at time @samp{d}. If no date
+is given, then the current moment is used.
+@end table
+
+@section Operators
+
+The binary and ternary operators, in order of precedence, are:
+
+@enumerate
+@item @samp{* /}
+@item @samp{+ -}
+@item @samp{! < > =}
+@item @samp{& | ?:}
+@end enumerate
+
+@section Complex expressions
+
+More complicated expressions are possible using:
+
+@table @code
+@item NUM
+A plain integer represents a commodity-less amount.
+
+@item @{AMOUNT@}
+An amount in braces can be any kind of amount supported by ledger,
+with or without a commodity. Use this for decimal values.
+
+@item /REGEXP/
+@item W/REGEXP/
+A regular expression that matches against an account's full name. If
+a posting, this will match against the account affected by the
+posting.
+
+@item //REGEXP/
+@item p/REGEXP/
+A regular expression that matches against a transaction's payee name.
+
+@item ///REGEXP/
+@item w/REGEXP/
+A regular expression that matches against an account's base name. If
+a posting, this will match against the account affected by the
+posting.
+
+@item c/REGEXP/
+A regular expression that matches against the transaction code (the text
+that occurs between parentheses before the payee name).
+
+@item e/REGEXP/
+A regular expression that matches against a posting's note, or
+comment field.
+
+@item (EXPR)
+A sub-expression is nested in parenthesis. This can be useful passing
+more complicated arguments to functions, or for overriding the natural
+precedence order of operators.
+
+@item [DATE]
+Useful specifying a date in plain terms. For example, you could say
+@samp{[2004/06/01]}.
+@end table
+