Ich möchte kleine, dünne Trennlinien zwischen Buchstaben zeichnen, ohne den Buchstabenabstand (Laufweite) in Xetex zu ändern. Hier ist ein fehlgeschlagener Versuch mit \rule
:
\documentclass{minimal}
\setlength{\parindent}{0cm}
\usepackage{fontspec}
\setromanfont[LetterSpace=50.0]{Noto Serif}
\newcommand{\mysep}{\rule[0.125em]{1pt}{0.5em}}
\begin{document}
HLHHLLH\\
HL\mysep{}HHL\mysep{}LH
\end{document}
Ergebnis:
Ich möchte, dass die Buchstaben in den beiden Zeilen oben genau aufeinander ausgerichtet sind, trotz der zusätzlichen Trennzeichen in der unteren Zeile. Ich bin offen für alternative Lösungen wie das Zeichnen von Inhalten in Tikz, solange das Ergebnis inline, mitten im Text verwendet werden kann (nicht inline, z. B. in einer Tabelle).
Antwort1
Der folgende Code definiert einen Befehl, \vlines[optional position]{letter sequence}
so dass die Eingabe
Some text \vlines{HL|HHL|LH} some more text.
Some text \vlines[t]{HL|HHL|LH} some more text.
Some text \vlines[b]{HL|HHL|LH} some more text.
führt zu
\documentclass{minimal}
\setlength{\parindent}{0cm}
% \usepackage{fontspec}
% \setromanfont[Scale=2,LetterSpace=50.0]{Noto Serif}
\newcommand{\mysep}{\rule[0.125em]{1pt}{0.5em}}
\makeatletter
\newcommand\vloop{\@ifnextchar|{\vloopa}{\vloopb}}
\makeatother
\newcommand\vloopa[1]{\let\sep\vline\vloop}
\newcommand\vloopb[1]%
{\ifx\relax#1%
\else
\sep
\let\sep\NoVline
#1%
\expandafter\vloop
\fi
}
\newcommand\sep{}
\newcommand\NoVline{\makebox[0.5em]{}}
\newcommand\Vline{\makebox[0.5em]{\mysep}}
\newcommand\vlines[2][]%
{\begin{tabular}[#1]{@{}l@{}}%
\let\vline\NoVline\def\sep{}\vloop#2\relax\\
\let\vline\Vline\def\sep{}\vloop#2\relax
\end{tabular}%
}
\begin{document}
Some text \vlines{HL|HHL|LH} some more text.
\bigskip
Some text \vlines[t]{HL|HHL|LH} some more text.
\bigskip
Some text \vlines[b]{HL|HHL|LH} some more text.
\end{document}
Bearbeiten:Laut den Kommentaren wird nur eine Zeile mit gleichmäßig verteilten Buchstaben und Trennzeichen dazwischen benötigt. Dies vereinfacht den Code ein wenig.
\documentclass{minimal}
\newcommand{\mysep}{\rule[0.125em]{1pt}{0.5em}}
\makeatletter
\newcommand\vloop{\@ifnextchar|{\vloopa}{\vloopb}}
\makeatother
\newcommand\vloopa[1]{\let\sep\Vline\vloop}
\newcommand\vloopb[1]%
{\ifx\relax#1%
\else
\sep
\let\sep\NoVline
#1%
\expandafter\vloop
\fi
}
\newcommand\sep{}
\newcommand\NoVline{\makebox[0.5em]{}}
\newcommand\Vline{\makebox[0.5em]{\mysep}}
\newcommand\vlines[1]{\def\sep{}\vloop#1\relax}
\begin{document}
Some text \vlines{HL|HHL|LH} some more text.
\end{document}