Algebraic notation

Unlike Gliński's hexagonal chess, which is adapted to the algebraic notation of orthodox chess, its own notation seemed desirable, which would make it easier to read on a large chessboard, while sacrificing compatibility.

Piece identification letters

Each of the chess pieces is identified by a letter. This letter, in C'escacs, and in the algebraic notation CTL-AN, is invariant with the language. The letters are used in capital letters, but when it is necessary to differentiate the colour of the piece, capital letters are reserved for white, and lower case letters for black.

Possible alternatives are also defined for some pieces, to partly preserve certain habits and tradition, but a consistent use of these alternatives is required, using the same character to denote a piece throughout the game; in the formal notation CTL-AN the declaration of the alternative letter must be incorporated at the beginning, before its use, thus invalidating the standard identification letter.

Piece identification letters
PawnElephant (Halberdier)BishopKnightPegasusRookWyvern (Dragon)QueenKing
♙ ♟☖ ☗♗ ♝♘ ♞🩐 🩓♖ ♜🩏 🩒♕ ♛♔ ♚

Below the name of each piece is shown, in a large font, what the specific Unicode characters look like. Shogi symbols are used for the elephant, since there are no assigned characters, but they are already appropriate. The last row of the table shows the alternative identification letters that can be used for some pieces.

Unicode chess characters

There are also Unicode chess characters, which can be used instead of the identification letters in the notation called CTL-FAN. In this case, it has to be taken into consideration that the character to represent a piece is different depending on the colour of the piece, but analogously to the case of the letters, white piece version will be used as neutral, except when there is the indispensable requirement to differentiate them by colour; This makes the conversion from CTL-FAN to CTL-PGN simple and straightforward, but overuse of graphical symbols can complicate the conversion.

The graphic symbols of CTL-FAN notation have certain utilities, but, in general, it is not recommended as a mechanism for algebraic notation, as it makes it difficult to read if the characters are not of very large fonts, and it presents difficulties to be written by hand by people, nor on a keyboard with a computer.

C'escacs board

C'escacs hextiled board.

A Hextiled chequerboard has three colors. The C'escacs board is a hexagonal hextiled chessboard, and the colours of the hextiles are called: white, black and coloured, distributed in such a way that the central hextile is coloured. These hextiles are also named hexes, as an abbreviation of hextile. In the case of C'escacs, the board has the shape of a regular hexagon with 169 hexes, eight on each side. The three longest files have fifteen hexes each, the three intersecting at the central hex, which is coloured.

The board is positioned with two of the vertices pointing to the two players facing each other, so that the hexes are aligned in lengthwise files, which are called columns. There are also oblique files in two other inclined directions.

We also note that the hexes of the same colour form transversal lines or cross-lines that cross the hextiled board from left to right, perpendicular to the columns; oblique lines are formed in two other directions, more inclined than the oblique files.

The six vertices of the hextiled board are three white and three black; this means that the board must be correctly oriented to play; the white player will have a black vertex, thus positioning the King and Queen in white hexes, contrary to the black player, who will have a white vertex, thus positioning King and Queen in black hexes: King and Queen in hexes of his colour.


The positioning of the board has to be such that the white King and Queen are initially placed in white hexes, and the black ones in black hexes. In this position, the columns are named using one letter, from left to right for white: P, T, A, B, C, D, E, F, G, H, I, K, L, X, Z. The name of the eleven central columns coincides with the name of the columns of Gliński's hexagonal chess, and also the fact that the J is not included. In C'escacs, four new columns have been added, bringing the total number of columns to fifteen.

The F-column is the central column, which divides the board into two flanks or wings: the queenside and the kingside.


The cross-lines, or transversal lines, are numbered from zero to twenty-eight, starting from the white court. Transverse lines zero and twenty-eight are single hex lines, but counting them there are a total of twenty-nine cross-lines.

Line fourteen divides the board into two halves: White's half and Black's half. The fourteenth line hexes do not belong to either of the two halves, and this line is called the midline; the hexes in this line are coloured, and in the F-column the central hex of the board is defined.

Hex identification: CTL coordinates

A hex is uniquely identified by the column and cross-line to which it belongs, a letter and a number which are written one after the other, without separation.

This way of naming the hexes of a hextiled board is called CTL coordinates, where CTL is the acronym for Column and Transversal Line.

One can think that it is an anomaly that the values of the hexes of a column are exclusively even or only odd; in F-column the values are F0, F2, F4, F6… while in E-column the values are E1, E3, E5, E7… as well as in G-column: G: G1, G3, G5, G7… Indeed, there are even columns and odd columns, and advancing two units each time you move up or down the column is actually more natural than it might seem, considering the arrangement of the columns.

It is true that the columns do not all start at the same number, but this is also a consequence of the geometry of the board, since the different columns have different lengths. The biaxial system used in Gliński's hexagonal chess seeks this property, but only fulfils it for White, sacrificing in exchange the continuity of the orthogonal and diagonal moves when they cross the central column F. In C'escacs it has been preferred to maintain the continuity of the moves in order to facilitate the reading of the algebraic notation.


Orthogonal movement

  • Moving up/down the column increments/decrements the line number by two.
  • The other four orthogonal moves are obtained by incrementing/decreasing the column by one, and at the same time incrementing/decreasing the line by one.

Example, displacements from the central hex, F14:

  • F12, F16, E13, E15, G13, G15

They allow us to define the three orthogonal movements that cross the hex F14, and a perfect continuity is observed:

  • F12-F14-F16
  • E13-F14-G15
  • G13-F14-E15

Diagonal movement

  • The displacement along the transverse line increases/decreases the column by two.
  • The other four diagonal shifts are obtained by incrementing/decreasing the column by one, and at the same time incrementing/decreasing the line by three.

Example, displacements from the central hex, F14:

  • D14, H14, E11, E17, G11, G17

They allow us to define the three diagonal movements that cross the hex F14, and a perfect continuity can be observed:

  • D14-F14-H14 (even columns, same cross-line)
  • E11-F14-G17
  • G11-F14-E17
  • Remember that in diagonal moves the colour of the hex is maintained.

Algebraic notation: CTL-AN

The algebraic notation uses CTL coordinates, and for this reason it is called CTL-AN, an acronym for Columns and Transversal Lines Algebraic Notation. A Reversible Algebraic Notation is used, an extension of the Long Algebraic Notation that includes in the captures, the captured piece. Using a long algebraic notation avoids ambiguities, which are much more frequent than in orthodox chess, and the increase in length due to including the captured piece in the captures is negligible, greatly improving the readability.

The CTL-AN notation is referred to as CTL-FAN when piece-specific Unicode characters are used instead of identification letters.

