如何读单词中的特定字母?

如何读单词中的特定字母?

大家好,我甚至不知道如何使用 latex 读取单词中的特定字母。假设我们有一个单词“MARCH”,我想读取从左边开始的第二个字母,所以答案是 A。那么有没有什么软件包可以做到这一点?您的评论非常宝贵。

答案1

只需将 RobtAll 的评论转化为快速答案,即可表明这xstring确实很简单。这是一个非常通用的软件包 - 有时间可以查看一下。

\documentclass{article}
\usepackage{xstring}

% we can save a substring in a macro ...
\StrMid{MARCH}{2}{4}[\marchtwofour]

\begin{document}

% ... or omit the macro and just output it directly
The second letter of ``MARCH'' is \StrMid{MARCH}{2}{2} 

The second to fourth letters of ``MARCH'' are \marchtwofour

\end{document}

在此处输入图片描述

答案2

在两种情况下都会打印“A”:负数表示“从末尾开始”。

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewExpandableDocumentCommand{\letter}{mm}
 {% #1=position, #2=word
  \tl_item:nn { #2 } { #1 }
 }
\ExplSyntaxOff

\begin{document}

\letter{2}{MARCH}

\letter{-4}{MARCH}

\end{document}

这将打印四次“A”

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewExpandableDocumentCommand{\letter}{smm}
 {% #1=*, #2=position, #3=word
  \IfBooleanTF{ #1 }
   {
    \tl_item:Vn #3 { #2 }
   }
   {
    \tl_item:nn { #3 } { #2 }
   }
 }
\cs_generate_variant:Nn \tl_item:nn { V }
\ExplSyntaxOff

\newcommand{\word}{MARCH}

\begin{document}

\letter{2}{MARCH}

\letter{-4}{MARCH}

\letter*{2}{\word}

\letter*{-4}{\word}

\end{document}

答案3

这是一个基于 LuaLaTeX 的解决方案。它设置了一个名为 的 LaTeX 宏\pick,该宏接受两个参数:(i) 感兴趣的字符串(可能是一个单词,但实际上可以是任何字符串)和 (ii) 要选择的字符的位置;这通常应该是 1 到 n 之间的整数,其中“n”是字符串中的字符数( 的第一个参数\pick)。允许使用负数,在这种情况下搜索将从字符串的末尾开始并向后移动。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}
\newcommand\pick[2]{\directlua{tex.sprint(string.sub("#1",#2,#2))}}

\begin{document}
\pick{March}{2} \pick{March}{5} \pick{March}{-5}
\end{document}

的第一个参数\pick可以是宏;如果是这样,它将首先被扩展。例如,假设我们有\newcommand\March{Hello}。然后,pick{\March}{-5}将返回H——从字符串“Hello”的末尾向后数的第五个字符,因为的扩展\MarchHello

答案4

在此处输入图片描述

\documentclass{article}

\def\zz#1#2#3 {#2}
\begin{document}

\zz MARCH

\end{document}

相关内容