Da hast Du dann das ewige Problem:
Der Seitenumbruch ist asynchron, da heißt bei Ausführung des Befehls ist noch nicht bekannt, auf welcher Seite etwas landet.
Ein Absatz wird erst vollständig umbrochen, bevor er auf die Seiten verteilt wird. Deshalb kann eine einmal getroffene Entscheidung für die horizontale Ausrichtung im Falle eines Umbruchs auf eine andere Seite nicht verändert werden.
Wenn also etwas auf die nächste Seite umbrochen wird, dann bleibt es auch in der Ausrichtung, in der der Absatz bereits zuvor umbrochen wurde. Deshalb funktioniert zwar im einfachen Beispiel:
\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}
\usepackage{lipsum}
\DeclareNewNoteColumn[reversemarginpar,width=.333\marginparwidth]{notetwo}
\DeclareRobustCommand*{\leftorright}[1]{%
\Ifthispageodd{\raggedright #1}{\raggedleft #1}%
}
\DeclareRobustCommand*{\rightorleft}[1]{%
\Ifthispageodd{\raggedleft #1}{\raggedright #1}%
}
\begin{document}
\lipsum[1]
\makenote{\leftorright{15}}
\makenote[notetwo]{\rightorleft{32}}
\newpage
\lipsum[2]
\makenote{\leftorright{16}}
\makenote[notetwo]{\rightorleft{33}}
\end{document}
Aber der Sinn von scrlayer-notecolumn ist ja gerade, dass Seitenumbrüche in den Notizen erfolgen und auch ganze Notizen auf zukünftige Seiten verschoben werden können. Und das funktioniert dann eben nur noch teilweise:
documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}
\usepackage{lipsum}
\DeclareNewNoteColumn[reversemarginpar,width=.333\marginparwidth]{notetwo}
\DeclareRobustCommand*{\leftorright}[1]{%
\Ifthispageodd{\raggedright #1}{\raggedleft #1}%
}
\DeclareRobustCommand*{\rightorleft}[1]{%
\Ifthispageodd{\raggedleft #1}{\raggedright #1}%
}
\begin{document}
\lipsum[1]
\makenote{\leftorright{15}}
\makenote[notetwo]{\rightorleft{32}}
\lipsum[2-5]
\makenote{\leftorright{\protect\lipsum[1]}}
\makenote[notetwo]{\rightorleft{\protect\lipsum[1]}}
\lipsum[6-15]
\end{document}
Auf der ersten Seite ist noch alles im linken Rand schön rechtsbündig und im rechten linksbündig. Auf der zweiten Seite aber eben nicht mehr, weil die beiden Absätze bereits auf der ersten Seite fertig umbrochen wurden. Auf der dritten Seite stimmt es dann natürlich wieder, aber auf der vierten nicht mehr usw.
Und ja, im Bereich des Seitenumbruchs kann das auch am Anfang der nächsten Seite direkt falsch sein. Und nein, dagegen kann ich nichts machen. Es gibt Dinge, die gehen alleine mit TeX einfach nicht. Und außerdem ist scrlayer-scrpage nur ein Proof-of-Concept für scrlayer.
Bezüglich der Notwendigkeit von \protect (im Falle von \leftorright und \rightorleft durch Verwendung von \DeclareRobustCommand) sei auf die Anleitung verwiesen.
Da hast Du dann das ewige Problem: [list][*]Der Seitenumbruch ist asynchron, da heißt bei Ausführung des Befehls ist noch nicht bekannt, auf welcher Seite etwas landet.
[*]Ein Absatz wird erst vollständig umbrochen, bevor er auf die Seiten verteilt wird. Deshalb kann eine einmal getroffene Entscheidung für die horizontale Ausrichtung im Falle eines Umbruchs auf eine andere Seite nicht verändert werden.[/list]
Wenn also etwas auf die nächste Seite umbrochen wird, dann bleibt es auch in der Ausrichtung, in der der Absatz bereits zuvor umbrochen wurde. Deshalb funktioniert zwar im einfachen Beispiel: [code]\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}
\usepackage{lipsum}
\DeclareNewNoteColumn[reversemarginpar,width=.333\marginparwidth]{notetwo}
\DeclareRobustCommand*{\leftorright}[1]{%
\Ifthispageodd{\raggedright #1}{\raggedleft #1}%
}
\DeclareRobustCommand*{\rightorleft}[1]{%
\Ifthispageodd{\raggedleft #1}{\raggedright #1}%
}
\begin{document}
\lipsum[1]
\makenote{\leftorright{15}}
\makenote[notetwo]{\rightorleft{32}}
\newpage
\lipsum[2]
\makenote{\leftorright{16}}
\makenote[notetwo]{\rightorleft{33}}
\end{document}
[/code]
Aber der Sinn von [ctan]scrlayer-notecolumn[/ctan] ist ja gerade, dass Seitenumbrüche in den Notizen erfolgen und auch ganze Notizen auf zukünftige Seiten verschoben werden können. Und das funktioniert dann eben nur noch teilweise:
[code]documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}
\usepackage{lipsum}
\DeclareNewNoteColumn[reversemarginpar,width=.333\marginparwidth]{notetwo}
\DeclareRobustCommand*{\leftorright}[1]{%
\Ifthispageodd{\raggedright #1}{\raggedleft #1}%
}
\DeclareRobustCommand*{\rightorleft}[1]{%
\Ifthispageodd{\raggedleft #1}{\raggedright #1}%
}
\begin{document}
\lipsum[1]
\makenote{\leftorright{15}}
\makenote[notetwo]{\rightorleft{32}}
\lipsum[2-5]
\makenote{\leftorright{\protect\lipsum[1]}}
\makenote[notetwo]{\rightorleft{\protect\lipsum[1]}}
\lipsum[6-15]
\end{document}[/code]
Auf der ersten Seite ist noch alles im linken Rand schön rechtsbündig und im rechten linksbündig. Auf der zweiten Seite aber eben nicht mehr, weil die beiden Absätze bereits auf der ersten Seite fertig umbrochen wurden. Auf der dritten Seite stimmt es dann natürlich wieder, aber auf der vierten nicht mehr usw.
Und ja, im Bereich des Seitenumbruchs kann das auch am Anfang der nächsten Seite direkt falsch sein. Und nein, dagegen kann ich nichts machen. Es gibt Dinge, die gehen alleine mit TeX einfach nicht. Und außerdem ist [ctan]scrlayer-scrpage[/ctan] nur ein Proof-of-Concept für [ctan]scrlayer[/ctan].
Bezüglich der Notwendigkeit von [tt]\protect[/tt] (im Falle von [tt]\leftorright[/tt] und [tt]\rightorleft[/tt] durch Verwendung von [tt]\DeclareRobustCommand[/tt]) sei auf die Anleitung verwiesen.