손으로, 타자기로 채울 수 있거나 LaTeX 소스에 문자열을 입력하여 채울 수 있는 고정 길이 밑줄 세그먼트가 있는 텍스트 문서

손으로, 타자기로 채울 수 있거나 LaTeX 소스에 문자열을 입력하여 채울 수 있는 고정 길이 밑줄 세그먼트가 있는 텍스트 문서

줄과 단락에 미리 설정된 다양한 길이의 밑줄 세그먼트(\rule{}{})가 포함될 수 있는 간단한 텍스트 문서를 만들고 싶습니다. 밑줄 부분만 포함하여 문서를 편집하고 인쇄하면 손으로 또는 타자기로 채울 수 있는 종이 문서가 생성됩니다.

또한 타자기로 작성한 것처럼 보이지만 실제로는 LaTeX 소스에서 타자기 글꼴로 텍스트를 입력하여 생성되는 문서를 생성하고 싶습니다.

최소 작업 예제는 원하는 효과를 달성하지만 올바른 길이를 얻는 데 필요한 밑줄이 그어진 텍스트 \ultt{} 다음에 밑줄 \ul{}의 길이를 결정하는 비실용적인 수동 조작을 통해서만 가능합니다.

분명히 세그먼트에 입력된 밑줄 친 타자기 글꼴 텍스트의 길이를 계산하고 밑줄 확장의 길이를 얻기 위해 밑줄 세그먼트의 미리 설정된 길이에서 이를 빼는 방법이 필요합니다.

최소한의 작업 예제 코드는 아이디어를 명확하게 해야 합니다.

분명히 기존 패키지로 결과를 얻을 수 있는 좀 더 직접적인 방법이 있으면 좋을 것 같지만 아무것도 찾지 못한 채 여러 번 몇 시간 동안 검색했습니다.

\documentclass[10pt, letterpaper]{article}

\usepackage[top=1.00in, bottom=1.00in, left=1.00in, right=1.00in]{geometry}
\usepackage[parfill]{parskip}
\usepackage{ulem} % Set depth of underline
\def\ul#1{\rule[-1.8pt]{#1}{0.4pt}}
\def\ultt#1{\rule[-1.8pt]{0em}{0.4pt}\uline{\texttt{#1}}\rule[-1.8pt]{0em}{0.4pt}}

\begin{document}

\renewcommand{\ULdepth}{1.8pt}

\vspace{3ex}
\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}  % Guide line
\makebox[\textwidth][l]{\rule{3.125in}{0.4pt}\rule{0.25in}{1pt}\rule{3.125in}{0.4pt}}  % Guide line
\vspace{1ex}
\makebox[\textwidth][l]{Seller \ul{2.75in}, of \ul{3.13in}}
\vspace{1ex}
\makebox[\textwidth][l]{Seller \ultt{Mr. Gargantua}\ul{1.73in}, of \ultt{France}\ul{2.69in}}
\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}   % Guide line

\end{document}

답변1

이를 달성하는 방법에는 여러 가지가 있습니다.

타자기 텍스트에 명령을 사용할 수 있습니다 \rlap. 그러면 명령이 \ul시작되는 곳에서 시작된 명령이 \ul원래 삽입한 길이와 같을 수 있습니다. (더 이상 필요하지 않으므로 타자기 텍스트 아래의 밑줄을 제거하십시오.)

\newcommand{\mytt}[1]{\rlap{\texttt{#1}}}

\makebox[\textwidth][l]{Seller \ul{2.75in}, of \ul{3.13in}}
\vspace{1ex}
\makebox[\textwidth][l]{Seller \mytt{Mr.\ Gargantua}\ul{2.75in}, of \mytt{France}\ul{3.13in}}

( 을 사용하지 않으므로 패키지 \underline가 필요하지 않거나 ulem를 재정의할 필요가 없습니다 \ULdepth.)

그건 그렇고, mboxes를 필요하게 만드는 것은 parskip의 parfill 옵션입니다. 나는 그것을 꺼낼 것입니다. 그것 없이는 간단하게 다음을 수행할 수 있습니다.

Seller \ul{2.75in}, of \ul{3.13in}

\vspace{1ex}
Seller \mytt{Mr.\ Gargantua}\ul{2.75in}, of \mytt{France}\ul{3.13in}

그러나 개인적으로 나는 더 게으르게 갈 것입니다. 패키지 를 로드하고 xhfill공백을 자동으로 줄을 채우기에 적합한 길이로 만드는 명령을 정의합니다.

\usepackage{xhfill}
\newcommand{\mytt}[1]{\rlap{\texttt{#1}}}
\newcommand{\myulfill}{\xrfill[-1.8pt]{0.4pt}}
...
Seller \myulfill, of \myulfill

\vspace{1ex}
Seller \mytt{Mr.\ Gargantua}\myulfill, of \mytt{France}\myulfill

그러면 수동으로 계산할 필요가 없습니다.아무것.

그러나 이렇게 하면 공백이 동일한 크기로 만들어집니다. 이를 원하지 않으면 행의 마지막 공백에만 사용하여 시행착오를 거치지 않고도 공백이 행을 채울 수 있는 너비가 정확히 맞는지 확인할 수 있습니다.

귀하가 제안한 대로 수행하는 것도 가능합니다. 삽입 너비를 구해 빼십시오.

\newlength{\ullength}
\setlength{\ullength}{2.75in}
\newlength{\fieldwidth}
\settowidth{\fieldwidth}{\texttt{Mr.\ Gargantua}}
\addtolength{\ullength}{-\fieldwidth}

\makebox[\textwidth][l]{Seller \ultt{Mr.\ Gargantua}\ul{\ullength} ...}

그러나 나는 그 길로 가는 것을 추천하지 않습니다.

관련 정보