如何在宏中检查选定的字母是大写还是小写?

如何在宏中检查选定的字母是大写还是小写?

我正在使用 Texmaker,想定义一些自定义宏。这些宏将检查所选字母是大写还是小写,然后用宏中定义的序列替换该字母。我需要这个宏来替换土耳其字符

  • \u{g}- G
  • \u{G}- G
  • \c{c}- C
  • \c{C}- C
  • \c{s}– ş
  • \c{S}
  • {\i}- 我
  • \.{I}- 我

但我不想每次都手动选择字符的大写或小写版本。我没有在texmaker 文档和 ixquickinglatex 大写宏使用过于复杂的脚本得出结果。

我希望宏像这样工作:在文本“Şimşek”中,我选择“ş”,然后按下分配给我的宏的热键,该字母将变为。当选择“Ş”并按下热键时,\c{s}同一个宏应该将“Ş”变成。\c{S}

我该如何定义一个宏来实现这一点?

答案1

我不完全明白你想要实现什么,但你可以检查一个字符串是否包含字母,类似于这个答案

\documentclass{article}

\begin{document}

\makeatletter
\def\instring#1#2{TT\fi\begingroup
  \edef\x{\endgroup\noexpand\in@{#1}{#2}}\x\ifin@}
%
\def\isuppercase#1{%
  \instring{#1}{AÂBCÇDEFGĞHIİÎJKLMNOÖÔPRSŞTUÜÛVYZ}%
}%
\makeatother

\if\isuppercase{A}YES\else NO\fi

\if\isuppercase{a}YES\else NO\fi

\end{document}

相关内容