Well you could make a hybrid system that combines the sibling order of ancestors:
$MyString=;
$MyList=collect(ancestors,$Path).sort($OutlineOrder);
$MyList.each(X){
if($MyString){
$MyString=$MyString+"."+$SiblingOrder(X).format(0,3,"0");
}else{
$MyString=$SiblingOrder(X).format(0,3,"0");
};
};
$MyString=$MyString+"."+$SiblingOrder.format(0,3,"0");
$MyStringA=$MyString;
I’ve deliberately left-padded the sibling numbers with a zero, so the each ‘segment’ of the zettel number has 3 digital - allowing 999 siblings per segment. If you think any segment might need over 1,000 siblings amend the ‘3’ to a ‘4’ in the format() code and you will get 4 digits allowing up to 9,999 per segment. Although the segments between fixed lengths are constant, the number of segments is only limited by how deeply you nest.
It seems a lot to run as a rule but sadly moving a note via drag-drop doesn’t seem to fire the Edict (which isn’t what i expected).
As people seem quite first up about the zettelkasten approach, putting this logic in an action might be useful (with a parameter allowing the user to set the number of padding digits).