Notation of a movement

  1. The first character indicates the type of piece it moves, the identification letter of the piece, except in the case of a pawn, which is omitted.
  2. Then, without separation, the CTL coordinates of the hextile of origin.
  3. A separation:
    • For movements without capture, a hyphen (U+2010), but the multi-purpose hyphen-minus character - (U+002D), which is always available on keyboards, is also admissible.
    • In the captures, the source hextile is separated from the destination hextile by the character × (U+00D7), the multiplication symbol, but in manual input using the computer you can use the asterisk symbol *, which is more accessible with the keyboard. The letter x must never be used.
      • For the en passant capture and the scornful pawn capture the character @ (at) is used instead of the multiplication character ×.
      • When a pawn that makes a triple move is captured in passing over the line where the capturing pawn is, i.e. when the en passant capture is made on the first of the two hextiles that the pawn crosses in a triple move, two @ (at) characters are used instead of just one.
  4. None for ordinary movements, but if it is a capture, the destination hextile is prefixed with the character of the identifying letter indicating the type of piece being captured, except in the case of a pawn, where the captured piece is not indicated.
    • The piece indicated is in the target hextile; in the en passant capture the piece is not indicated, and neither is in the scornful pawn capture, because it is a pawn, except in the very rare case of capturing a pawn in its promotion, in which case the promoted piece is captured and must be indicated.
    • This rare case of en passant capture can only happen in the flank columns: T, A, L y X.
    • The case for scornful pawn capture is also limited to the flanks:
      • Promotion in columns T or A, with a scornful move from column A or B respectively.
      • Promotion in columns L o X, using a scornful move from column K o L respectively.
  5. The CTL coordinates of the destination hextile.
  6. If it is the move of a pawn that reaches the last hextile of the column, the promotion is indicated by the symbol =:
    • If there is a regainable piece, then the letter identifying the piece to which the pawn promotes is added.
    • If there is no recoverable piece, the ampersand symbol & is added, indicating the situation of a pawn awaiting promotion.

Exceptions in movement notation

  1. The specific notation for castling, with the prefix KRK when using the king's rook, KRD if using the queen's rook, or KRR when using both, in the case of double castling. This is followed by a hyphen (U+2010), or the multi-purpose hyphen-minus character - (U+002D), which is generally available on keyboards, and finally a two-character identifier indicates the target rank of the King and Rook, three characters in the case of double castling, to indicate the ranks of both rooks.

    See the specific details in the section on simple castling and in the section on double castling.

  2. The specific notation for the promotion of a pawn awaiting promotion, a specific and very rare case of forced movement. The anomaly of this case is that it is written starting with the destination hextile, because in this particular case there is no displacement from an origin hextile.

Check indication

As part of the move notation, without separation, an indicator is added if the opponent's King is threatened (check); it can also occur in the two exceptions to the move notations, as it is possible to check with a castling move.

  • + Check.
    • +∞ Check from afar, from a hextile not adjacent orthogonally or diagonally to the King's position. The symbol is optionally alternative to the check indicator to add information.
    • +^ Adjoining check, from an orthogonally or diagonally adjacent hextile, or Check on the knight's leap. The symbol is optionally alternative to the check indicator to add information. Indicates that the King must be moved or the threatening piece captured.
    • ++ Double check. The symbol is optionally alternative to the check indicator to add information. Indicates that the King must necessarily move.
  • # Checkmate. This indicator also acts as an end-of-game indicator.

Movement assessment

After each move, separated by a space, an rating can be added, except after a last move that provokes checkmate, which is understood not to require a rating:

  • ? Poor move or mistake; NAG equivalent: $2.
  • ?? Very poor move or blunder; NAG equivalent: $4.
  • ?! Questionable or dubious move; NAG equivalent: $6.
  • ! Good move; NAG equivalent: $1.
  • !! Very good or brilliant move; NAG equivalent: $3.
  • !? Speculative or interesting move; NAG equivalent: $5.
  • (U+25C7, White Diamond) forced, only move; NAG equivalent: $7.

Indicator relating to the game

Finally, in a move you can incorporate an indicator regarding the game. This indicator is separated from the move with a space, but is joined with the rating, if any:

  • (=) The player offers a draw (can only be done after moving).
  • : (colon) Last move; end of the game or point where it has been interrupted.
    • It is mandatory, except in checkmate completion, which is ended with #.
  • (=): Combine both symbols: the player offers a draw, and the game is interrupted; the result indicator must be read to determine if the draw has been accepted, or if the game has been interrupted and must be continued.

Examples, combined with movement assessment:

  • ?!(=): Combine dubious move rating, the player offers a draw, and the game is interrupted; the result indicator must be read to determine if the draw has been accepted.
  • ◇(=): Combine forced move rating, the player offers a draw, and the game is interrupted; the result indicator must be read to determine if the draw has been accepted.
  • (=) The player offers a draw. If there is no valuation of the move, it appears after a space; if it is not followed by a colon (:), it means that the draw have not been accepted and the moves continue.

Sequence of moves

