문자 간격에 영향을 주지 않고 문자 사이에 짧은 수직선을 그립니다.

문자 간격에 영향을 주지 않고 문자 사이에 짧은 수직선을 그립니다.

Xetex에서 문자 간격(추적)을 변경하지 않고 문자 사이에 작고 얇은 구분 기호를 그리고 싶습니다. 다음은 실패한 시도입니다 \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}

결과:

\rule을 사용하여 xetex에서 추적 렌더링

맨 아래 줄에 추가 구분 기호가 있음에도 불구하고 위 두 줄의 문자가 서로 정확하게 정렬되기를 바랍니다. 결과가 인라인, 중간 텍스트(라인 해제, 예를 들어 표 형식)로 사용될 수 있는 한 tikz에서 그림을 그리는 것과 같은 대체 솔루션에 열려 있습니다.

답변1

아래 코드는 \vlines[optional position]{letter sequence}입력이 다음과 같은 명령을 정의합니다.

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.

결과

여기에 이미지 설명을 입력하세요

\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}

편집하다:의견에 따르면 사이에 구분 기호를 사용하여 균등한 간격의 문자로 한 줄만 필요합니다. 이렇게 하면 코드가 조금 단순화됩니다.

여기에 이미지 설명을 입력하세요

\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}

관련 정보