LogoLogo
ClausesDatafieldsSpecial FunctionsStylingQ&AAPI
  • Welcome!
  • Getting started
    • What is Clause9?
    • Structuring your clause library
    • Structuring your clauses
    • Drafting modes in Clause9
    • Creating a questionnaire
    • Sample clauses
    • Videos
      • Concepts and datafields
      • Conditions
      • Q&As
      • Binders
      • Styling
      • Enumerations
      • Tables
      • Definitions
      • Snippets
      • Cross-references
      • Special functions
      • Examples of common clauses
      • Import clauses from MS Word
      • Grammatical conjugations
      • Action buttons
      • Alternative clauses
  • Assemble document
    • Document toolbar
    • Clause hierarchies
    • Focus Mode
    • Bulk generation of documents
    • Exporting documents
    • Assemble Document - FAQ
    • How to: Assemble Document
      • Insert images
  • Assemble Document Operations Panel
    • Operations panel
    • File pane
    • Edit pane
    • Document pane
    • Binder pane in the operations panel
    • Search pane
    • Browse pane
    • Terms pane
    • Data dashboard
    • Advanced pane
    • Styling pane
    • Miscellaneous pane
    • Visibility settings & actions menu
  • Binders
    • Binders: general
    • Styling cross-references to subdocuments
    • Global and local definition lists
    • Document and binder properties
    • Styling of a Binder versus subdocuments
    • (Un)locking documents in a binder
    • Binders - FAQ
    • How to: binders
      • Make a subdocument in a binder conditional
  • Clauses
    • Introduction to clauses
    • Clause structure
    • Grammar sheet
    • Writing conditions
    • Examples of conditions
    • Using codes instead of text fragments
    • Bold, italic and underline
    • Special codes
    • Enabled?
    • Links
    • Cross-references
    • Introduction to tables
    • Deviating table styling
    • Shrinking clauses
    • Action buttons
    • Enumerations
    • File position
    • Snippets
    • Parameters
    • Conjugations
    • Mixing data types
    • For-loops
    • Clause versioning
    • Abstract article references
    • Advanced multi-language features
    • Clauses - FAQ
    • How to: clauses
      • Create an ad-hoc clause
      • Create a library clause
      • Make a clause repeat
      • Make a paragraph within a clause conditional
      • Use a shortcut to refer to a concept
      • Insert a line break or page break
      • Creating a list with both predefined options and free input
      • Defining alternative clauses
      • Creating cross-references
      • Creating signature blocks
      • Creating advanced party introduction clauses
      • Automatically numbered annexes or schedules
      • Reuse any clause in a different context
      • Setting MS Word document properties
      • Add action buttons to clauses
      • Electronically signing documents
  • concepts
    • Introduction to concepts
    • Creating concepts
    • Concept labels
    • Links
    • Organising concepts
    • Concepts - FAQ
    • How to: concepts
      • Add predefines to a datafield
  • Datafields
    • Introduction to datafields
    • Types of datafields
    • Rules of thumb for using datafields
    • Data-expressions
    • Datafield aliases
    • Datafield labels
    • Datafield special tags
    • Datafield descriptions
    • Repeating list datafields
    • Datafield predefines
    • Datafields - FAQ
    • How to: datafields
      • Change datafield type
      • Change the datafield's name or alias
  • Definitions
    • Introduction to definitions
    • How to: definitions
      • How do definitions work?
      • Create a definition
  • Files
    • How files are organised
    • Browse files
    • File types
    • Custom styling
    • Legal comments
    • File description
    • Attributes
    • Reporting
    • File name
    • File category
    • Access rights
    • How to: files
      • Creating advanced folders
      • Naming your files
      • Shortcuts to folders or files
  • Q&A
    • About cards
    • Cards pane
    • About changes
    • Changes pane
    • Types of changes
    • Adding conditions
    • Question options
    • Copying & pasting answers
    • Comments, notes & documentation
    • Interactive Q&A inspection
    • Embedding questions into a document
    • “Changes” button
    • Batch create pane
    • Identifiers pane
    • Import pane
    • Edit clauses pane
    • Q&A options
    • Q&A - FAQ
    • How to: Q&A
      • Create predefined answers to a question
      • Add disclaimers
      • Create categories of questions
      • Modify the exported filename
      • Create a question to change the language of a document
      • Send a questionnaire to someone without a ClauseBase account
      • Create questions for repeating list datafields
      • Selecting legal entities & addresses
      • Create a questionnaire using "batch create"
      • Launch other Q&As
    • Leveraging ClauseBuddy Smart Templates in Clause9
  • Import
    • Introduction to importing clauses
    • Uploading clauses
    • Defined terms in Import mode
    • Datafields in Import mode
    • Cross-references in Import mode
    • Assigning folders
    • Conversion process
    • Exporting
    • Stashing intermediate results
    • Tips, tricks & limitations
  • Styling
    • Styling overview
    • Base styling
    • Numbering
    • Definitions styling
    • Enumerations styling
    • Locale styling
    • References styling
    • Page styling
    • Styling of a Binder versus subdocuments
    • Styling: tips and tricks
    • Advanced styling topics
    • Copying headers and footers from an MS Word file
    • How to: styling
      • Using custom fonts
      • Change bullet styling
  • Special functions
    • Introduction
    • Calculations
    • Concepts
    • Conditions
    • Conjugations
    • Content Control Elements
    • Datafields
    • Dates & durations
    • Languages
    • Lists
    • Numbers
    • References
    • Repeating (looping)
    • Special items
    • Text structure
    • Text modification
    • User
    • Q&A
  • Settings
    • Account
    • Preferences
    • Access bundles
    • Favourites
    • Saved searches
    • Saved datafields
    • Styles
    • Default styles
  • Admin
    • General
    • Users
    • User rights
    • Profiles
    • Groups
    • Styles
    • Default styles
    • Attribute models
    • Usage page
    • Custom homepage
    • Global placeholders
    • Access rights
    • How to: admin
      • Adding a new user
      • Disabling a user
      • Managing group memberships
  • Miscellaneous
    • Advanced tips & tricks
    • Typing special symbols on your keyboard
    • Shortcuts
    • Grammar style guide
    • Inserting MS Word files
    • Globo-panel
    • Creating high-quality documents
    • Excel calculations and lookups
  • Integrations
    • Overview
    • Spreadbases
    • E-signing documents
    • Drag & drop integrations
  • For developers
    • Clause9 API
    • Custom functions
    • Example custom functions
