Quero desenhar separadores pequenos e finos entre as letras, sem alterar o espaçamento entre letras (rastreamento) no Xetex. Aqui está uma tentativa fracassada com \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:
Gostaria que as letras nas duas linhas acima se alinhassem exatamente uma com a outra, apesar dos separadores extras na linha inferior. Estou aberto a soluções alternativas, como desenhar coisas no tikz, desde que o resultado possa ser usado em linha, no meio do texto (sem linha, digamos, em uma tabela).
Responder1
O código abaixo define um comando \vlines[optional position]{letter sequence}
tal que a 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.
resulta em
\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:De acordo com os comentários, é necessária apenas uma linha de letras igualmente espaçadas, com separadores entre elas. Isso simplifica um pouco o 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}