• No results found

Index of /CTAN/macros/latex/contrib/invoice2

N/A
N/A
Protected

Academic year: 2022

Share "Index of /CTAN/macros/latex/contrib/invoice2"

Copied!
23
0
0

Full text

(1)

The invoice2 package

Intelligent invoices with L A TEX3

Simon Dierl <[email protected]>

https://github.com/no-preserve-root/invoice2

Version 1.2

Monday January 15, 2018

While there exists a vast amount of templates, unpublished packages and code snip- pets designed for creating invoices, the only solution available in the CTAN is theinvoice1 package, which is not actively maintained and lacks e. g. internationalization support while requiring use of a project structure that does not fit many use cases.

Thus, this package aims to reimplement the functionality provided byinvoiceusing LATEX3, while using the print-friendly layout provided by thebooktabs2 package.

Contents

I User documentation 2

1 Package Configuration 2

2 Localization 3

3 Typesetting invoices 4

4 Examples 4

5 Version History 7

5.1 Version 1.2 . . . 7 5.2 Version 1.1 . . . 7 5.3 Version 1.0 . . . 7

6 License 7

II invoice2 implementation 8

1 Setup and Initialization 8

1https://www.ctan.org/pkg/invoice

2https://www.ctan.org/pkg/booktabs

(2)

2 Variables and Constants 8

2.1 VAT Computation . . . 8

2.2 Price Typesetting . . . 9

2.3 Colorization . . . 9

2.4 Internal State Tracking . . . 10

3 Configuration 11 3.1 Package Parameters . . . 11

3.2 invoiceoptionsCommand . . . 11

4 The invoiceEnvironment 12 4.1 Header Rendering . . . 12

4.2 Content Rendering . . . 14

4.3 Footer Rendering . . . 17

4.4 The Environment itself . . . 19

5 Messages and Errors 20 6 Dictionary Files 20 6.1 English Dictionary . . . 20

6.2 German Dictionary . . . 20

6.3 Swiss German Dictionary . . . 20

Change History 21

Index 21

Part I

User documentation

1 Package Configuration

invoice2offers extensive options for customization. Most of these options are not likely to change in the middle of a document; these shold be passed as package options. However, for maximum flexibility, the global options can be changed at run time or overridden per invoiceenvironment.

The options supported by this package are:

vat Controls the global default for VAT. VAT can be overridden per invoice item and is either automatically added or subtracted (see the next parameter for details). This is given as a floating point number, e. g. .19 for 19 %. Default is 0 %.

included-vat Controls if prices are provided with VAT included or excluded. If VAT is included, all prices are gross prices, the VAT is subtracted to show the net price.

If VAT is excluded, all prices are net prices, the VAT is added to show the gross price. Default is excluded VAT.

(3)

currency-symbol The currency symbol to use, e.g. e. Default is $.

currency-fraction-digits The fractional digits to use for the currency. For almost all currencies, this is two (100 of the smaller unit make 1 of the larger). Default is 2.

currency-in-header Controls if the currency symbol should be printed in the invoice header instead of printing it after each amount. Default is printing after each amount.

colorize Enables colorization. While the typographical results may be mixed, coloriza- tion can help read very long invoices. Default is off.

odd-color The color to use for odd invoice rows, if colorization is enabled. The color must be understood by xcolor. Default is white.

even-color The color to use for even invoice rows, if colorization is enabled. The color must be understood by xcolor. Default is light grey (lightgray).

title-color The color to use for the title row, if colorization is enabled. The color must be understood by xcolor. Default is white.

total-color The color to use for total rows, if colorization is enabled. The color must be understood by xcolor. Default is white.

2 Localization

Internationalization for this package is provided by thetranslations3package. translations uses a key-to-translation mapping that can be overridden by the user. See the package documentation for further information.

At the moment, localizations for english, german and swiss german are provided.

See the documentation for the translationspackage for adding new localizations. Please consider contributing your translations to this project.

The following keys are defined:

invoice2-thousands-sep The separator between thousands, e. g. the space in 1 000.

Default is a small space.

invoice2-decimal-point The separator between whole and fractional parts, e. g. the dot in 40.00. Default is a dot.

invoice2-amount The “Amount” column title.

invoice2-item The “Item” column title.

invoice2-vat The “VAT” column title.

invoice2-unit-price The “Unit Price” column title.

invoice2-price The “Price” column title.

invoice2-net-total The “Net Total” row label.

invoice2-vat-total The “VAT” row label.

3https://www.ctan.org/pkg/translations

(4)

invoice2-gross-total The “Gross Total” row label.

\invoiceoptions {hkey=value...i}

All of the package options can be changed in the document by using this command. The syntax is identical to the package options.

\invoiceoptions

3 Typesetting invoices

An invoice is typeset as a table having between two and five columns. Each row will correspond to an item in the invoice. A row always has an item name and a price. If any item in the invoice hat a VAT that is not 0 %, every row will list its VAT. Also, if any item has an amount that is not one,every row will list both price per unit and the amount.

If an item hat non-zero VAT, the net and gross totals will also differ. In this case, the package will compute the net total, the total VAT and the gross total and denote them below the invoice. If all items have 0 %-VAT, only a gross total will be given.

\begin [hkey=value...i] {invoice}

\end {invoice}

Invoices are enclosed ininvoice environments. These environments can not be nested.

Each environment can override the package settings by means of its optional arguments.

The overridden arguments only apply to the current invoice.

Inside the environment, only \invoiceitem and \invoicesingleitem commands may be safely used.

\begin{invoice}

\end{invoice}

\invoiceitem [hVATi] {hamounti} {hitem namei} {hunit pricei}

\invoicesingleitem [hVATi] {hitem namei} {hunit pricei}

These commands add an item to the current invoice. The VAT argument is optional, if not given, VAT will default to the value set in the configuration. For singular items, the second form can be used to imply an amount of 1.

VAT must be given as a floating point value (see the configuration parameter list for details). The amount and the unit price can be an integer or a floating point number.

Donot add a currency symbol or formatting to the unit price.

\invoiceitem

\invoicesingleitem

4 Examples

Let us begin with a simple invoice with single items and no VAT. The invoice will only have two columns and a gross total. We do, however, change the currency symbol to e(provided by theeurosym package). Since we only have single copies, we will use the

\invoicesingleitemcommand.

\usepackage{eurosym}

\begin{invoice}[currency-symbol={\euro{}}]

\invoicesingleitem{Ignition!}{4087.99}

\invoicesingleitem{The Art of Computer Programming 1--4}{162.99}

