
Я хотел бы запустить следующий код, но второй тест не проходит
! Argument of \@secondoftwo has an extra }.
Чего мне не хватает?
\documentclass{article}
\usepackage{xstring,ifthen}
\newcommand{\mytest}[1]{%
\newcommand{\s}{\StrChar{#1}{3}}
\newcommand{\x}{c}
3rd charactor of input is: \s ~equal to \x \\
1st test: \IfStrEq{\x}{c}{true}{false} \\
2nd test: \IfStrEq{\s}{c}{true}{false}
}
\begin{document}
\mytest{abcd}
\end{document}
Любая помощь приветствуется, спасибо, Мальте
решение1
Вы не определяете\s
что будете третьим персонажем, а скорее сложным набором инструкций дляпечатьтретий персонаж.
Используйте улучшенные xstring
функции:
\documentclass{article}
\usepackage{xstring}
\newcommand{\mytest}[1]{%
\StrChar{#1}{3}[\maltetest]%
Third charactor of input is: \maltetest\ equals c\\
Test: \IfStrEq{\maltetest}{c}{true}{false}%
}
\begin{document}
\mytest{abcd}
\end{document}
Этот путь \maltetest
будет содержать ровно третий символ входной строки.