下列宏 X 在 TeX 中如何定义?
word in previous sentence?\macroX . Next sentence
给出的输出相同
word in previous sentence? Next sentence
动机:另一个宏会自动放置一个句号,以自动执行重复数据输入并显示在文档的各个部分中。但有时需要不同的标点符号。句号在 95% 的情况下都是合适的,但在例外情况下,需要这样的宏 X 来允许数据输入保持自动化。人们可能会想象这在以前已经做过了,可能是出于同样的原因?
需要澄清的是,这个想法是,宏后面的任何字符都会被忽略。
编辑:我的问题本身实际上比回答的问题更简单(我必须在这里补充一点,就我而言,egreg 对我首先试图解决的具体问题提出了更好的解决方案)。
我的问题仅仅是(1):什么宏会删除其右边的任何字符?
为了将来的知识和对问题的总体完整性,对于其他任何搜索此类输出的人来说,也许我自己以后会知道什么宏符合我的问题(1)中的描述?(如果要删除的对象不是句点而是某个任意字母或数字。)
MWE(此一般情况):
\documentclass[12pt]{article}
\usepackage{amsfonts,mathtools,amsthm,amssymb}
\def\relevantpartofbigmacro{\textit{#1}.\egroup\par}
\begin{document}
\relevantpartofbigmacro{test}
\end{document}
给出
\textit{test}.
而这个想法是写(在特殊情况下)
\documentclass[12pt]{article}
\usepackage{amsfonts,mathtools,amsthm,amssymb}
\def\relevantpartofbigmacro{\textit{#1}.\egroup\par}
\begin{document}
\relevantpartofbigmacro{test?\macroX}
\end{document}
给予
\textit{test?}
或者
\documentclass[12pt]{article}
\usepackage{amsfonts,mathtools,amsthm,amssymb}
\def\relevantpartofbigmacro{\textit{#1}5\egroup\par}
\begin{document}
\relevantpartofbigmacro{test}
\end{document}
给出
\textit{test}5
而这个想法是写(在特殊情况下)
\documentclass[12pt]{article}
\usepackage{amsfonts,mathtools,amsthm,amssymb}
\def\relevantpartofbigmacro{\textit{#1}5\egroup\par}
\begin{document}
\relevantpartofbigmacro{test7\macroX}
\end{document}
给予
\textit{test7}
答案1
我不确定我是否理解了这个问题。以下是\@addpunct
使用 提供的宏来处理它的方法amsthm
:
\documentclass{article}
\usepackage{amsthm}
\makeatletter
\newcommand{\macroaddingperiod}[1]{%
\emph{#1}\@addpunct{.}%
}
\makeatother
\begin{document}
Here we use \macroaddingperiod{on some text}
Should we add \macroaddingperiod{a period here?}
\end{document}
让我们处理用户应该帮助 LaTeX 并\macroX
在特殊情况下进行输入的情况。
\documentclass[12pt]{article}
\usepackage{amsfonts,mathtools,amsthm,amssymb}
\makeatletter
\def\relevantpartofbigmacro#1{%
\bgroup...% just to have a balance
\textit{#1}%
5%
\egroup\par
}
\def\macroX{\aftergroup\macroX@aux}
\def\macroX@aux#1#2{#1}
\makeatother
\begin{document}
\relevantpartofbigmacro{test7}
\relevantpartofbigmacro{test7\macroX}
\end{document}
\textit
这利用了已经放在\maybe@ic
组后面的事实;因此\macroX@aux
我们删除第一个标记(5
)并应用于\maybe@ic
下一个。
答案2
问题不太清楚,但是
\newcomamnd\macroX[1]{}
似乎按照你的要求去做了。