\invoicesingleitem{The TeXbook}{55.69}

\end{invoice}

(5)

Item Price

Ignition! 4 087.99e

The Art of Computer Programming 1–4 162.99e

The TeXbook 55.69e

Gross Total 4 306.67e

For some currencies, the symbol ist fairly long. In this case, it is advisable to move the currency symbol to the invoice header.

\begin{invoice}[currency-symbol={CHF}, currency-in-header]

\invoicesingleitem{Ignition!}{4087.99}

\invoicesingleitem{The Art of Computer Programming 1--4}{162.99}

\invoicesingleitem{The TeXbook}{55.69}

\end{invoice}

Item Price (CHF)

Ignition! 4 087.99

The Art of Computer Programming 1–4 162.99

The TeXbook 55.69

Gross Total (CHF) 4 306.67

Now, let us apply a VAT of 9 %. This will show the VAT column, the item price column and the extended total.

\usepackage{eurosym}

\invoiceoptions{vat=.09}

\begin{invoice}[currency-symbol={\euro{}}]

\invoicesingleitem{Ignition!}{4087.99}

\invoicesingleitem{The Art of Computer Programming 1--4}{162.99}

\invoicesingleitem{The TeXbook}{55.69}

\end{invoice}

Item VAT Unit Price Price

Ignition! 9 % 4 087.99e 4 455.91e

The Art of Computer Programming 1–4 9 % 162.99e 177.66e

The TeXbook 9 % 55.69e 60.70e

Net Total 4 306.67e VAT 387.60e Gross Total 4 694.27e Note that if we specify included VAT in the above example, the output is different.

Additionally, we specify our options as environment options.

\usepackage{eurosym}

(6)

\begin{invoice}[vat=.09, included-vat=true, currency-symbol={\euro{}}]

\invoicesingleitem{Ignition!}{4087.99}

\invoicesingleitem{The Art of Computer Programming 1--4}{162.99}

\invoicesingleitem{The TeXbook}{55.69}

\end{invoice}

Item VAT Unit Price Price

Ignition! 9 % 3 750.45e 4 087.99e

The Art of Computer Programming 1–4 9 % 149.53e 162.99e

The TeXbook 9 % 51.09e 55.69e

Net Total 3 951.07e VAT 355.60e Gross Total 4 306.67e A more complex example involves amounts and a VAT. We keep the 9 % VAT for our books, buy duplicate editions of The Art of Computer Programming 1 and 2 (simulated by buying 1.5 copies) and stock up on more copies of the TeXbook. This will enable all columns and an extended total.

\usepackage{eurosym}

\invoiceoptions{vat=.09}

\begin{invoice}[currency-symbol={\euro{}}]

\invoicesingleitem{Ignition!}{4087.99}

\invoiceitem{1.5}{The Art of Computer Programming 1--4}{162.99}

\invoiceitem{20}{The TeXbook}{55.69}

\end{invoice}

Amount Item VAT Unit Price Price

1 Ignition! 9 % 4 087.99e 4 455.91e

1.5 The Art of Computer Programming 1–4 9 % 162.99e 266.49e

20 The TeXbook 9 % 55.69e 1 214.04e

Net Total 5 446.28e VAT 490.16e Gross Total 5 936.44e Finally, let us toy with colorization. We wisely deceide to leave most parts of the invoice white and only apply an extemely light grey to the even rows.

\usepackage{eurosym}

\begin{invoice}[currency-symbol={\euro{}}, colorize, even-color={lightgray!50}]

\invoicesingleitem{Ignition!}{4087.99}

\invoicesingleitem{The Art of Computer Programming 1--4}{162.99}

\invoicesingleitem{The TeXbook}{55.69}

\end{invoice}

(7)

Item Price

Ignition! 4 087.99e

The Art of Computer Programming 1–4 162.99e

The TeXbook 55.69e

Gross Total 4 306.67e

5 Version History

5.1 Version 1.2

• Fix option loading for thexcolorpackage. Thanks to Alfred H. Gitter for reporting.

• Corrected german translation of “VAT” to “USt”. Thanks to Alfred H. Gitter for reporting.

• Clarified that eurosym is required to use the euro symbol. Thanks to Alfred H.

Gitter for the suggestion.

• Split theREADME.mdinto a Github version and one for CTAN.

• Add support for Swiss German. Thanks to@foreachthingfor the translation.

• Permit moving the currency symbol to the header. Thanks to@foreachthing for the report.

5.2 Version 1.1

• Spelling fix inREADME.md. Thanks to Ina Dau for noticing.

• Clean up unused READMEgeneration in the.insfile.

• Report in with the correct motto.

• Support non-integer amounts. Thanks to Gijs Hillenius for the suggestion.

• Print the unit price column if an item has either VAT or amount6= 1. Thanks to Gijs Hillenius for the suggestion.

5.3 Version 1.0

• First public release.

• Support configuration via package options, \invoiceoptionscommand and envi- ronment options.

• Localization via translations.

6 License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, seehttp://www.gnu.org/licenses/.

(8)

Part II

invoice2 implementation

1 h*packagei

2 h@@=invoicetwoi

1 Setup and Initialization

3 \RequirePackage{booktabs}

4 \RequirePackage{expl3}

5 \RequirePackage{l3keys2e}

6 \RequirePackage{longtable}

7 \RequirePackage{siunitx}

8 \RequirePackage{translations}

9 \PassOptionsToPackage{table}{xcolor}

10 \RequirePackage{xcolor}

11 \RequirePackage{xparse}

12 \ProvidesExplPackage{invoice2}{2018/01/15}{1.2}

13 {Intelligent invoices with LaTeX3}

Now, load our dictionary files and set fallback translations. We emit the dictionaries in section 6.

14 \LoadDictionaryFor{english}{invoice2}

15 \LoadDictionaryFor{german}{invoice2}

16 \LoadDictionaryFor{swissgerman}{invoice2}

17 \DeclareTranslationFallback{invoice2-thousands-sep}{\,}

18 \DeclareTranslationFallback{invoice2-decimal-point}{.}

19 \DeclareTranslationFallback{invoice2-amount}{Amount}

20 \DeclareTranslationFallback{invoice2-item}{Item}

21 \DeclareTranslationFallback{invoice2-vat}{VAT}

22 \DeclareTranslationFallback{invoice2-unit-price}{Unit~Price}

23 \DeclareTranslationFallback{invoice2-price}{Price}

24 \DeclareTranslationFallback{invoice2-net-total}{Net~Total}

25 \DeclareTranslationFallback{invoice2-vat-total}{VAT}

