(;GM[1]FF[3]SZ[19]AP[SmartGo:3.1.1]
GN[newtestharness]
RE[B+1.0]
RU[Japanese]
C[We provide examples of various things here:

1) Labels, and markup of stones/intersections -- Go to end (move 172), then go back 2 moves -- further instructions there,

2) Standard SGF Annotation of moves -- you can go straight to move 38, and look at the subsequent 16 moves

3) We  illustrate a proposed convention for indicating _previous_ moves, and branches.  Start at move 162.  Follow instructions, as you go.

4) We check dim, select, B/W territory, show enclosed territory, circle labels.  Go to move 19, then select variation B (second var), at bottom right star point (R4), then follow to move 33, ...
(you will be sent from move 33 to move 43, for further stuff)

(This file is used to test various ideas for displaying past moves/choices/branches) -- All comments gratefully received.)   :-)

]
;B[aa];W[ba];B[ca];W[da];B[ea];W[fa];B[ga];W[ha];B[ia];W[ja];B[ka];W[la]
;B[ma];W[na];B[oa];W[pa];B[qa];W[ra];B[sa]
(;W[ac];B[bc];W[cc];B[dc];W[ec];B[fc];W[gc];B[hc];W[ic];B[jc];W[kc];B[lc]
;W[mc];B[nc];W[oc];B[pc];W[qc];B[rc];W[sc]
C[Now, we look at annotations:
39:  Hotspot                      40:  emphasised
41:  Checkmark                  42:  emphasised
43: _position_ good for W  44:  emphasised
45:  _position_ good fro B   46:  emphasised
47:  Position  even              48:  emphasised
49:  Position Unclear           50:  emphasised
51:  Good Move                 52:  emphasised
53:  Bad/Doubtful Move     54:  emphasised
]
;B[ae]HO[1]
C[39:  "Hotspot";  next is   40:  "Hotspot" emphasised
];W[be]HO[2]
C[40:  "Hotspot" emphasised;  previous is 39:  "Hotspot"];B[ce]CH[1]
C[41:  Checkmark - (tick);  Next is 42:  "Checkmark", emphasised - (double tick)]
;W[de]CH[2]
C[42:   "Checkmark", emphasised - (double tick);  Previous is 41:  Checkmark - (tick)]
;B[ee]GW[1]
C[43: _position_ good for White - W+;  Next is 44:  "_position_ good for White", emphasised - W++]
;W[fe]GW[2]
C[44:  "_position_ good for White", emphasised - W++;  Previous is 43: _position_ good for White - W+
]
;B[ge]GB[1]
C[45: " _position_ good for Black" - B+;  Next is  46: " _position_ good for Black", emphasised - B++]
;W[he]GB[2]
C[46: " _position_ good for Black", emphasised - B++;  Previous is 45: " _position_ good for Black" - B+
]
;B[ie]DM[1]
C[47:  Position  even - "=";  Next is 48:  Position  even, emphasised - "=="]
;W[je]DM[2]
C[48:  Position  even, emphasised - "==";  previous is 47:  Position  even - "=" ]
;B[ke]UC[1]
C[49:  Position Unclear - "~";  Next is 50:  Position Unclear, emphasised - "~~"]
;W[le]UC[2]
C[50:  Position Unclear, emphasised - "~~";  Previous is 49:  Position Unclear - "~"  
]
;B[me]
C[51:  Good Move - "!";  Next is 52:  Good Move, emphasised - "!!"];W[ne]
TE[2]
C[52:  Good Move, emphasised - "!!";  Previous is 51:  Good Move - "!"];B[oe]
BM[1]
C[53:  Bad/Doubtful Move - "?";  Next is 54:  Bad/Doubtful Move, emphasised - "??"]
;W[pe]BM[2]
C[54:  Bad/Doubtful Move, emphasised - "??";  Previous is 53:  Bad/Doubtful Move - "?"]
;B[qe];W[re];B[se];W[ag];B[bg];W[cg];B[dg];W[eg];B[fg];W[gg];B[hg];W[ig]
;B[jg];W[kg];B[lg];W[mg];B[ng];W[og];B[pg];W[qg];B[rg];W[sg];B[ai];W[bi]
;B[ci];W[di];B[ei];W[fi];B[gi];W[hi];B[ii];W[ji];B[ki];W[li];B[mi];W[ni]
;B[oi];W[pi];B[qi];W[ri];B[si];W[ak];B[bk];W[ck];B[dk];W[ek];B[fk];W[gk]
;B[hk];W[ik];B[jk];W[kk];B[lk];W[mk];B[nk];W[ok];B[pk];W[qk];B[rk];W[sk]
;B[am];W[bm];B[cm];W[dm];B[em];W[fm];B[gm];W[hm];B[im];W[jm];B[km];W[lm]
;B[mm];W[nm];B[om];W[pm];B[qm];W[rm];B[sm];W[ao];B[bo];W[co];B[do];W[eo]
;B[fo];W[go];B[ho];W[io];B[jo];W[ko];B[lo];W[mo];B[no];W[oo];B[po];W[qo]
;B[ro];W[so];B[aq];W[bq];B[cq];W[dq];B[eq];W[fq];B[gq];W[hq];B[iq];W[jq]
LB[iq:.][hq:..][gq:...][fq:,][eq:,,][dq:,,,][cq:;][bq:;;][aq:;;;];B[kq]LB[jq:.][iq:..][hq:...][gq:,][fq:,,][eq:,,,][dq:;][cq:;;][bq:;;;]
;W[lq]LB[kq:.][jq:..][iq:...][hq:,][gq:,,][fq:,,,][eq:;][dq:;;][cq:;;;];B[mq]
LB[lq:.][kq:..][jq:...][iq:,][hq:,,][gq:,,,][fq:;][eq:;;][dq:;;;];W[nq]LB[mq:.][lq:..][kq:...][jq:,][iq:,,][hq:,,,][gq:;][fq:;;][eq:;;;]
;B[oq]LB[nq:.][mq:..][lq:...][kq:,][jq:,,][iq:,,,][hq:;][gq:;;][fq:;;;];W[pq]
LB[oq:.][nq:..][mq:...][lq:,][kq:,,][jq:,,,][iq:;][hq:;;][gq:;;;];B[qq]LB[aa:=][ba:==][ca:===][da:!][ea:!!][fa:!!!][ha:i2][ka:j2][ma:LB][na:RB][oa:LS][pa:RS][qa:lt][ra:gt][sa:W][ac:#][bc:|][cc:%][dc:/][ec:+][fc:++][gc:^][hc:^^][ic:^][jc:~][kc:~~][lc:||][mc:Q][ae:Z][be:o2][ee:O][fe:X][ge:v][he:V][ie:Y][je:P][ga:i][ja:j][ai:|||][bi:||||][ci:$][di:$$][ei:@][fi:@@][gi:S][ak:....][bk:,,,,][ck:'][dk:''][ek:'''][fk:''''][gk:_][hk:__][jk:T][jm:(.)][km:(o)][lm:()][mm:(())][nm:(O)][om:(0)][pm:(..)][qm:U][ag:{][bg:}][cg:{}][dg:{{}}][ao:+][co:++][ce:x2][ik:vv][am:+.+][cm:+..+][em:+++][eo:.....][go:,,,,,][io:;;;;;][ko:'''''][oo:iiii][po:A][ia:iii][la:jjj][mo:___][eg:{.}][fg:o][gg:x][hg:R][hm:abcde][pq:.][oq:..][nq:...][mq:,][lq:,,][kq:,,,][jq:;][iq:;;][hq:;;;]
C[
Sorry -- there are 3 distinct things to check (starting) here:

1)  We show a proposed convention for marking after a branch point.  What were the other immediately prior and how do they compare with the one you arenow on?  , Also, where is the nearest past branch point ("+"), and the one before that "++", theree may also be another earlier branch point ("Y"), whre we currently left the Main line, and maybe even some others in between ("+.+").

You should be able to see 5 variations for the next move -- 1-5, or a-e.  The first (1/a) is the main branch, as usual
Go to that, and note the other 4 (inferior) vars for this move are marked with "~", then come back and ...
(The idea behind this is to help you know -- without looking at a game-tree -- whether you are on a main line, or a branch, and if a branch that has just started, then where the Main branch went.
... goto to any/each of the other options, and note that the main line of the var (i.e. not taken!) is marked with "$" [money\], while all other (inferior to main line) vars are marked with "~".  The only detailed branc  here is "d"/4, which has its own sub-branch.

2) Sequence of immediately preceding moves:  
Now, note that the other row 3 moves (the _preceding_ moves in the game) are labelled.  I have shown a ridiculously large number (9) of such preceding moves.  Normally, one would use up to 3 (all entered by hand, and optional).  As you move backwards, the labels obviously have to change appropriately!  :-)
I have somewhat arbitrarily chosen them with meanings, (at left -- -on right is an alternative idea, not shown here) thus:
. = -1  .. = -2  ... = -3     or    ;;; = -1  ;; = -2  ; = -1
, = -4  ,, = -5  ,,, = -6            ,,, = -4   ,, = -5  , = -6 
; = -7  ;; = -8  ;;; = -7            ... =  -7  .. = -8  . = -9
[getting "heavier"\]                 [getting "lighter"\]

Let me know if you prefer them in a different order -- either/both within triples, or between triples. 
Also, what about the triples ( '  ''  ''' ), and ( !  !!  !!! ), or even ( |  ||  ||| ) ?

Instead?  As well??

Is it worth having a convention that goes back further than -9?

You can experience some of the significance of this if you select variation (4/d), and follow it to the end, and perhaps move backwards, step by step.

I have also added another idea:  (optionally, manually) indicate recent branch points (when not the immediately preceding move!) using "+", and "++" (ideally, would be a symbol -- maybe "|" for which 3 will fit on a stone), thus:
+ = most recent branch point
++ = previous branch point
[I illustrate this with variation (4/d)\]
 or, maybe -- NOT USED HERE
| = most recent branch point
|| = previous branch point (branch -1)
||| = the branch point before that  (branch -2) , and even
|||| = branch - 3 ?!

N.B. If we have "preceding sequence" marks, then -- if both occur at the same move -- the "+", or "++", replace the sequence marks.


3) Which labels render OK?   See rows 19, ,17, 15, 13, 11, 9, 7, and 5.