Powered by GitBook
On this page
  • @a-or-an
  • @acc
  • @art-undef
  • @in-language
  • @is-plural
  • @is-singular
  • @is-female
  • @is-male
  • @is-neutral
  • @male-female
  • @multi-language
  • @case
  • @art-def
  • @one-else
  • @one-else-nr
  • @possessive
  • @plural
  • @singular
  • @singular-plural
Export as PDF
  1. Special functions

Conjugations

@a-or-an

  • parameter: some text (a word)

  • returns: that word, preceded by either “a” or “an”

This function inserts the undefined article “a” or “an” before an English word. For example, when passing “house” it will return “a house”, while if passing “animal” it will return “an animal”.

Please note that, while this special function uses a reasonably advanced algorithm and takes into account many different exceptions, there exists no exhaustive list of words and their undefined article, so in a few edge-cases errors may occur.

@acc

  • any type of parameter

  • returns: that same parameter, but flagged as requesting the accusative case

  • see also: @case

This function causes its parameter to be flagged as requiring the accusative case. Currently, the only scenario where this is supported, is for durations in Lithuanian. (Please contact us if you would have your own use cases).

This function has no effect in languages that do not support cases (such as English, French and Dutch).

@art-undef

  • parameter: a concept

  • returns either nothing (if no undefined articles apply in the language) or text representing the correct undefined article