26 \DeclareTranslationFallback{invoice2-gross-total}{Gross~Total}

2 Variables and Constants

All variables that control invoice typesetting can be set on a) the package level, as a package option

b) the package level, using theinvoiceoptionscommand c) perinvoiceenvironment, via the same syntax

d) per invoice line, for some options (e. g. VAT).

2.1 VAT Computation

\l__invoicetwo_vat_fp The default value for VAT. If an invoice has only zero VAT for all entries, no VAT is added and the column is not rendered. VAT can be set per line.

27 \fp_new:N \l__invoicetwo_vat_fp (End definition for\l__invoicetwo_vat_fp.)

(9)

\l__invoicetwo_included_vat_bool Controls if VAT is already included into the given prices. If true, the total will compute the net total and display it. If false, the total will compute the gross total. If the VAT is zero, this does nothing. We will render a gross total only.

28 \bool_new:N \l__invoicetwo_included_vat_bool (End definition for\l__invoicetwo_included_vat_bool.)

\l__invoicetwo_currency_symbol_tl The currency symbol to use.

2.2 Price Typesetting

29 \tl_new:N \l__invoicetwo_currency_symbol_tl

(End definition for\l__invoicetwo_currency_symbol_tl.)

\l__invoicetwo_currency_fraction_digits_int The number of fractional digits for the currency. Contrary to popular opinion, this does not always equal two.

30 \int_new:N \l__invoicetwo_currency_fraction_digits_int (End definition for\l__invoicetwo_currency_fraction_digits_int.)

\l__invoicetwo_currency_in_header_bool Controls if the invoice currency symbol should be moved intro the table header (“Unit Price ($)”) instead of printing it after each amount (“123.45 $”). Can save space for long currencies.

31 \bool_new:N \l__invoicetwo_currency_in_header_bool (End definition for\l__invoicetwo_currency_in_header_bool.)

2.3 Colorization

\l__invoicetwo_colorize_bool Controls if the invoice should be colorized at all. We only support alternating colorization for even and odd lines and a special color for the total line.

32 \bool_new:N \l__invoicetwo_colorize_bool (End definition for\l__invoicetwo_colorize_bool.)

\l__invoicetwo_odd_color_tl The color for odd lines. Only used if colorization is enabled.

33 \tl_new:N \l__invoicetwo_odd_color_tl

34 \tl_set:Nn \l__invoicetwo_odd_color_tl {white}

(End definition for\l__invoicetwo_odd_color_tl.)

\l__invoicetwo_even_color_tl The color for even lines. Only used if colorization is enabled.

35 \tl_new:N \l__invoicetwo_even_color_tl

36 \tl_set:Nn \l__invoicetwo_even_color_tl {lightgray}

(End definition for\l__invoicetwo_even_color_tl.)

\l__invoicetwo_title_color_tl The color for the title line. Only used if colorization is enabled.

37 \tl_new:N \l__invoicetwo_title_color_tl

38 \tl_set:Nn \l__invoicetwo_title_color_tl {white}

(End definition for\l__invoicetwo_title_color_tl.)

\l__invoicetwo_total_color_tl The color for the total line. Only used if colorization is enabled.

39 \tl_new:N \l__invoicetwo_total_color_tl

40 \tl_set:Nn \l__invoicetwo_total_color_tl {white}

(End definition for\l__invoicetwo_total_color_tl.)

(10)

2.4 Internal State Tracking

\l__invoicetwo_in_invoice_bool Tracks if we are in an invoice environment. This allows us to crash when nesting invoice environments by accident.

41 \bool_new:N \l__invoicetwo_in_invoice_bool (End definition for\l__invoicetwo_in_invoice_bool.)

\l__invoicetwo_row_number_int Counts the invoice rows. We use this to tell even from odd lines. Starts with 1; this must be reset at the beginning of each invoice.

42 \int_new:N \g__invoicetwo_row_number_int (End definition for\l__invoicetwo_row_number_int.)

\l__invoicetwo_vat_nonzero_bool Tracks if we have already encountered a line with non-zero VAT. If so, we will render a VAT column and separate gross and net totals.

43 \bool_new:N \l__invoicetwo_vat_nonzero_bool (End definition for\l__invoicetwo_vat_nonzero_bool.)

\l__invoicetwo_amount_nonone_bool Tracks if we have already encountered a line with non-one amount. If so, we will render an amount and an unit price column.

44 \bool_new:N \l__invoicetwo_amount_nonone_bool (End definition for\l__invoicetwo_amount_nonone_bool.)

\l__invoicetwo_net_total_fp The running net total.

45 \fp_new:N \l__invoicetwo_net_total_fp (End definition for\l__invoicetwo_net_total_fp.)

\l__invoicetwo_vat_total_fp The running VAT total.

46 \fp_new:N \l__invoicetwo_vat_total_fp (End definition for\l__invoicetwo_vat_total_fp.)

\l__invoicetwo_gross_total_fp The running gross total.

47 \fp_new:N \l__invoicetwo_gross_total_fp (End definition for\l__invoicetwo_gross_total_fp.)

\l__invoicetwo_tabular_tl The tabular under construction. We create the tabular contents on the fly, using a conditional for the VAT column that is expanded only when emitting the invoice.

48 \tl_new:N \l__invoicetwo_tabular_tl (End definition for\l__invoicetwo_tabular_tl.)

(11)

3 Configuration

We define al3keyskey list for the package. We will reuse this for all configuration, except for item-specific VAT, which will override the global VAT setting. We handle this in the corresponding function.

49 \keys_define:nn {invoice2} {

50 vat .fp_set:N = \l__invoicetwo_vat_fp,

51 vat .value_required:n = true,

52 vat .initial:n = 0,

53 included-vat .bool_set:N = \l__invoicetwo_included_vat_bool,

54 included-vat .initial:n = false,

55 currency-symbol .tl_set:N = \l__invoicetwo_currency_symbol_tl,

56 currency-symbol .value_required:n = true,

57 currency-symbol .initial:n = {\$},

58 currency-fraction-digits .int_set:N = \l__invoicetwo_currency_fraction_digits_int,

59 currency-fraction-digits .value_required:n = true,

60 currency-fraction-digits .initial:n = 2,

61 currency-in-header .bool_set:N = \l__invoicetwo_currency_in_header_bool,

62 currency-in-header .initial:n = false,

63 colorize .bool_set:N = \l__invoicetwo_colorize_bool,

64 colorize .initial:n = false,

65 odd-color .initial:n = white,

66 odd-color .value_required:n = true,

67 odd-color .tl_set:N = \l__invoicetwo_odd_color_tl,

68 even-color .initial:n = lightgray,

69 even-color .value_required:n = true,

70 even-color .tl_set:N = \l__invoicetwo_even_color_tl,

71 title-color .initial:n = white,

72 title-color .value_required:n = true,

73 title-color .tl_set:N = \l__invoicetwo_title_color_tl,

74 total-color .initial:n = white,

75 total-color .value_required:n = true,

76 total-color .tl_set:N = \l__invoicetwo_total_color_tl

77 }