Some observations on behaviours of different SGF tools:
----------------------------------------------------------

EidoGo is the most fussy, and unpredictable, of the ones that we checked.

To ensure that your SGF files are as portable as possible:

1) Never use backslash, ":" (colon), "`" (backtick), "¬", "-"(minus), "[", "\]".  They can cause the display of labels to break,  Avoid "*" (asterisk) -- is ignored by some (notably SmartGo), and "**" seems to be interpreted as BOLD.
2) For eidoGo: avoid  "<", ">";  "(", ")" (unless matched) , and most duplicated lower case letters -- "o" is OK, but "oo", is not, while "ooo" is OK!  "vv" is not a problem.  Some combinations of lower-case letters are also problematic -- e.g. "lt", "gt",.  Eidogo does not "centre" labels. 
3) Remember that wide labels can look awful.

Some other details:
SmartGo, and Multi Go are OK with 4  of "!", or ";" -- GoWrite is not, and makes a bit of a mess of the vertical bar, though OK with 4 apostrophes.  cgoban:  Max 3 of anything, OK

Wgo.js:  Supreme -- even doe the square brackets, and >, and <.   :-)

Eidogo does 4 dots, but not 4 commas, and badly 4 exclamation marks -- no other useful fours.

Drago:  Hates square brackets.  Otherwise OK

