간단한 솔루션

간단한 솔루션

그런 식으로 문자열을 생성하기 위해 변수를 사용하고 있습니다.

\newcommand{\myText}{2014/12/20}
\myText{}

이것은 훌륭하게 작동합니다. 이제 이 문자열(길이는 10)의 모든 단일 문자에 액세스할 수 있습니다. 내 문서의 다른 섹션에서는 문자열의 처음 4자("2014")만 가져와서 새로운 문자열을 만들고 싶기 때문입니다.

답변1

간단한 솔루션

이는 xstring패키지를 사용하여 수행할 수 있습니다. 특히 이 명령을 사용하면 \StrMid{string}{#2}{#3}문자 위치에서 문자열의 하위 문자열을 가져올 수 있습니다 .#2#3

\documentclass{article}
\usepackage{xstring}
\newcommand{\myText}[2]{\StrMid{2014/12/20}{#1}{#2}}

\begin{document}
\myText{1}{4}
\end{document}

허용\myText{}

그러나 위의 솔루션에는 항상 \myText.

\myText{}전체 문자열을 제공 하려는 것 같습니다 2014/12/20. 따라서 첫 번째 매개변수를 선택적으로 만들 수 있으며(괄호 안에 지정되지 않은 경우 기본값은 첫 번째 위치로 설정됨) 두 번째 매개변수는 두 번째 위치가 됩니다. 두 번째 위치가 비어 있으면 전체 문자열을 가져오도록 조건을 설정했습니다.

\documentclass{article}
\usepackage{xstring}
\newcommand{\myText}[2][1]{
    \ifx\\#2\\
        {2014/12/20}
    \else
        \StrMid{2014/12/20}{#1}{#2}
    \fi
}

\begin{document}

\myText{}

\myText[1]{4} \quad
\myText[6]{7} \quad
\myText[9]{10} \quad

\myText{7} \quad
\myText[6]{10}
\end{document}

답변2

패키지 로 stringstrings.

\documentclass{article}
\usepackage{stringstrings}
\begin{document}
\def\x{2014/12/20}
\substring{\x}{1}{4}\par
\substring{\x}{6}{7}\par
\substring{\x}{9}{$}\par% The $ implies the last character of the string.
\end{document}

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


패키지 대신 구분 기호 listofitems를 기준으로 입력 문자열을 구문 분석하도록 여기에서 설정합니다 /.

\documentclass{article}
\usepackage{listofitems}
\begin{document}
\def\x{2014/12/20}
\setsepchar[.]{/}
\readlist\mydate{\x}
The year is \mydate[1]\par
The month is \mydate[2]\par
The day is \mydate[3]\par
\end{document}

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

답변3

세 개의 인수를 사용 하는 TeX 매크로를 설정하는 LuaLaTeX 기반 솔루션입니다 \substring.

매크로의 첫 번째 인수 \substring는 문자열입니다. 하드 코딩된 문자열이거나 문자열을 생성하는 TeX 매크로일 수 있습니다. 예를 들어 가 \myText를 통해 정의된 \newcommand{\myText}{2014/12/20}경우 \myText의 첫 번째 인수로 사용될 수 있습니다 \substring.

두 번째 및 세 번째 인수는 하위 문자열의 시작 및 끝 인덱스이며 정수로 간주됩니다. 이 가정이 유효하지 않은지 알려주세요.

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

% !TEX TS-program = lualatex
\documentclass{article}
\newcommand\substring[3]{%
    \directlua{ tex.sprint ( string.sub ( "#1", #2, #3 ) ) } }
\begin{document}
\substring{2014/12/20}{1}{4}
\end{document}

관련 정보