3.1 Package Parameters

Fortunately,l3keys2ehandles the heavy lifting for us.

78 \ProcessKeysOptions{invoice2}

3.2 invoiceoptions Command

\invoiceoptions We also provide an interface to change the configuration at run time.

79 \NewDocumentCommand{\invoiceoptions}{m}{

80 \keys_set:nn {invoice2} {#1}

81 }

(End definition for\invoiceoptions. This function is documented on page 4.)

(12)

4 The invoice Environment

4.1 Header Rendering

\__invoicetwo_print_column_specification: Emits the\beginlongtable. The amount column is centered or skipped, if all amounts are one. The item column is left-justified. The VAT column is centered or skipped, if all VATs are zero. The unit price and price columns are right-justified; unit price is skipped if amount is.

Sincelongtablerefuses to expand the column specification, we force prior expansion of the booleans.

82 \cs_new:Nn {\__invoicetwo_print_begin_table:}{

83 \exp_args:Nx \longtable {

84 \bool_if:NT \l__invoicetwo_amount_nonone_bool { c }

85 l

86 \bool_if:NT \l__invoicetwo_vat_nonzero_bool { c }

87 r

88 \bool_if:nT { \l__invoicetwo_amount_nonone_bool || \l__invoicetwo_vat_nonzero_bool } { r }

89 }

90 }

(End definition for\__invoicetwo_print_column_specification:.)

\__invoicetwo_print_column_title:n Emits a formatted column title.

91 \cs_new:Nn {\__invoicetwo_print_column_title:n}{

92 \multicolumn{1}{c}{

93 \bool_if:NT \l__invoicetwo_colorize_bool {

94 \cellcolor{ \l__invoicetwo_title_color_tl }

95 }

96 \begin{scriptsize}

97 \textbf{#1}

98 \end{scriptsize}}

99 }

(End definition for\__invoicetwo_print_column_title:n.)

\__invoicetwo_print_amount_title: Emits the “amount” column title. If all amounts are equal to 1, we emit nothing.

100 \cs_new:Nn {\__invoicetwo_print_amount_title:}{

101 \bool_if:NT \l__invoicetwo_amount_nonone_bool {

102 \__invoicetwo_print_column_title:n {\GetTranslation{invoice2-amount}} &

103 }

104 }

(End definition for\__invoicetwo_print_amount_title:.)

\__invoicetwo_print_item_title: Emits the “item” column title.

105 \cs_new:Nn {\__invoicetwo_print_item_title:}{

106 \__invoicetwo_print_column_title:n {\GetTranslation{invoice2-item}} &

107 }

(End definition for\__invoicetwo_print_item_title:.)

(13)

\__invoicetwo_print_vat_title: Emits the “VAT” column title. If all VATs are zero, we emit nothing.

108 \cs_new:Nn {\__invoicetwo_print_vat_title:}{

109 \bool_if:NT \l__invoicetwo_vat_nonzero_bool {

110 \__invoicetwo_print_column_title:n {\GetTranslation{invoice2-vat}} &

111 }

112 }

(End definition for\__invoicetwo_print_vat_title:.)

\__invoicetwo_print_unit_price_title: Emits the “unit price” column title. If all amounts are equal to 1, we emit nothing.

113 \cs_new:Nn {\__invoicetwo_print_unit_price_title:}{

114 \bool_if:nT { \l__invoicetwo_amount_nonone_bool || \l__invoicetwo_vat_nonzero_bool } {

115 \__invoicetwo_print_column_title:n {

116 \GetTranslation{invoice2-unit-price}

117 \bool_if:NT \l__invoicetwo_currency_in_header_bool {

118 \ (\tl_use:N \l__invoicetwo_currency_symbol_tl)

119 }

120 } &

121 }

122 }

(End definition for\__invoicetwo_print_unit_price_title:.)

\__invoicetwo_print_price_title: Emits the “price” column title.

123 \cs_new:Nn {\__invoicetwo_print_price_title:}{

124 \__invoicetwo_print_column_title:n {\GetTranslation{invoice2-price}

125 \bool_if:NT \l__invoicetwo_currency_in_header_bool {

126 \ (\tl_use:N \l__invoicetwo_currency_symbol_tl)

127 }

128 }

129 }

(End definition for\__invoicetwo_print_price_title:.)

\__invoicetwo_print_header: Emits the invoice header. If all amounts are equal to 1, we skip the amount column and the unit price column. If all VATs are 0, we skip the VAT column.

130 \cs_new:Nn {\__invoicetwo_print_header:}{

131 \__invoicetwo_print_begin_table:

132 \toprule

133 \__invoicetwo_print_amount_title:

134 \__invoicetwo_print_item_title:

135 \__invoicetwo_print_vat_title:

136 \__invoicetwo_print_unit_price_title:

137 \__invoicetwo_print_price_title:

138 \\

139 \midrule

140 }

(End definition for\__invoicetwo_print_header:.)

(14)

4.2 Content Rendering

\__invoicetwo_print_real_value:n Emits a currency value, formatted with the current settings. The value must be a floating point number or variable.

141 \cs_new:Nn {\__invoicetwo_print_real_value:n}{

142 \num[round-integer-to-decimal,

143 group-minimum-digits=4,

144 group-separator={\GetTranslation{invoice2-thousands-sep}},

145 output-decimal-marker={\GetTranslation{invoice2-decimal-point}}]{

146 #1

147 }

148 }

(End definition for\__invoicetwo_print_real_value:n.)

\__invoicetwo_print_currency_value:n

\__invoicetwo_print_currency_value:N

Emits a currency value, formatted with the current settings. The value must be a floating point number or variable.

149 \cs_new:Nn {\__invoicetwo_print_currency_value:n}{

150 \num[round-precision={\int_use:N \l__invoicetwo_currency_fraction_digits_int},

151 round-mode=places,

152 round-integer-to-decimal,

153 group-minimum-digits=4,

154 group-separator={\GetTranslation{invoice2-thousands-sep}},

155 output-decimal-marker={\GetTranslation{invoice2-decimal-point}}]{

156 #1

157 }

158 \bool_if:NF \l__invoicetwo_currency_in_header_bool {

159 \, \tl_use:N \l__invoicetwo_currency_symbol_tl

160 }

161 }

162 \cs_new:Nn {\__invoicetwo_print_currency_value:N}{

163 \__invoicetwo_print_currency_value:n {\fp_use:N #1}

164 }

(End definition for \__invoicetwo_print_currency_value:n and \__invoicetwo_print_currency_- value:N.)

\__invoicetwo_print_percentage:n Emits a percentage, formatted with the current settings. The value must be a floating point number.

165 \cs_new:Nn {\__invoicetwo_print_percentage:n}{

166 \num[round-integer-to-decimal,

167 group-minimum-digits=4,

168 group-separator={\GetTranslation{invoice2-thousands-sep}},

169 output-decimal-marker={\GetTranslation{invoice2-decimal-point}}]{

170 \fp_eval:n {#1 * 100}

171 }

172 \, \%

173 }

(End definition for\__invoicetwo_print_percentage:n.)

\__invoicetwo_update_trackers:nn Update the VAT-not-zero and amount-not-zero trackers for the given VAT and amount values.

174 \cs_new:Nn {\__invoicetwo_update_trackers:nn}{

(15)

175 \fp_compare:nT {#1 != 1}{

176 \bool_set_true:N \l__invoicetwo_amount_nonone_bool

177 }

178 \fp_compare:nT {#2 != 0}{

179 \bool_set_true:N \l__invoicetwo_vat_nonzero_bool

180 }

181 }

(End definition for\__invoicetwo_update_trackers:nn.)

\__invoicetwo_update_totals:nnn Update the totals for the given amount, VAT and price per unit values. We increase the net total by ˜n, the VAT total by ˜vand the gross total by ˜g. For unit pricep, amounta, VATv and non-included VATs, this is computed as

˜ n=a·p

˜

v=v·n˜=a·v·p

˜

g= ˜n+ ˜v=a·(1 +vp,

for included VATs, as

˜ g=a·p

˜ n= g˜

1 +v = a·p 1 +v

˜

v= ˜g−˜n=a·v·p 1 +v

182 \cs_new:Nn {\__invoicetwo_update_totals:nnn}{

183 \fp_add:Nn \l__invoicetwo_gross_total_fp {

184 #1 * #3 \bool_if:NF \l__invoicetwo_included_vat_bool { * (1 + #2) }

185 }

186 \fp_add:Nn \l__invoicetwo_vat_total_fp {

187 #1 * #2 * #3 \bool_if:NT \l__invoicetwo_included_vat_bool { / (1 + #2) }

188 }

189 \fp_add:Nn \l__invoicetwo_net_total_fp {

190 #1 * #3 \bool_if:NT \l__invoicetwo_included_vat_bool { / (1 + #2) }

191 }

192 }

(End definition for\__invoicetwo_update_totals:nnn.)

\__invoicetwo_print_amount:n Print the given amount value or nothing, if all amounts are one.

193 \cs_new:Nn {\__invoicetwo_print_amount:n}{

194 \bool_if:NT \l__invoicetwo_amount_nonone_bool {

195 \__invoicetwo_print_real_value:n {#1} &

196 }

197 }

(End definition for\__invoicetwo_print_amount:n.)

\__invoicetwo_print_item:n Print the given item name.

198 \cs_new:Nn {\__invoicetwo_print_item:n}{

199 #1 &

200 }

(16)

(End definition for\__invoicetwo_print_item:n.)

\__invoicetwo_print_vat:n Print the given VAT or nothing, if all VATs are zero.

201 \cs_new:Nn {\__invoicetwo_print_vat:n}{

202 \bool_if:NT \l__invoicetwo_vat_nonzero_bool {

203 \__invoicetwo_print_percentage:n {#1} &

204 }

205 }

(End definition for\__invoicetwo_print_vat:n.)

\__invoicetwo_print_unit_price:n Print the given unit price or nothing, if all amounts are one. Parameters are VAT and price per unit. For unit pricep, VATv and non-included VATs, this is computed as

˜

p= p

1 +v, for included VATs, as

˜ p=p.

206 \cs_new:Nn {\__invoicetwo_print_unit_price:nn}{

207 \bool_if:nT { \l__invoicetwo_amount_nonone_bool || \l__invoicetwo_vat_nonzero_bool } {

208 \__invoicetwo_print_currency_value:n {

209 \fp_eval:n {

210 #2 \bool_if:NT \l__invoicetwo_included_vat_bool { / (1 + #1) }

211 }

212 } &

213 }

214 }

(End definition for\__invoicetwo_print_unit_price:n.)

\__invoicetwo_print_price:nnn Print the price ˜pfor the current item. Parameters are amount, VAT and price per unit.

For unit pricep, amounta, VATv and non-included VATs, this is computed as

˜

p=a·(1 +vp, for included VATs, as

˜ p=a·p.

215 \cs_new:Nn {\__invoicetwo_print_price:nnn}{

216 \__invoicetwo_print_currency_value:n {

217 \fp_eval:n {

218 #1 \bool_if:NF \l__invoicetwo_included_vat_bool { * (1 + #2) } * #3

219 }

220 }

221 }

(End definition for\__invoicetwo_print_price:nnn.)

\__invoicetwo_colorize_row:nnn Colorize the current row according to even/odd colorization, if color was requested in the configuration.

222 \cs_new:Nn {\__invoicetwo_colorize_row:}{

223 \bool_if:NT \l__invoicetwo_colorize_bool {

224 \int_if_odd:nTF \g__invoicetwo_row_number_int {

225 \rowcolor{ \l__invoicetwo_odd_color_tl }

(17)

226 }

227 {

228 \rowcolor{ \l__invoicetwo_even_color_tl }

229 }

230 }

231 \int_gincr:N \g__invoicetwo_row_number_int

232 }

(End definition for\__invoicetwo_colorize_row:nnn.)

\__invoicetwo_add_row:nnnn Add a new entry with non-default VAT to the invoice. This will update the VAT-not-zero and amount-not-zero trackers. Arguments are expected to be (in this order): amount, item name, VAT, unit price.

233 \cs_new:Nn {\__invoicetwo_add_row:nnnn}{

234 \__invoicetwo_update_trackers:nn {#1} {#3}

235 \__invoicetwo_update_totals:nnn {#1} {#3} {#4}

236 \tl_put_right:Nn \l__invoicetwo_tabular_tl {

237 \__invoicetwo_colorize_row:

238 \__invoicetwo_print_amount:n {#1}

239 \__invoicetwo_print_item:n {#2}

240 \__invoicetwo_print_vat:n {#3}

241 \__invoicetwo_print_unit_price:nn {#3} {#4}

242 \__invoicetwo_print_price:nnn {#1} {#3} {#4} \\

243 }

244 }

(End definition for\__invoicetwo_add_row:nnnn.)

\invoiceitem

\invoicesingleitem

This is the user interface to adding items. We read the VAT from the optional argu- ment or the configuration, add an amount of one for single items and delegate to our implementation.

245 \NewDocumentCommand{\invoiceitem}{ommm}{

246 \__invoicetwo_add_row:nnnn {#2} {#3}

247 {\IfValueTF{#1}{#1}{\fp_use:N \l__invoicetwo_vat_fp}}

248 {#4}

249 }

250 \NewDocumentCommand{\invoicesingleitem}{omm}{

251 \__invoicetwo_add_row:nnnn {1} {#2}

252 {\IfValueTF{#1}{#1}{\fp_use:N \l__invoicetwo_vat_fp}}

253 {#3}

254 }

(End definition for\invoiceitem and\invoicesingleitem. These functions are documented on page 4.)

4.3 Footer Rendering

\__invoicetwo_print_multicolumn_count: Emits the column count to group in the final lines. This is the amount of columns minus one.

255 \cs_new:Nn {\__invoicetwo_print_multicolumn_count:}{

256 \int_eval:n {

257 1

258 \bool_if:NT \l__invoicetwo_vat_nonzero_bool {+1}

259 \bool_if:NT \l__invoicetwo_amount_nonone_bool {+1}

(18)

260 \bool_if:nT { \l__invoicetwo_amount_nonone_bool || \l__invoicetwo_vat_nonzero_bool } {+1}

261 }

262 }

(End definition for\__invoicetwo_print_multicolumn_count:.)

\__invoicetwo_print_footer_item:n Emits a formatted footer item. We also handle colorization of the next cell here.

263 \cs_new:Nn {\__invoicetwo_print_footer_item:n}{

264 \multicolumn{\__invoicetwo_print_multicolumn_count:}{r}{

265 \bool_if:NT \l__invoicetwo_colorize_bool {

266 \cellcolor{ \l__invoicetwo_total_color_tl }

267 }

268 \textbf{#1}

269 } & \bool_if:NT \l__invoicetwo_colorize_bool {

270 \cellcolor{ \l__invoicetwo_total_color_tl }

271 }

272 }

(End definition for\__invoicetwo_print_footer_item:n.)

\__invoicetwo_print_net_item: Emits the “net total” item.

273 \cs_new:Nn {\__invoicetwo_print_net_item:}{

274 \bool_if:NT \l__invoicetwo_vat_nonzero_bool {

275 \__invoicetwo_print_footer_item:n {

276 \GetTranslation{invoice2-net-total}

277 \bool_if:NT \l__invoicetwo_currency_in_header_bool {

278 \ (\tl_use:N \l__invoicetwo_currency_symbol_tl)

279 }

280 }

281 \__invoicetwo_print_currency_value:N \l__invoicetwo_net_total_fp \\

282 }

283 }

(End definition for\__invoicetwo_print_net_item:.)

\__invoicetwo_print_vat_item: Emits the “VAT total” item.

284 \cs_new:Nn {\__invoicetwo_print_vat_item:}{

285 \bool_if:NT \l__invoicetwo_vat_nonzero_bool {

286 \__invoicetwo_print_footer_item:n {\GetTranslation{invoice2-vat-total}}

287 \__invoicetwo_print_currency_value:N \l__invoicetwo_vat_total_fp \\

288 }

289 }

(End definition for\__invoicetwo_print_vat_item:.)

\__invoicetwo_print_gross_item: Emits the “gross total” item.

290 \cs_new:Nn {\__invoicetwo_print_gross_item:}{

291 \__invoicetwo_print_footer_item:n {

292 \GetTranslation{invoice2-gross-total}

293 \bool_if:NT \l__invoicetwo_currency_in_header_bool {

294 \ (\tl_use:N \l__invoicetwo_currency_symbol_tl)

295 }

296 }

297 \__invoicetwo_print_currency_value:N \l__invoicetwo_gross_total_fp \\

298 }

(19)

(End definition for\__invoicetwo_print_gross_item:.)

\__invoicetwo_print_footer: Emits the invoice footer. If all VATs are 0, we skip the net and VAT rows.

299 \cs_new:Nn {\__invoicetwo_print_footer:}{

300 \midrule

301 \__invoicetwo_print_net_item:

302 \__invoicetwo_print_vat_item:

303 \__invoicetwo_print_gross_item:

304 \bottomrule

305 \endlongtable

306 }

(End definition for\__invoicetwo_print_footer:.)

4.4 The Environment itself

\__invoicetwo_begin_invoice:n Begins a new invoice environment. We check for nested environments and set up config- uration overrides.

307 \cs_new:Nn {\__invoicetwo_begin_invoice:n}{

308 \bool_if:NT \l__invoicetwo_in_invoice_bool {

309 \msg_error:nn {invoice2} {nested-invoice}

310 }

311 \bool_set_true:N \l__invoicetwo_in_invoice_bool

312 \int_gset:Nn \g__invoicetwo_row_number_int {1}

313 \keys_set:nn {invoice2} {#1}

314 }

(End definition for\__invoicetwo_begin_invoice:n.)

\__invoicetwo_end_invoice: End an invoice enviroenment. Here, we can emit the longtableenvironment since we possess all required information.

315 \cs_new:Nn {\__invoicetwo_end_invoice:}{

316 \__invoicetwo_print_header:

317 \tl_use:N \l__invoicetwo_tabular_tl

318 \__invoicetwo_print_footer:

319 }

(End definition for\__invoicetwo_end_invoice:.)

\begin{invoice}

\end{invoice}

The user interface is theinvoiceenvironment.

320 \NewDocumentEnvironment{invoice}{o}{

321 \IfValueTF{#1}{\__invoicetwo_begin_invoice:n {#1}}{\__invoicetwo_begin_invoice:n {}}

322 }

323 {

324 \__invoicetwo_end_invoice:

325 }

(End definition for\begin{invoice} and\end{invoice}. These functions are documented on page 4.)

(20)

5 Messages and Errors

326 \msg_new:nnnn {invoice2} {nested-invoice}

327 {\msg_error_text:n {invoice2}:~%

328 Nested~invoice~environments~are~not~supported.}

329 {Invoices~can~not~contain~invoices.\\%

330 Please~check~your~environment~delimiters.}

331 h/packagei

6 Dictionary Files

6.1 English Dictionary

332 h*dictEnglishi

333 \ProvideDictionaryFor{English}{invoice2}

334 \ProvideDictTranslation{invoice2-thousands-sep}{\,}

335 \ProvideDictTranslation{invoice2-decimal-point}{.}

336 \ProvideDictTranslation{invoice2-amount}{Amount}

337 \ProvideDictTranslation{invoice2-item}{Item}

338 \ProvideDictTranslation{invoice2-vat}{VAT}

339 \ProvideDictTranslation{invoice2-unit-price}{Unit~Price}

340 \ProvideDictTranslation{invoice2-price}{Price}

341 \ProvideDictTranslation{invoice2-net-total}{Net~Total}

342 \ProvideDictTranslation{invoice2-vat-total}{VAT}

343 \ProvideDictTranslation{invoice2-gross-total}{Gross~Total}

344 h/dictEnglishi

6.2 German Dictionary

345 h*dictGermani

346 \ProvideDictionaryFor{German}{invoice2}

347 \ProvideDictTranslation{invoice2-thousands-sep}{\,}

348 \ProvideDictTranslation{invoice2-decimal-point}{,}

349 \ProvideDictTranslation{invoice2-amount}{Anzahl}

350 \ProvideDictTranslation{invoice2-item}{Posten}

351 \ProvideDictTranslation{invoice2-vat}{USt}

352 \ProvideDictTranslation{invoice2-unit-price}{St\"uckpreis}

353 \ProvideDictTranslation{invoice2-price}{Preis}

354 \ProvideDictTranslation{invoice2-net-total}{Nettobetrag}

355 \ProvideDictTranslation{invoice2-vat-total}{USt}

356 \ProvideDictTranslation{invoice2-gross-total}{Gesamtbetrag}

357 h/dictGermani

6.3 Swiss German Dictionary

358 h*dictSwissGermani

359 \ProvideDictionaryFor{Swiss German}{invoice2}

360 \ProvideDictTranslation{invoice2-thousands-sep}{’}

361 \ProvideDictTranslation{invoice2-decimal-point}{.}

362 h/dictSwissGermani

(21)

Change History

1.0

General: First public release . . . 7

1.1 General: Bugfix release . . . 7

1.2 General: Bugfix release . . . 7

Index

The italic numbers denote the pages where the corresponding entry is described, numbers underlined point to the definition, all others indicate the places where it is used. Symbols \" . . . 352

\$ . . . 57

\% . . . 172

\, . . . 17, 159, 172, 334, 347 \\ . . . 138, 242, 281, 287, 297, 329 \␣ . . . 118, 126, 278, 294 B \begin . . . 4, 96 \begin{invoice} . . . 4, 320 \beginlongtable . . . 12

boolcommands: \bool_if:NTF . . . 84, 86, 93, 101, 109, 117, 125, 158, 184, 187, 190, 194, 202, 210, 218, 223, 258, 259, 265, 269, 274, 277, 285, 293, 308 \bool_if:nTF . . . 88, 114, 207, 260 \bool_new:N . . . 28, 31, 32, 41, 43, 44 \bool_set_true:N . . . 176, 179, 311 \bottomrule . . . 304

C \cellcolor . . . 94, 266, 270 cscommands: \cs_new:Nn . . . . . . 82, 91, 100, 105, 108, 113, 123, 130, 141, 149, 162, 165, 174, 182, 193, 198, 201, 206, 215, 222, 233, 255, 263, 273, 284, 290, 299, 307, 315 D \DeclareTranslationFallback . . . . . 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 E \end . . . 4, 98 \endlongtable . . . 305

\end{invoice} . . . 4, 320 euro . . . 7

expcommands: \exp_args:Nx . . . 83

F fpcommands: \fp_add:Nn . . . 183, 186, 189 \fp_compare:nTF . . . 175, 178 \fp_eval:n . . . 170, 209, 217 \fp_new:N . . . 27, 45, 46, 47 \fp_use:N . . . 163, 247, 252 G \GetTranslation . . . . . . . . 102, 106, 110, 116, 124, 144, 145, 154, 155, 168, 169, 276, 286, 292 I \IfValueTF . . . 247, 252, 321 intcommands: \int_eval:n . . . 256

\int_gincr:N . . . 231

\int_gset:Nn . . . 312

\int_if_odd:nTF . . . 224

\int_new:N . . . 30, 42 \int_use:N . . . 150 invoice . . . 2,4,8,12,19

\invoiceitem . . . 4,4, 245

\invoiceoptions . . . 4,7, 79 invoiceoptions . . . 2,8,11

\invoicesingleitem . . . 4,4, 245 invoicetwointernal commands:

\__invoicetwo_add_row:nnnn . . . . . . . . 233, 246, 251

(22)

\l__invoicetwo_amount_nonone_- bool . . . 44, 84, 88, 101, 114, 176, 194, 207, 259, 260

\__invoicetwo_begin_invoice:n . . . . . . 307, 321

\l__invoicetwo_colorize_bool . . . . . . 32, 63, 93, 223, 265, 269

\__invoicetwo_colorize_row: 222, 237

\__invoicetwo_colorize_row:nnn . 222

\l__invoicetwo_currency_fraction_- digits_int . . . 30, 58, 150

\l__invoicetwo_currency_in_- header_bool . . . .

. . . 31, 61, 117, 125, 158, 277, 293

\l__invoicetwo_currency_symbol_- tl . . 29, 55, 118, 126, 159, 278, 294

\__invoicetwo_end_invoice: . 315, 324

\l__invoicetwo_even_color_tl . . . . . . 35, 70, 228

\l__invoicetwo_gross_total_fp . . . . . . 47, 183, 297

\l__invoicetwo_in_invoice_bool . . . . . 41, 308, 311

\l__invoicetwo_included_vat_bool . . . 28, 53, 184, 187, 190, 210, 218

\l__invoicetwo_net_total_fp . . . . . . . 45, 189, 281

\l__invoicetwo_odd_color_tl . . . . . . . 33, 67, 225

\__invoicetwo_print_amount:n 193, 238

\__invoicetwo_print_amount_-

title: . . . 100, 133

\__invoicetwo_print_begin_table:

. . . 82, 131

\__invoicetwo_print_column_-

specification: . . . 82

\__invoicetwo_print_column_-

title:n . 91, 102, 106, 110, 115, 124

\__invoicetwo_print_currency_- value:N . . . 149, 281, 287, 297

\__invoicetwo_print_currency_- value:n . . . 149, 208, 216

\__invoicetwo_print_footer: 299, 318

\__invoicetwo_print_footer_-

item:n . . . 263, 275, 286, 291

\__invoicetwo_print_gross_item: . . . . 290, 303

\__invoicetwo_print_header: 130, 316

\__invoicetwo_print_item:n . 198, 239

\__invoicetwo_print_item_title: . . . . 105, 134

\__invoicetwo_print_multicolumn_- count: . . . 255, 264

\__invoicetwo_print_net_item: . . . . . . 273, 301

\__invoicetwo_print_percentage:n . . . 165, 203

\__invoicetwo_print_price:nnn . . . . . . 215, 242

\__invoicetwo_print_price_title:

. . . 123, 137

\__invoicetwo_print_real_value:n . . . 141, 195

\__invoicetwo_print_unit_price:n 206

\__invoicetwo_print_unit_-

price:nn . . . 206, 241

\__invoicetwo_print_unit_price_- title: . . . 113, 136

\__invoicetwo_print_vat:n . . 201, 240

\__invoicetwo_print_vat_item: . . . . . . 284, 302

\__invoicetwo_print_vat_title: . . . . . 108, 135

\g__invoicetwo_row_number_int . . . . . . 42, 224, 231, 312

\l__invoicetwo_row_number_int . . . 42

\l__invoicetwo_tabular_tl 48, 236, 317

\l__invoicetwo_title_color_tl . . . . . . 37, 73, 94

\l__invoicetwo_total_color_tl . . . . . . 39, 76, 266, 270

\__invoicetwo_update_totals:nnn . . . . 182, 235

\__invoicetwo_update_trackers:nn . . . 174, 234

\l__invoicetwo_vat_fp 27, 50, 247, 252

\l__invoicetwo_vat_nonzero_bool . . . . 43, 86, 88, 109, 114, 179, 202, 207, 258, 260, 274, 285

\l__invoicetwo_vat_total_fp . . . . . . . 46, 186, 287

K keyscommands:

\keys_define:nn . . . 49

\keys_set:nn . . . 80, 313

L

\LoadDictionaryFor . . . 14, 15, 16

\longtable . . . 83 longtable . . . 19

M

\midrule . . . 139, 300 msgcommands:

\msg_error:nn . . . 309

\msg_error_text:n . . . 327

(23)

\msg_new:nnnn . . . 326

\multicolumn . . . 92, 264

N

\NewDocumentCommand . . . 79, 245, 250

\NewDocumentEnvironment . . . 320

\num . . . 142, 150, 166

P

\PassOptionsToPackage . . . 9

\ProcessKeysOptions . . . 78

\ProvideDictionaryFor . . . . 333, 346, 359

\ProvideDictTranslation . . . . . 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 360, 361

\ProvidesExplPackage . . . 12

R

\RequirePackage . . . 3, 4, 5, 6, 7, 8, 10, 11

\rowcolor . . . 225, 228

T

\textbf . . . 97, 268 tlcommands:

\tl_new:N . . . 29, 33, 35, 37, 39, 48

\tl_put_right:Nn . . . 236

\tl_set:Nn . . . 34, 36, 38, 40

\tl_use:N . . 118, 126, 159, 278, 294, 317

\toprule . . . 132

References

Related documents

Le lieu et le titre sont mis en premier dans la seconde colonne, chacun dans la bonne fonte, et en les faisant suivre d’un point. Ensuite, on ajoute, si elle existe,

The latex8 option instructs IEEEconf to violate the IEEE Computer Society Press guidelines in the same manner that the latex8 package provided by the IEEE Computer Society

M AGNETICS formats present a difficulty in that compsoc and transmag journal (but not compsoc conference) papers place the abstract and index terms sections in single column format

The package consists of a preprocessor that converts an indented list tree format into L A TEX input (plain TEX doesn’t seem to work), and some macro files which lay out the trees

\nodeconnect takes the same arguments as in tree-dvips, with a final optional [ ] argument taking PSTricks graphics parameters:.. (4) \nodeconnect[from loc]{from node}[to

Certain derived units have been given special names and symbols, and these special names and symbols may themselves be used in combination with those for base and other derived units

We define a macro for the external massaging of the ABC files and another one for the case the user doesn’t trust or have available the \write18 trick; the second one spits out a

If you use more than one cusp within your hbrace speci, you can separate scripts using &amp; which will place them above/below subsequent brace cusps, similar to separating

• titlepage class option: The abstract heading (i.e., value of \abstractname) is typeset centered in a bold font; the text is set in the normal font and to the normal width..

Wie bereits gesagt, sind die Enden von Absätzen nicht wirklich zuverlässig erkennbar, so dass häufig erst bei dem Beginn einer neuen Struktur auf ein Ende geschlossen werden kann.

This document explains how the accessibility package can be used with L A TEX to prepare documents that pass such tests2. This document is also intended to be used as a test case as

This is an example document for the achemso document class, intended for sub- missions to the American Chemical Society for publication.. The class is based on the standard L A TEX

The package does nothing if the super option has not been given to natbib. This means that the source can be written without needing to decide where citations will to appear, with

The option anonymous is used for anonymous review processes and causes all author information to be obscured.. The option timestamp is used to include a time stamp in the footer of

In particular, all journals listed in Table 5 are includes, so you can use strings like journal = taccess for ACM Transactions on Accessible Computing... 2.13.2 Processing using BibL

\Author, \Address, \Phone, and \Email should be used only withing the standard \author-command, used to produce the title section of the paper The first given hAuthor i is printed

short-acc = { ⟨ text ⟩ } if unused then equal to short Sets the ActualText property as presented by the accsupp package for the short form of the acronym.. long-acc = { ⟨ text ⟩ }

Numbers written in italic refer to the page where the corresponding entry is de- scribed; numbers underlined refer to the code line of the definition; numbers in roman refer to the

When using \dXXX, the order in which the elements are composed is font before prefix \currencyunit pre-between \value after when the currency unit is printed before (pre=false),

The LaTeX package decision-table provides a command \dmntable, which allows for an easy way to generate decision tables in the Decision Model and Notation (DMN) format. 1) This

If you want some text typeset with the duerer fonts for a short text you can use one of the commands. \

Finally, the \printindex command is used in your L A TEX document to indicate where the file foo.idx should be inserted, i.e., where the index should appear in your document.. The

(amount in foreign currency given, as well as exchange rate stated), the com- mand will automatically calculate the resulting amount in base