A move is a pair of White/Black moves. Each move is written on a line, numbered starting with the number one, but also, all the moves can be written to form a single line. The movement number is separated by a dot and a space from White's move. Then, separated by a comma and a space, Black's move. Only the last move can be a single move, when the last move of the game was a move by White. The last move, whether it is White's last move or Black's last move, shall end with the end symbol (: colon) or with the checkmate symbol (# pad).

Final result game score

The last line, after the last move ended with the completion symbol, or with the checkmate symbol, is the final indicator of the outcome of the game; it supports five different possible values, and an additional one for non-completed games:

  • 3-0 White wins.
  • 2-1 White stalemates Black's King.
  • 0-3 Black wins.
  • 1-2 Black stalemates White's King.
  • 1-1 Draw.
  • * (asterisk) Unfinished game.

Exception: continuation of games

The annotation of a game does not always start with the first move; perhaps a game has been retaken, or part of a fictitious position, or simply has not been annotated from the start.

To annotate a position for later retaking the game there is the PDTL (Position Description by Transversal Lines) format, but it is not properly part of the CTL-AN algebraic notation; it is incorporated as a tag value in a label, and is detailed below.

  1. The first move may begin with a move by Black. In this case White's move is replaced with a ellipsis (three dots), either by using the Unicode character (U+2026), or by using three dot characters "...", followed by a comma, a space and Black's move.
  2. The first move may not be number one, and in that case it will start with another number.
    • If the starting movement number is not known, start with one, but end the number one with a question mark (?) instead of a dot; the numbering will continue from this value; example:
      1? …, RC25-D26 2. VF10-H14, RD26-H22

PDTL: Record board position

In addition to representing the moves with algebraic notation, there is the need to record the state of a game that is interrupted, in order to be able to resume it, and many other reasons that may exist for recording a specific position on the board. PDTL (Position Description by Transversal Lines) describes a game situation with all its conditions, although it does not allow to detect repetitions of previous positions. It consists of six components, which are separated by spaces:

  1. Positioning of the pieces
  2. Turn
  3. Castling and king's leap status
  4. Hextile of capture in passant or scornful pawn
  5. Halfmove counter
  6. Movement number

Example: C'escacs initial setup, without redefining piece names.

/28:v/27:dk/26:gjg/25:rnnr/24:pejep/23:ppeepp/22:2pjp2/21:3pp3/20:3p3/8:3P3/7:3PP3/6:2PJP2/5:PPEEPP/4:PEJEP/3:RNNR/2:GJG/1:DK/0:V/ w RKRrkr - 0 1

Positioning of the pieces

The position of the pieces on the hextilled chequerboard is indicated for each of the transversal lines, in a string written between slashes, where the value of each line is separated from the next one also with a slash; there is no blank space in this sequence.

  • The value of each line is always between slashes.
  • The value of the lines is entered starting with 28, in descending order.
  • The value of a line incorporates the line number at the beginning, ending in a colon.
  • Lines without pieces are omitted.
  • The values of each hex of the line are written in order, starting with the first column of the queenside, i.e. the columns in alphabetical order. The empty hexchecks are indicated by a digit, which represents the number of consecutive empty hexchecks, and the pieces by their identifying letter, capital letters for white and small letters for black.
    • There are even and odd lines, and the columns of the even lines are different from the columns of the odd lines; the even lines have the columns: T, B, D, F, H, K, X; the odd lines have the columns: P, A, C, E, G, I, L, Z.


The turn is identified by a lower case letter: w if it is white's turn, b if it is black's turn. In the example above we see the w, because white always starts the game.

Castling and king's leap status

The state is represented using a maximum of six characters; three for white, and three for black. The first characters are written in capitals, representing white's state, and then, without separation, the characters for black's state, which are written in lower case.

  • If the King has not moved, and neither have any of the Rooks we get RKR for White, rkr for Black.
  • If the Queen's Rook has moved, but not the King, nor the King's Rook we get KR for White, kr for Black.
  • If the King's Rook has moved, but not the King, nor the Queen's Rook, we get RK for White, rk for Black.
  • If both Rooks have moved, but not the King, we get K for White, k for Black.
  • If the King has moved we get one hyphen (), the same for White's King, and for Black's King; if both Kings have moved, we get two hyphens (‐‐).

Hextile of capture in passant or scornful pawn

The en passant capture and the scornful pawn capture are moves that can only be made on the move following certain moves of a pawn; therefore, you must be aware of their availability on the current move, if you do not know the previous move.

At most, only one of the options will be available, and the same field is used to record both cases:

  1. In the previous move, a pawn has made a En el moviment anterior, un peó ha fet un double or triple move. The en passant capture is available:
    • Double move: Record the hetille where the pawn is, and, separated with the at symbol @, the line where it can be captured; you do not have to indicate the column of the second hetille, because it is the same as the one where the pawn is now. Example: G15@13
    • Triple move: Record the hetille where the pawn is, and, separated with the at symbol @, the two lines where it can be captured, separated with a hyphen . Example: G13@9-11
  2. In the previous move, a pawn has made a scornful move. Its capture is available:
    • Scornful move: Simply record the CTL coordinate of the hextile where the scornful pawn is positioned, the position where it can be captured. Example: F14
      • The example denotes that two pawns of different sides were facing each other at G13 y G15 or at E13 y E15, and one pawn, of the player who does not have the turn, made a scornful move to F14.
  3. When neither of the two situations applies, a hyphen is used.

Halfmove counter (halfmove clock)

The halfmove counter, which is also called halfmove clock, starts with the value zero, and is incremented for every move that is neither a pawn move nor a capture; when a capture is made or a pawn is moved, the counter is reset to zero.

This counter allows to apply the rules of exhaustion of movements that make the game draw: the fifty-move rule (one hundred moves), which has to be claimed by the player, and the seventy-five-move rule (one hundred and fifty moves), which is automatically applied. In a friendly game it may be an unknown value, and then the zero value will be used.

Movement number

The last number is the number of the current move. It starts with the value one and is incremented after each black move. In a friendly game it may become an unknown value, and then a question mark (?) will be used.

CTL-PGN: Exchange format

The CTL-PGN format enriches the CTL-AN, algebraic notation, by incorporating meta-information, game information, in a similar way as the PGN (Portable Game Notation) format enriches the SAN (Standard Algebraic Notation), and with a similar format.

The main functionality of the PGN format is to establish a format to enable the exchange of information. It does this by using plain text formats, linking algebraic notation with meta-information in three different ways:

All three features are also incorporated in CTL-PGN, which introduces some subtle changes with respect to the PGN format, mainly by adopting the notation CTL-AN. We have already seen some differences between CTL-AN and SAN notation, some of which relate to the format in computer media, such as the case of the symbol ×, which can be replaced by an asterisk *, but never by the letter x; also of note is the date format, adjusted to the standards, which use the hyphen as a separator, and always beginning with the four digits of the year. The files, since all file systems already support extensions of more than three characters, will use the extension .ctl-pgn in the name.


A label is written on one line, enclosed in square brackets [ ... ], and contains a label identifier word, followed by a text in quotes, which is the value of the tag.

Initial variant label

Every CTL-PGN record must always start with the Variant label, using the tag value C'escacs for that label; it is the initial label:

[Variant "C'escacs"]

It happens to be the case that in the application that allows you to test C'escacs positions, an option is included that calls Grand C'escacs. For this variant, we would use a different label:

[Variant "Grand C'escacs"]

But no PGN fitcheros of Grand C'escacs are generated, as it is experimental.

Labels for the registration of a game

If you want to register a game, after the initial label, the seven mandatory PGN labels are required (at total of eight, counting the mandatory initial), with some subtle variation. The order of these labels has to be as presented here:

  1. Event Name of the event; if unknown ?, if not an organised event CG acronym for Casual Game.
    • [Event "Barcelona Championship"]
    • [Event "Moià Championship"]
    • [Event "CG"]
  2. Site Location, in the format City, Region Country, where country is a three-letter ISO code; it can be limited to Region Country only, or simply to the country code. If the entire location is unknown ?.
    • [Site "Barcelona, Catalunya ESP"]
    • [Site "Moià (Barcelona), Catalunya ESP"]
    • [Site "New York City, NY USA"]
    • [Site "St. Petersburg RUS"]
  3. Date Date, in the format year-month-day, with four-two-two digits, using ? for every unknown digit.
    • [Date "2020-08-15"]
    • [Date "2010-07-20"]
    • [Date "2025-??-??"]
    • [Date "2031-??-??"]
    • [Date "201?-??-??"]
  4. Round For competitions, but also to identify different games of the same match; if not applicable it is indicated with a hyphen (U+2010), or with the multipurpose hyphen-minus - (U+002D).
    • [Round "‐"]
    • When indicating the Round  label, consideration should be given to also indicate the EventDate or MatchDate label.
    • It may be required to indicate different numbers, in competitions, or if different matches are played between two players on the same day; then the numbers are separated by a dot between them:
      • [Round "2.1"]
  5. White White player:
    • Surname(s), and then, separated by a comma and a space, the first name. Initials can be used using the letter and a full stop.
    • If the player is unknown, ? is used.
    • If it is a software program, the name is used, followed by the version.
    • It may optionally be followed by the label WhiteAlias.
    • It can be omitted, if the WhiteNA label is used instead; then the WhiteAlias  tag will be mandatory to make the registration public.
    • [White "Ferràs, Jaume"]
    • [White "Noguera, X."]
    • [White "Prat, J. A."]
  6. Black Black player, following the same indications as for the White label.
    • If the WhiteAlias, label is used, it will be the eighth label.
    • It may optionally be followed by the. BlackAlias tag.
    • It can be omitted, if the BlackNA label is used.
    • [Black "Sasal, Cesc"]
    • [Black "?"]
  7. Result result of the game, with six different acceptable values:
    • [Result "3-0"] White wins.
    • [Result "0-3"] Black wins.
    • [Result "1-1"] Draw.
    • [Result "2-1"] White stalemates the Black's King.
    • [Result "1-2"] Black stalemates the White's King.
    • [Result "*"] (asterisk) Unfinished game.
    • If either the WhiteAlias or BlackAlias label is used, it will be the ninth label, if both are used it will be the tenth tag.

Minimalist registration labels

If a game is not recorded, but movements are recorded to illustrate a concept, even in the case of an exemple or typical game on paper, such as the fool's mate, instead of the seven labels for the game record, the label Id is used, always as the second label.

A record using the Id tag will also require the inclusion of the Annotator tag identifying the publisher.

It should be noted that items identified only by a publisher's key are not intended to be exported, nor are they intended to be integrated into a database other than the publisher's own database.

However, they may still represent opening model items that other items may reference with the tag "[model "..."]".

  1. Id As a value it will have an identifier consisting of letters, numbers and hyphens, consisting of a first part that uniquely identifies the publisher (this website use the publisher identifier Cescacs), and separated by a hyphen, a unique identifier of this publisher; The publisher has to appear in the first Annotator tag, which will be the third tag, after the mandatory [Variant "C'escacs"], followed by [Id "…"].

    • Publisher identifiers should use a number, combined with a sorting prefix:
      • O – Opening sample
      • C – Opening continuation
      • Z – Puzzle
      • P – Example
      • E – Ending
      • M – Middlegame
      • X – Refutation (counterexample)

      A particular case is the letter A, for items of an Annotator registered by the publisher. In this case there will optionally be a second Annotator tag, as the first one will be the publisher's, and obligatorily an AnnotatorId tag. The numerical value of the AnnotatorId will be the number following the letter A and then a suffix with a unique value among those of this second Annotator.

      The functionality of these identification tags is the registration of drafts created by a user (Annotator), where the players are not listed, they are generally unfinished games, and only accessible to Annotator; the equivalence would be:
          [Event "CG"]
          [Site "?"]
          [Round "‐"]
          [WhiteNA "Annotator2@Annotator1"] o similar
          [BlackNA "Annotator2@Annotator1"] el mateix que WhiteNA
          [Result "*"]

      The tag [Date "????-??-??"] will in this case be incorporated after the tag [*Id "…"], and in the exceptional case of a completed game, it could then incorporate the tag [Result "..."] with a value; this would relegate the Annotator tag to the fourth or fifth position.

    • Suffixes can also be included by separating them with hyphens, to indicate that it is a variation, to indicate the language of the comments, or for both reasons, always ending with the language suffix, if any.

      A publisher should only incorporate a version with variations, but may add new alternatives or modify existing ones, identifying the new version with Roman numerals, separated by a hyphen after the letter V, which indicates the presence of variations. This mechanism never allows the alteration of the main line represented.

      A particular variation may be represented linearly, e.g. for readers without the ability to interpret variations. It shall then be indicated by an S after the letter V and any version indication in Roman numerals, followed by a sequence of numbers separated by a colon to indicate the variation being represented. It is not permitted a sequence of zeros, which would be equivalent to not indicating variations, corresponding to the identifier without the letter V.

    Example: Cescacs-X01-V-en.

    • [Id "Cescacs-X01"]
    • [Id "Cescacs-X01-en"]
    • [Id "Cescacs-X01-V"]
    • [Id "Cescacs-X01-V-II"]
    • [Id "Cescacs-X01-V-ca"]
    • [Id "Cescacs-X01-V-II-en"]
    • [Id "Cescacs-X01-V-S:0:1:1-es"]

Optional identifier label

  1. Id The Id  identifier label can also be used to export games anonymously, preserving the identity of the players, and also allows game fragment records. In this case it is incorporated after the labels that identify the game.
    • A unique identifier shared by all items in an encounter is used: a publisher's identifier, and separated by a hyphen (U+2010), or a hyphen-minus -, an identifier number, which the publisher must ensure is unique.
    • For a game fragment, after the unique identifier, separated by a hyphen, or a hyphen-minus, we add a prefix and other numbers defining the fragment. The prefixes that would then be used would be:
      • O (Opening), the number being the last recorded move.
      • C (Continuation) using a pair of numbers for the first and the last movement recorded, separated by a hyphen (U+2010), or a multipurpose hyphen-minus -. It will usually refer to an opening using the label Model.
      • M (Middlegame) Although it will not usually reference an opening, in practice it is equivalent to  C
      • E (Ending) incorporating as a number the movement from which the record starts.

      A question mark (?) shall be used instead of the initial movement number, if the number of the first movement is unknown, but then it is always required to indicate the number of movements recorded, separated by a hyphen (U+2010), or a hyphen-minus -.

      A letter b will be added to the first movement number, when the record starts with a move by Black. The case ?b can then be given to refer to the beginning of the black on an unknown movement number.

      A w shall be added to the number of the last move when the record ends in a move by White that is not the end of the game.

    • A specific case is the letter A, for items of an Annotator registered by the publisher. In this case we can find a second Annotator tag, as the first one will be that of the publisher, which can be absent for privacy reasons, but obligatorily an AnnotatorId tag, the identifier that the publisher has assigned to this Annotator; this identifier should allow to locate the individual file card, where the person will determine which data are public.

      This feature allows users to register games from players who are not required to be registered; a registered user may accept games from an Annotator as their own, always with privacy in mind.

Other optional labels

  • EventDate Date of the event. When it is a Casual Game (CG) it refers to the date of the match, i.e. it can be used instead of MatchDate when [Event "CG"] 
  • MatchDate Start date of the match. The value is meaningless if no value is given for the Round  tag, and is unnecessary when the value is the same as the value of the Date  tag, e.g. when the  Round  tag has the value 1 (or a sequence of numbers ending with the number 1).
  • Termination Termination detail; supports the values:  abandoned, rules infraction, time forfeit  and for indefinitely postponed games:  death  or  emergency 
  • Lang Language to be used in comments; the value has to be a two-letter ISO 639 language code (ISO 639-1 alpha-2) or, if required, the three-letter ISO 639-3 code.
  • Title Very exceptionally, a game may have a name, and this could also be the case for opening or closing situations. Keep in mind that the name will change with the language of the comments, and is not an identifier. Avoid assigning a name for free, and reserve this label for really exceptional cases. In any case it will appear after the Lang label.
  • Revisited Only for model games, without players. The value shall be the identifier of a game, also a model game, without players. Possible functions of this tag are:
    1. When the identifier is from the same publisher: It leaves the main referenced line as obsolete.
    2. When the identifier is from another publisher: Publishing a game from another publisher with the new publisher's own modifications or variations; this involves acknowledgement of authorship.
  • Model Only in real games, with players. The value shall be the identifier of a model opening item.
  • Mode Only in real games, with players. Allows the values: OTB (over the board), on line modes: ICS (internet connection sharing, for chess server) or TC (telecommunication, for P2P programs), and off line modes: EM (for electronic mail and any other mail/messenger system) or BBS (Bulletin Board System, for pasive server, no interactive).
  • WhiteType, BlackType Only in real games, with players. Both labels allow the values:  human  and  program
  • TimeControl Only in real games, with players. Values:
    • [TimeControl "?"] unknown
    • [TimeControl "-"] not used
    • [TimeControl "number1/number2"]  number1  number of movements in  number2  seconds
    • [TimeControl "number"] total  number  of seconds ("sudden death")
    • [Timecontrol number1+number2]  number1  seconds, plus  number2  seconds for each move
    • [TimeControl "*number"]  number  seconds per move
    • Concrete exemples:
      • [TimeControl "40/9000"] 40 moves in 2½ hours (9000 seconds)
      • [TimeControl "4500"] 1¼ hours to sudden death (4500 seconds)
      • [TimeControl "4500+60"] 1¼ hours and a minute for each move
      • [TimeControl "*180"] three minutes each move; sandclock, hourglass control.
  • WhiteNA, BlackNA network access allows to collect the e-mail address of the players; in an anonymous game they can substitute the labels  White  and  Black, respectively. In this case they are written in the position corresponding to these, assuming the value ? for the substituted label; the export of the game will not always report these values, for confidentiality of digital data.
  • WhiteAlias, BlackAlias Nickname, used as an identifier for the White and Black player, respectively. It shall be mandatory if the label  WhiteNA  is used instead of the label  White, or  BlackNA  instead of the label  Black, to avoid making the values  WhiteNA  or  BlackNA  public. If used, it shall be written after the label  WhiteNA / BlackNA, and failing that, after the label  White / Black.
  • Annotator Name of the person who registered and commented on the game, in the same format as the name of the players; there can be more than one label, one per person, but all labels with the identifier  Annotator  have to be consecutive; the first one has to be the person responsible for the registration of the game, with contributors and commentators added afterwards. This is an exception, since together with the  Example  label, these are the only label identifiers that can be repeated.
    • In the games with [Mode "ICS"] or [Mode "BBS"] the server will be stated as the first Annotator label, in the same way that in [Mode "TC"] the P2P program will be stated; likewise, if the game is entered with any other computer program capable of assisting the entry of C'escacs games, it will be stated in the first Annotator label. Thus, we could say that this first label Annotator is compulsory in every computerised game.
    • The user posting the game, if reflected, will be listed on the second label Annotator; it will only be the first label when the annotation has been made manually, and will be listed second once the game has been entered into a system with move verification capability.
      • But if another program subsequently adds automatic comments, the user would be relegated to the third Annotator tag; for this reason, in server-side modes ([Mode "ICS"] or [Mode "BBS"]) it is advisable to use the AnnotatorId tag.
    • If a program, other than the one used for recording the game, subsequently adds automatic comments, it will appear in the second Annotator tag; it is important to include it.
      • It is considered a different program only if there is a change in the edition, the major version number. However, also in this case adding a new Annotator tag will be optional, and discouraged if there is not a big jump between versions.
  • AnnotatorId This label is reserved exclusively for the user posting the game, when posting on a server-based system ([Mode "ICS"] or [Mode "BBS"]) capable of linking the user to a unique identifier within the server.

    Note that if the Annotator label of the game publisher does not appear, the second Annotator label may contain any annotator or contributor, but the AnnotatorId tag is unique.

  • Example Only for model games, without players. The value will be the identifier of a real game, with players. This identifier can be repeated to reference a set of games that follow the same model, always consecutive. The usual thing will be the reference with the  Model  label, while referencing with the  Example  label is reserved for exceptional cases, which have given rise to the model. Only the modification of the model is a reason to add new instances of the Example label, usually with new variations.

Label for using alternative piece identifiers

Redefine Allows to use alternative identification letters for some pieces, always among the predefined ones. If there is a  PDTL  label,  Redefine  has to be just before it, as it applies also to the  PDTL  label tag value, otherwise  Redefine  will be the last label.

  • [Redefine "A@J, C@N, T@R"] Defines the letter A for the Bishop, instead of J, the letter T for the Rook, instead of R, and C for the Knight, instead of N (Approaches to  Español,  Lingua italiana  or  Català).
  • [Redefine "B@J, Q@D, W@V"] Defines the letter B for the Bishop, instead of J, the letter Q for the Queen, instead of D, and W for the Wyvern, instead of V (Approaches to  English).
  • [Redefine "L@J, S@N, T@R, W@V"] (Approaches to  Deutsche Sprache).
  • [Redefine "F@J, C@N, T@R, W@V"] (Approaches to  Français).
  • [Redefine "FAN"] Use specific Unicode characters for the piece symbols, different for white and black, instead of the identifying letters.

Initial setup label

PDTL Label which allows to indicate the initial state of the board to resume a game, using as tag value a PDTL string. It must be the last label; the  Redefine  label also applies to the PDTL string.

C'escacs initial setup
[PDTL "/28:v/27:dk/26:gjg/25:rnnr/24:pejep/23:ppeepp/22:2pjp2/21:3pp3/20:3p3/8:3P3/7:3PP3/6:2PJP2/5:PPEEPP/4:PEJEP/3:RNNR/2:GJG/1:DK/0:V/ w RKRrkr - 0 1"]
C'escacs initial setup: [Redefine "A@J, T@R", C@N"]
[PDTL "/28:v/27:dk/26:gag/25:tcct/24:peaep/23:ppeepp/22:2pap2/21:3pp3/20:3p3/8:3P3/7:3PP3/6:2PAP2/5:PPEEPP/4:PEAEP/3:TCCT/2:GAG/1:DK/0:V/ w TKTtkt - 0 1"]
C'escacs initial setup: [Redefine "B@J, W@V", Q@D"]
[PDTL "/28:w/27:qk/26:gbg/25:rnnr/24:pebep/23:ppeepp/22:2pbp2/21:3pp3/20:3p3/8:3P3/7:3PP3/6:2PBP2/5:PPEEPP/4:PEBEP/3:RNNR/2:GBG/1:QK/0:W/ w RKRrkr - 0 1"]
C'escacs initial setup: [Redefine "FAN"]
[PDTL "/28:🩒/27:♛♚/26:🩓♝🩓/25:♜♞♞♜/24:♟☗♝☗♟/23:♟♟☗☗♟♟/22:2♟♝♟2/21:3♟♟3/20:3♟3/8:3♙3/7:3♙♙3/6:2♙♗♙2/5:♙♙☖☖♙♙/4:♙☖♗☖♙/3:♖♘♘♖/2:🩐♗🩐/1:♕♔/0:🩏/ w ♖♔♖♜♚♜ - 0 1"]

RAV (Recursive Annotation Variation)

RAV (Recursive Annotation Variation) allow you to annotate alternative moves; each alternative starts with an open parenthesis (. Inside, the alternative moves are then written, always with their move number, and the variation ends with the closing parenthesis ).

Variation moves

The first character of the first move of a variation is a parenthesis, and the movement number repeats the previous one, but the following moves advance the number, and this could confuse them with the moves of the main line.

Preceding the movement number, or preceding the parenthesis when starting a new imbricated variation, any number of dots can be included, which will be ignored, in the same way as the spaces; the dots allow the level of imbrication to be indicated, the dots being more explicit than a simple indentation with spaces; either way, both techniques make it much easier to read the annotated moves.

Variation label

Adding a label to a variation allows you to reference it from a comment external to the variation. The label is written after the parenthesis, consisting of a number in square brackets preceded by the dollar sign ($[1]. Different variations can exist for the same move, and the labels assign a number to each variation of the move.


Comments are written between braces {}, using lines specifically for this purpose. The opening brace character { need only appear at the beginning of a line, although it is acceptable for it to be preceded by whitespace; on this line a comment begins, which cannot be nested, so any occurrence of the closing brace character } will end the comment. The end-of-comment character } must be the last character on the line, although it is acceptable for it to be followed by whitespace.

A comment can be opened and closed on a single line, but often comments will span multiple lines; only comments (and variations) can span multiple lines, because moves and labels are limited to one per line.

Comments at the start of the game

The comments written before the first move describe the context in which the game is played.

Final comments on the game

Final comments are added after the final result indicator line, after the moves of the game have been completed.

This place is suitable for descriptions of the game; they can also be used to explain circumstances of the ending, or situations that have occurred during the game, freeing the move comments from any kind of anecdotes concerning the development of the game.

Comments on the moves

The comment for a move is always written on a new line, following the line of the move. There may be a maximum of one comment for each player move, unless there is also a comment automatically generated by a program.

A player move comment will start with a reference to the player, either @W or @B, and a colon.

The @W move comment, if present, will precede the @B move comment.

  • Automatically generated comments shall begin with the colon symbol at the start of the comment, written immediately after the open brace.

References within comments

  • @W reference to the white player.
  • @B reference to the black player.
  • A hextile is referenced using its CTL coordinate, prefixed with a tilde (~).
  • Pieces are referenced using the identifying letters, prefixed with a tilde (~). Capital letters are used for white and lower case for black.

    Some pieces are unique in C'escacs, due to the promotion policy; for White: ~K, ~D, ~V. Bishops can also be referred to uniquely by indicating their colour in square brackets: d (dark), l (light) and c (colour); for White: ~J[d], ~J[l], ~J[c].

    If we want to refer to a piece in a position, the CTL coordinate of the position shall be written after the letter of the piece, without separation.

  • Reference to moves You may never reference a later move; the commentary must be postponed. Nor may you reference variants other than the current line, except for labelled variants.
    • Reference to a move Using the symbol # and the number; example: #14 refers to move 14. The movement number always refers to the line or variant in which the comment appears.
    • Reference to a player's move Example: #14@B refers to Black's move on move 14.
    • Reference to a labelled variant Variant labels allow you to refer to variants from outside the variant itself, always at a later point in time. Example: #14[#12.2] refers to move #14 of the variant defined from move #12 labelled $[2], while #14[#12.2]@W refers explicitly to its White's move, #12.2 refers generically to all the moves of the variant, and #12[#12.2] refers explicitly to the alternative move #12 of the variant [2] that is defined in move #12.

      Also, when nesting exists, we can traverse the variations, as long as there are labels all the way through. Example: #16[#14.1#12.2] indicates move #16 in the variant defined from move #14 labelled $[1], which is inside the variant defined from move #12 labelled $[2] (note the reverse order).

  • A NAG (Numeric Annotation Glyphs) code, numeric prefixed with $ particularly in automatically generated comments. Example:  $24 — White has a slight space advantage.


[Variant "C'escacs"] [Event "CG"] [Site "Barcelona, Catalunya ESP"] [Date "2021-06-04"] [Round "‐"] [White "Mestre, Rut"] [Black "Sasal, Cesc"] [Result "*"] [Annotator "Cescacs"] [Annotator "Sasal, Cesc"] [Lang "en"]

{ Introduction to C'escacs }

1. E7‐E13, E21‐E15 2. EE5-E11, G21‐G15

{ @W: ~E defends ~PE13. @B: opens column G }

3. G7-E13: *

{ unfinished }

[Variant "C'escacs"] [Id "Cescacs-X01-en"] [Lang "en"] [Title "Fool's mate"] 1. H6-H12 ?!, I23-I19 ?!

{ @W: curious pawn to open }
{ @B: plays along with it }

2. JF6-C15 ?!, GH26-Z11 ?!

{ @W: ~J to cover line 15 but neglects defence of ~K }
{ @B: ~g's premature move to ~Z11 is very unorthodox }

3. L5-L7, NG25-L17 ?!

{ @B: Initial movement of ~n also to the flank }

4. EH4-H8 ??, GZ11-L5

{ @W: Removing ~EH4 leaves ~K unattended }

5. I5-I9 ??, NL17-G9

{ @W: Has ignored threats }
{ @B: Positions ~n }

6. K4-K10 ??, GL5-H6#

{ @W: Last chance for a reaction wasted }


{ @B Must neglect ~JF6 and ~EH4 }
{ @W Attack ~K to knight's leap with ~g i ~n }

[Variant "C'escacs"] [Id "Cescacs-X01-V-en"] [Lang "en"] [Title "Fool's mate"] 1. H6-H12 ?!, I23-I19 ?!

{ @W: curious pawn to open }
{ @B: plays along with it }

2. JF6-C15 ?!, GH26-Z11 ?!

{ @W: ~J to cover line 15 but neglects defence of ~K }
{ @B: ~g's premature move to ~Z11 is very unorthodox }

3. L5-L7, NG25-L17 ?!

{ @B: Initial movement of ~n also to the flank }

4. EH4-H8 ??, GZ11-L5

{ @W: Removing ~EH4 leaves ~K unattended }

(4. GD2-F6

.{ @W would avoid ~gL5-H6+^ }

) 5. I5-I9 ??, NL17-G9

{ @W: Has ignored threats }
{ @B: Positions ~n }

(5. GD2-F6

.{ @W is still in time to avoid ~gL5-H6+^ }

) (5. K4-K10 ??, GL5-H6+^

.{ @W: Displacing P threatens ~gL5 with ~RI3 }
.{ @B: Check without reinforcement will not succeed, but will capture ~RI3 }

.6. KG1-H4, GH6×RI3 .(6. …, GH6-K12) .7. KH4×GI3) 6. K4-K10 ??, GL5-H6#

{ @W: Last chance for a reaction wasted }

(6. GD2-F6

.{ @W there was still time to avoid ~gL5-H6+^ }

) (6. RI3-I7

.{ @W another alternative to avoid ~gL5-H6+^ }

) 0-3

{ @B Must neglect ~JF6 and ~EH4 }
{ @W Attack ~K to knight's leap with ~g i ~n }

[Variant "C'escacs"] [Event "CG"] [Site "Barcelona, Catalunya ESP"] [Date "2023-09-08"] [Round "‐"] [White "Sasal, Cesc"] [Black "Sasal, Cesc"] [Result "0-3"] [Id "Cescacs-A0001-91"] [Annotator "Cescacs"] [Annotator "Sasal, Cesc"] [AnnotatorId "0001"] [Lang "en"]

{ H6-H12 }

1. H6-H12, H22-H16 2. H12-H14, EH24-H20 3. I5-I11, I23-I17 4. I11-I15, L23-L21 5. G7-G11, K24-K18 6. EG5-H8, G21-G15 7. EH8-I11, G15-G13 8. JF4-L19, RI25-I21 9. JL19-K16, NE25-G21 10. GH2-L11, GH26-K20 11. VF0-G5, RI21-I25 12. GL11-X16, RI25-H26 13. GX16×L21, JF24-H24 14. VG5-K8, C23-C17 15. C5-C11, GD26-B22 16. B4-B10, GB22-T16 17. ED4-C7, ED24-C21 18. NG3-L11, D22-D16 19. D6-D10, C17-C13 20. NL11-X16, GK20-G19 21. VK8-Z11, C13×D10 22. E7×D10, D16-D12 23. C11@D14, EC21-D18 24. B10-C11, VF28-D24 25. JF6-B18, RC25×C11 26. JB18×VD24, DE27×JD24 27. EE5-D8, RC11-C9 28. NE3-B4, RC9-A11 29. NB4-T8, DD24-B18 30. F8-E9, ED18×D14 31. GD2-F8, E21-E15 32. RI3-I9, E15-E13 33. RI9-Z13, E13-D12 34. RZ13-Z21, D12×E9 35. GF8-G3, DB18-C21 36. RZ21×RH26+^, JF26×RH26 37. RC3-B4, DC21-F12 38. DE1-E3, ED14-D12 39. EC7-C9, ED12×EC9 40. DE3×EC9, RA11-F16 41. DC9-C23+∞, EG23-F26 42. RB4-E7, EE23-D26 43. DC23-D24, DF12×JF2#
[Variant "C'escacs"] [Id "Cescacs-A0001-24"] [Annotator "Cescacs"] [AnnotatorId "0001"] [Date "2020-07-20"] [Result "0-3"] 1. E7-E13, E21-E15 2. F8-F12, F20-F16 3. E13×F16, E15×F12 4. EG5-F8, EG23-F20 5. G7-G13, F12@@G9 6. JF6×G9, EF20×F16 7. JF4-D10, NE25-C15 8. EE5-E7, NC15-F14 9. EF8-F12, EE23-E19 10. EF12×NF14, EF16×EF14 11. JF2-D8, EE19-E17 12. EE7-E11, EF14×EE11 13. JD8×EE11, EE17-E13 14. JD10×EE13, DE27×JE13 15. GH2-F8, DE13-B10 16. NE3-C7, DB10-D10+∞ 17. NG3-E7, GD26×L5 18. GD2-E5, DD10-K10 19. I5-I7, DK10-K6 20. RI3-H2, GL5×GE5+^ 21. DE1×GE5, KRD-DE 22. JE11×A23, GH26-G23 23. DE5-A17, JF26-E23 24. NE7-C17, D22-D20 25. NC17-T18, JF22-C13+∞ 26. KG1-E1, DK6-E21+∞ 27. VF0-E5, DE21-K16+∞ 28. KE1-D2, JE23-K8 29. NT18-B22+^, KD26-C25 30. JA23×C23, GG23×JC23 31. GF8-B20+^, GC23×GB20 32. DA17×GB20, RE27×VE5 33. DB20-C19+∞, ED24-C21 34. RH2×RE5, DK16-F20 35. DC19-E25#

{ these were the previous moves }

1. E7-E13, E21-E15 2. F8-F12, F20-F16 3. E13×F16, E15×F12 4. EG5-F8, EG23-F20 5. G7-G13, F12@@G9 6. JF6×G9, EF20×F16 7. JF4-D10, NE25-C15 8. EE5-E7, NC15-F14 9. EF8-F12, EE23-E19 10. EF12×NF14, EF16×EF14 11. JF2-D8, EE19-E17 12. EE7-E11, EF14×EE11 13. JD8×EE11, EE17-E13 14. JD10×EE13, DE27×JE13 15. GH2-F8, DE13-B10 16. NE3-C7, DB10-D10+∞ 17. NG3-E7, GD26×L5 18. GD2-E5, DD10-K10 19. I5-I7, DK10-K6 20. RI3-H2: *
[Variant "C'escacs"] [Id "Cescacs-A0001-24"] [Annotator "Cescacs"] [AnnotatorId "0001"] [Date "2020-07-20"] [Result "0-3"]
[DPTL "/28:v/27:1k/26:1jg/25:r1nr/24:pejep/23:pp2pp/22:2pjp2/21:4p3/11:3J4/9:4J3/8:3G3/7:2NN1P2/6:2P1Pd1/5:PPG2g/4:PE1EP/3:R3/2:2R/1:DK/0:V/ b KRrkr - 2"]

{ Don't remember move was the 20th; DPTL without movement number }

1? …, GL5×GE5+^ 2. DE1×GE5, KRD-DE 3. JE11×A23, GH26-G23 4. DE5-A17, JF26-E23 5. NE7-C17, D22-D20 6. NC17-T18, JF22-C13+∞ 7. KG1-E1, DK6-E21+∞ 8. VF0-E5, DE21-K16+∞ 9. KE1-D2, JE23-K8 10. NT18-B22+^, KD26-C25 11. JA23×C23, GG23×JC23 12. GF8-B20+^, GC23×GB20 13. DA17×GB20, RE27×VE5 14. DB20-C19+∞, ED24-C21 15. RH2×RE5, DK16-F20 16. DC19-E25#
[Variant "C'escacs"] [Event "CG"] [Site "Barcelona, Catalunya ESP"] [Date "2022-08-14"] [White "Ros, Xus"] [Black "Sasal, Cesc"] [Id "Cescacs-A0001-43"] [Annotator "Cescacs"] [Annotator "Sasal, Cesc"] [AnnotatorId "0001"] [Result "0-3"] [Annotator "Cescacs"] 1. E7-E13, E21-E15 2. EE5-E9, EE23-E19 3. D6-D12, E15×D12 4. EE9×D12, EE19-E17 5. E13-E15, C23-C17 6. C5-C11, C17-C15 7. ED12-D14, EE17×ED14 8. C11×ED14, D22-D16 9. E15@D18, JF24×D18 10. A5-A9, B24-B18 11. B4-B10, B18-B14 12. A9-A11, B14×A11 13. GD2×A11, JF26×GA11 14. B10-C11, ED24-D20 15. JF4-A19, JF22-B22 16. JA19-B16, DE27-B18 17. JB16-D10, JB22-D16 18. NE3-C7, JA11-P17 19. GH2-I7, RC25-E23 20. ED4-E7, GD26-T14 21. NG3-A5, GT14-B8 22. RC3-B4, GB8-C5 23. DE1-C3, GC5×JD10 24. NA5-C9, GD10-F14 25. RB4×DB18, JD18×RB18 26. NC9-B14, GH26-K22 27. EE7-E11, GK22-E7+∞ 28. KG1-E1, GE7×DC3 29. JF6-E3, GC3-E7 30. VF0-E5, JD16-C13 31. EE11×GF14, GE7-G1+^ 32. RI3×GG1, JC13×RG1+^ 33. VE5×JG1, ED20-D16 34. NC7-G15, C15-C13 35. GI7-F16, NE25-A17 36. GF16-D20, RE23-E21 37. GD20-C17, RE21-C23 38. GC17-D20, RC23-D22 39. GD20-E15, VF28-E23 40. GE15-H16, I23-I19 41. GH16-X16, KRK-II 42. NG15-I25, RI21-X18 43. GX16-Z13, RX18-X6 44. VG1-E5, RX6-E13 45. VE5-C3, RE13×JE3+^ 46. KE1-G1, VE23-E9 47. GZ13-L9, VE9-B6 48. GL9-C9, RE3×JF2+^ 49. VC3×RF2, VB6-D10 50. GC9-D6, VD10-E5#
[Variant "C'escacs"] [Event "CG"] [Site "Barcelona, Catalunya ESP"] [Date "2022-08-14"] [White "Sasal, Cesc"] [Black "Ros, Xus"] [Id "Cescacs-A0001-44"] [Annotator "Cescacs"] [Annotator "Sasal, Cesc"] [AnnotatorId "0001"] [Result "3-0"] [Annotator "Cescacs"] 1. E7-E13, E21-E15 2. F8-F12, F20-F16 3. E13×F16, E15×F12 4. EG5-F8, EG23-F20 5. G7-G13, F12@@G9 6. JF6×G9, EF20×F16 7. JF4-D10, NE25-C15 8. EE5-E7, NC15-F14 9. EF8-F12, EE23-E19 10. EF12×NF14, EF16×EF14 11. JF2-D8, EE19-E17 12. EE7-E11, EF14×EE11 13. JD8×EE11, EE17-E13 14. JD10×EE13, DE27×JE13 15. GH2-F8, DE13-B10 16. NE3-C7, DB10-D10+∞ 17. NG3-E7, GD26×L5 18. GD2-E5, DD10-K10 19. I5-I7, DK10-K6 20. RI3-H2, GL5×GE5+^ 21. DE1×GE5, KRD-DE 22. JE11×A23, GH26-G23 23. DE5-A17, JF26-E23 24. NE7-C17, D22-D20 25. NC17-T18, JF22-C13+∞ 26. KG1-E1, DK6-E21+∞ 27. VF0-E5, DE21-K16+∞ 28. KE1-D2, JE23-K8 29. NT18-B22+^, KD26-C25 30. JA23×C23, GG23×JC23 31. GF8-B20+^, GC23×GB20 32. DA17×GB20, RE27×VE5 33. DB20-C19+∞, ED24-C21 34. RH2×RE5, DK16-F20 35. DC19-E25#

Minimal reader, and filters

A minimum reader is limited to reading the moves in the CTL-AN section, which must be algebraically correct; that is, the CTL coordinates must be correct, each move must represent an existing piece at the origin, and the destination must be a free hextile, or in the case of a capture, the captured piece must also exist, just as the captured pawn must exist in the en passant or scornful pawn capture. Promotion requires a pawn in the position of promotion, and in castling the final places for the pieces must be available. On the other hand, the rules of the game will not be checked, accepting what is indicated algebraically: neither the movements of the pieces, nor the checks, nor any other rule, only algebraic coherence, but the reader must generate an error if this algebraic coherence is not satisfied.

Labels incorporate meta-information useful for the storage and classification of items, comments and variations add additional information. Only the  Redefine  label and the  PDTL  label affect the content.

A minimum reader will check the initial label and can ignore the rest of the labels; although it will be convenient to read the  PDTL  label, generating an error if it is not able to process it, and similarly for the  Redefine  labels. A minimum reader must be able to read a CTL-PGN file with no variations, no comments, no alternative piece identification letters, i.e. no  Redefine  labels, and can ignore any labels except the required initial label.

 Redefine  labels modify the content, and removing them requires a prior conversion. A pre-filter can remove them by transforming the file, removing also comments, variations and even ratings, leaving a clean input, with only the rest of the labels, which the minimal reader should be able to ignore.

The  PDTL  label incorporates a necessary context to represent a game already started, and, if the reader is not able to interpret it, verifying its presence allows early detection of algebraic incoherence. The initial label  [Variant "C'escacs"]  guarantees the type of content, and will always be a requirement.

Free Web Hosting