Quiero dibujar separadores pequeños y delgados entre letras, sin cambiar el espaciado entre letras (seguimiento) en Xetex. Aquí hay un intento fallido con \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}
Resultado:
Me gustaría que las letras de las dos líneas anteriores se alinearan exactamente entre sí, a pesar de los separadores adicionales en la línea inferior. Estoy abierto a soluciones alternativas como dibujar cosas en tikz, siempre y cuando el resultado pueda usarse en línea, en medio del texto (sin línea, digamos, una tabla).
Respuesta1
El siguiente código define un comando \vlines[optional position]{letter sequence}
tal que la entrada
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.
resultados en
\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}
Editar:Según los comentarios sólo se necesita una línea de letras equiespaciadas, con separadores entre ellas. Esto simplifica un poco el código.
\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}