We removed "[" from this SGF file, because of problems with some.  "\]" also just in case, though problem not tested/seen YET

qlgo OK; 

GoWrite: all present, but font too large;  

CGoban: all symbols OK;  

Jago 6.2: Markup v good -- as per  best Smartgo.
]
(;W[rq]LB[qq:.][pq:..][oq:...][nq:,][mq:,,][lq:,,,][kq:;][jq:;;][iq:;;;][pp:~][qp:~][qr:~][pr:~]
;B[sq]LB[rq:.][pq:...][oq:,][nq:,,][mq:,,,][lq:;][kq:;;][jq:;;;][qq:..]
C[Go back 2 moves -- to move 169 -- for more instructions, and also for more comments on  problems with labelling

This shows some of the trials that we did before getting to this file:

In Go Write all labels OK, incl ":" (we did not check"\\", and backtick)

In Multigo: all labels OK, incl ":" (we did not check"\\", and backtick)

In SmartGo: problems with "\\" (backslash), "`" (backtick), ":" (colon) -- not rendered, and/or causes subsequent problems, so removed from all.  Here, backtick "`" not rendered, and double backtick is rendered as single, so removed all backticks

In Wgo:
row 19 all OK;  
Row 17: "¬" rendered as "?" in reverse vid lozenge, so removed;  
Row 16: "\\\\" rendered with extra text "\\\][ac:o" so removed; Cols j/k "::", and ":" not rendered
Here double asterisk -- row 6, col D, rendered as RED "*"

EidoGo is VERY FUSSY
Row 18: Only the single "i" is rendered!
Row 17, omly the "o", the Cross, and the last 3 are rendered!!
Row 16: only "//"a, and the last two!!
Row 14 -- NONE
Row 12: ">" --> "&gt", the +" as the last move, 
Row 10: All OK until angle brackets!!
Row 8: All OK until "#". and then blank until the end -- "!!".
Row 6: Only the Double Asterisk (interpreted by SmartGo as BOLD), BUT
Final Row 4, varn:  All OK!!!!!

Removed the GT and LT symbols
===========================================

Check labels while numbering is on:

SmartGo -- numbers suppressed, when a label is supplied.
MultiGo:  Overprint
cgoban: numbers overwrite labels

EidoGo:  I do not know how to use numbering
Wgo.js:  i do not know how to use numbering.

SmartGo Kifu: as per SmartGo.  :-) except that it does not let you show board marks for subsequent move variations.

]
)
(;W[rr]LB[rq:$][qp:~][rp:~][qr:~])
(;W[rp]LB[qp:~][rq:$][rr:~][qr:~])
(;W[qp]LB[rp:~][rq:$][rr:~][qr:~];B[pp]LB[qp:.][qq:+][pq:..][oq:,][nq:,,][mq:,,,][lq:;][kq:;;][jq:;;;]
;W[op]LB[pp:.][qp:..][qq:+][pq:,][oq:,,][nq:,,,][mq:;][lq:;;][kq:;;;];B[np]
LB[op:.][pp:..][qp:...][qq:+][pq:,,][oq:,,,][nq:;][mq:;;][lq:;;;]
(;W[mp]LB[np:.][op:..][pp:...][qp:,][qq:+][pq:,,,][oq:;][nq:;;][mq:;;;][nr:~]
;B[lp]LB[mp:.][op:...][pp:,][qp:,,][pq:;][oq:;;][nq:;;;][np:+][qq:++];W[kp]
LB[lp:.][mp:..][np:+][op:,][pp:,,][qp:,,,][qq:++][pq:;;][oq:;;;];B[jp]LB[kp:.][lp:..][mp:...][op:,,][pp:,,,][qp:;][np:+][qq:++][pq:;;;]
;W[ip]LB[jp:.][kp:..][lp:...][mp:,][np:+][op:,,,][pp:;][qp:;;][qq:++];B[hp]
LB[ip:.][jp:..][kp:...][lp:,][mp:,,][np:+][op:;][pp:;;][qp:;;;][qq:++];W[gp]
LB[hp:.][ip:..][jp:...][kp:,][lp:,,][mp:,,,][op:;;][np:+][pp:;;;][qq:++]
;B[fp]LB[gp:.][hp:..][ip:...][jp:,][kp:,,][lp:,,,][mp:;][np:+][op:;;;][qq:++]
;W[ep]LB[fp:.][gp:..][hp:...][ip:,][jp:,,][kp:,,,][lp:;][mp:;;][np:+][qq:++]
;B[dp]LB[ep:.][fp:..][gp:...][hp:,][ip:,,][jp:,,,][kp:;][lp:;;][mp:;;;][np:+][qq:++]
;W[cp]LB[dp:.][ep:..][fp:...][gp:,][hp:,,][ip:,,,][jp:;][kp:;;][lp:;;;][np:+][qq:++]
;B[bp]LB[cp:.][dp:..][ep:...][fp:,][gp:,,][hp:,,,][ip:;][jp:;;][kp:;;;][np:+][qq:++]
)
(;W[mr]LB[np:.][op:..][pp:...][qq:+][qp:,][pq:,,,][oq:;][nq:;;][mq:;;;][mp:$]
;B[lr]LB[mr:.][np:+][op:...][pp:,][qp:,,][qq:++][pq:;][oq:;;][nq:;;;];W[kr]
LB[lr:.][mr:..][np:+][op:,][pp:,,][qp:,,,][qq:++][pq:;;][oq:;;;];B[jr]LB[kr:.][lr:..][mr:...][np:+][op:,,][pp:,,,][qp:;][qq:++][pq:;;;]
;W[ir]LB[jr:.][kr:..][lr:...][mr:,][np:+][op:,,,][pp:;][qp:;;][qq:++]))
(;W[qr]LB[rq:$][qp:~][rp:~][rr:~]))
(;W[pp];B[dp];W[nq];B[fq];W[qj];B[cj];W[oj];B[ej];W[qp];B[co];W[mj];B[gj]
;W[mo];B[fo]MA[ka]RG[ia]CR[ja][jb][jc][jd][je][jf][jg][jh][ji]LB[bc:d][cc:i][dc:m][pc:s][qc:e][rc:l]
TW[mg][ng][og][pg][qg][rg][sg][mh][nh][oh][ph][qh][rh][sh]V[0.0]
TB[gg][fg][eg][dg][cg][bg][ag][ah][bh][ch][dh][eh][fh][gh]DD[cb][bc][ad][da][ae][bd][cc][db][af][be][cd][dc][eb][fa][fb][ec][dd][ce][bf][ag][ah][bg][cf][de][ed][fc][gb][ga][ha]
SL[pa][qb][rc][sd][oa][pb][qc][rd][se][na][ob][pc][qd][re][sf][nb][oc][pd][qe][rf][sg][sh][rg][qf][pe][od][nc][mb][ma][la]
C[Top left: dimmed -- Note: persistent, if honoured as "dim", rather than "select"!!  
Top right Selected
bottom left: show black area
bottom right: show white area
Mark diamond, and Cross, top centre -- check esp GoWrite
Goto move 43 for (actual) enclosed territory marking

Wgo: does not honour dim, at all!  ;  does not honour enclosed territory;  does not honour mark B/W territory

Eidogo: Honours Show B/W territory, Mark B/W territory; does NOT honour Select;  does honour dim, but treats it as "Select" (and manual alpha labels have precedence);  Gives "undefined" error message in comment window at this node -- maybe because of non-honoured? !!

MultiGo: does not honour Dim or Select

GoWrite:  DIm not honoured;  Select honoured -- text overwrite select.  Show B/W territory honoured;  Show enclosed, and Mark B/W OK.  ?? honours diamond and Cross.

CGoban: does not honour DIm or Select.  Honours all Marking/showing of territory.

glGo  v 1.4 :  no dim, no select, circles Ok, crosses OK, Diamonds Not OK.  B/W territory OK;  Mark B/W --> weirdness

Drago 4.23: No Dim; no select; circles OK, Cross OK; Diamind No.  B/W/ territory OK;  Mark B/W/ Show enclosed OK

Jago 6.2:  NoUTF8;  Like tree display, but cannot clock on the node!  Also var marked on board, but cannot click there -- have to use arrows!!  Cannot adjust subwindows.  bad defaults for label colours -- can be changed.
Select OK, Dim Not ;  label + dim [box\];  Cross OK;  No Diamnod;  Circle OK;  Show B/W/ OK;  Mark B/W OK;  Show enclosed OK;



]
;W[nr];B[fr];W[ns];B[fs];W[rp];B[bo];W[sp];B[ao];W[op];B[ep]
TB[ba][da][fa][ha][ja][la][na][pa][ra][ag][bg][cg][dg][eg][fg][gg][ah][bh][ch][dh][eh][fh][gh][cj][ej][gj][ao][bo][co][fo][ap][bp][cp][dp][ep][aq][bq][cq][dq][eq][fq][ar][br][cr][dr][er][fr][as][bs][cs][ds][es][fs]
TW[aa][ca][ea][ga][ia][ka][ma][oa][qa][sa][mg][ng][og][pg][qg][rg][sg][mh][nh][oh][ph][qh][rh][sh][mj][oj][qj][mo][op][pp][qp][rp][sp][nq][oq][pq][qq][rq][sq][nr][or][pr][qr][rr][sr][ns][os][ps][qs][rs][ss]
V[1.0]
C[In SmartGo, did mark enclosed territory (and did not clear -- just done), so implicitly saved these in lower left (black), and lower right (white). 
Manually added, mark B (at left), and W (at right) territory, on row2, and 13

NB Dimmed at top left persists from Move 33 (if honoured!)

Wgo: Does not honour dimmed, or "show Enclose territory" marks;  dimmed (obviously) not persists -- because not honoured, at all!;  does not honour shoe B/W, or Mark B/W territories.

EidoGo:  Does not honour selected, at all.  does honour dimmed (persists); Show B/W OK;  Mark B/W/ OK

Portability Overview:
Not sensible to use Dim, or Select.
TBD -- test with other editors/ viewers, inclusing Sabaki .... 

]
))