For example, in French, @art-undef(#buyer) would return un if the conceptlabel would be set to “acheteur”.

This special function operates in exactly the same way as @art-def, except that it returns an undefined article.

@in-language

  • first parameters: either a datafield or a #concept

  • second parameter: a two-character string referring to the language (“en”, “nl”, “fr”, “lt”, “de”, …)

  • returns text (or nothing)

  • see also: @multi-language

When a text-datafield (#concept^datafield) is passed as a parameter, this function will return the value of that datafield in the specified language.

When a #concept is passed as a parameter, this function will return the current concept-label for that concept in the specified language.

For example, assume that your main language is French and that you want to translate the French clauses to English, whereby the concept-label #president gets outputted as “Président” in French and “Chairman” in English. In the signature box — which should obviously not get translated — you can then insert the following text in the French version:

#president / @in-language(#president, "en")

This would then output as “Président / Chairman”. When you would change the concept-label, it would immediately get updated as well.

Similarly, if the function of a certain person would get stored in a multi-language text-datafield, you could use @in-language(#signatory^function, "en") in the uni-language signature box to pull the English data from the datafield.

@is-plural

  • parameter: a defined term (#concept)

  • returns true or false

  • see also: @is-singular

Returns true if the preferred number for the defined term is plural; otherwise returns false.

For example, @is-plural(#employee) will return true if the conceptlabel used for concept “employee” defaults to the plural form.

Tip: you can easily invert the behaviour of this special function: not(@is-plural(#employee)) will return true if concept “employee” is not currently set to a plural word.

@is-singular

  • parameter: a defined term (#concept)

  • returns true or false

  • see also: @is-plural

Returns true if the preferred number for the defined term is singular; otherwise returns false.

For example, @is-singular(#employee) will return true if the conceptlabel used for concept “employee” defaults to the singular form.

Tip: you can easily invert the behaviour of this special function: not(@is-singular(#employee)) will return true if concept “employee” is not currently set to a singular word.

@is-female

  • parameter: a defined term (#concept)

  • returns true or false

  • see also: @male-female and @is-male / @is-neutral

Returns true if the current conceptlabel of the specified concept is set to female.

For example, @is-female(#employee) will return true if the conceptlabel used for concept “employee” is currently set to a word with female gender.

Tip: you can easily invert the behaviour of this special function: not(@is-female(#employee)) will return true if concept “employee” is currently set to a word with neutral or male gender.

@is-male

  • parameter: a defined term (#concept)

  • returns true or false

  • see also: @male-female and @is-female / @is-neutral

Returns true if the current conceptlabel of the specified concept is set to male.

For example, @is-male(#employee) will return true if the conceptlabel used for concept “employee” is currently set to a word with male gender.

Tip: you can easily invert the behaviour of this special function: not(@is-male(#employee)) will return true if concept “employee” is currently set to a word with neutral or female gender.

@is-neutral

  • parameter: a defined term (#concept)

  • returns true or false

  • see also: @male-female and @is-female / @is-male

Returns true if the current conceptlabel of the specified concept is set to neutral gender (for those languages that support it, such as Dutch).

For example, @is-neutral(#employee) will return true if the conceptlabel used for concept “employee” is currently set to a word with neutral gender.

Tip: you can easily invert the behaviour of this special function: not(@is-neutral(#employee)) will return true if concept “employee” is currently set to a word with male or female gender.

@male-female

  • parameter: a defined term (#concept), some second parameter, and some third parameter

  • returns either the second parameter or the third parameter

  • see also: @is-male and @is-female

Returns the second parameter if the specified concept is currently set to a male conceptlabel, and returns the third parameter if the specified concept is currently set to a female conceptlabel. Returns nothing if no conceptlabel is set, or the conceptlabel is set to the neutral form (in languages that have a neutral form, such as Dutch).

For example, @male-female(#employee, 5, 6) will return 5 if the current conceptlabel of #employee is set to male, and returns 6 if set to female. Similarly, @male-female(#employee, "Mr", "Ms") will return either Mr or Ms

@multi-language

  • no parameters

  • returns true or false

  • see also: @in-language

Returns true if the current document contains multiple languages at once (i.e., is printed with multiple columns). Note that this will never be the case when a document is shown within the browser.

Tip: you can easily invert the behaviour of this special function: not(@multi-language) will return true only one single language is being outputted.

@case

  • parameters:

    • a concept or reference

    • text, with the first letter(s) of the required grammatical case

  • returns the parameter (e.g., if a concept was specified, it will return a concept) with the grammatical case applied to it

@art-def

  • parameter: a concept

  • returns either nothing (if no defined articles apply in the language) or text representing the correct defined article

For example, in French, @art-def(#buyer) would return l' if the conceptlabel would be set to “acheteur”.

This special function can be useful for situations where you need to split the article from the concept — as would for example be the case when you want the defined term to be bold, but not its article. For languages such as English (where the defined article is always the same), you can simply write something like the ~#-employer~ . In German, however, the article will change depending on the gender and grammatical function of the noun (concept), so you do not necessarily know which article will apply. In such cases, @art-def is crucial, as it allows you to write @art-def(#employer) ~#-employer~ .

Tip: you can force a certain grammatical case by combining @art-def with @case. In the previous example, you could for example write @art-def(@case(#employer, "g")) ~#-@case(employer, "g")~ to force both the article and the conceptlabel into genitive.

@one-else

  • first parameter: a whole number (or a duration, for which the number will then be extracted)

  • second and third parameter: text

  • returns text

  • see also: @one-else-nr

Returns the second parameter if the first parameter is equal to 1 or -1. In all other cases, returns the third parameter.

This function is typically used as a shortcut form — see the examples below.

Examples:

  • @one-else(1, "unit", "units") will result in “unit”. It would be similar to writing {#some^datafield = 1: unit | else: units}

  • @one-else(3, "unit", "units") will result in “units”

@one-else-nr

  • first parameter: a whole number (or a duration, for which the number will then be extracted)

  • second and third parameter :text

  • returns the number, followed by the text

  • see also: @one-else

Returns the number, followed by:

  • the second parameter if the first parameter is equal to 1 or -1;

  • in all other cases, returns the third parameter.

This function is typically used as a shortcut form — see the examples below.

Examples:

  • @one-else-nr(1, "unit", "units") will result in “1 unit”. It would be similar to writing {#some^datafield = 1: 1 unit | else: #some^datafield units}

  • @one-else-nr(3, "unit", "units") will result in “3 units”

@possessive

  • parameter: text (or some parameter that can be converted to text)

  • returns the text with either 's or ' appended

Only supported in Danish, Dutch, English and Swedish. In all other languages, the word is returned as-is (unmodified).

In the supported languages, this function returns the word with either only an apostrophe, or both an apostrophe and the letter “s” appended. The idea is to return the possessive (genitive) form.

For example, in English, this adds both apostrophe and the letter “s” when the original word does not end on the letter “s” — e.g., house becomes house's, while series becomes series' . Slightly different rules apply for Dutch, Danish and Swedish.

Do note that the algorithm used is not perfect, and does not perform a lookup in the dictionary. A minority of words will therefore be incorrect in the possessive form.

@plural

  • parameter: #concept

  • returns text (label of the concept)

  • see also: @singular

Returns the label of the passed concept, in plural form if possible.

@singular

  • parameter: #concept

  • returns text (label of the concept)

  • see also: @plural

Returns the label of the passed concept, in singular form if possible.

@singular-plural

  • first parameter: a whole number

  • second parameter: a defined term (#concept)

  • see also: @one-else

Returns the singular form of the specified concept if the first parameter is equal to one; otherwise returns the plural form of the specified concept.

For example, @singular-plural(1, #concept) will return the singular form of the conceptlabel assigned to #concept.

PreviousConditionsNextContent Control Elements

Last updated 1 year ago

In both scenarios, this function can help constructing multi-language documents. In particular, this function allows you to use phrases such as “Président / Chairman” in .

For example, @case(#buyer, "g") will return the specified concept, forced into the genitive. Read more about the use of grammatical cases on the .

See a that talks about this function.

See a that talks about this function.

Conjugations page
dedicated video
dedicated video
a paragraph that is prohibited from being translated in a multi-language output