悠闲数学娱乐论坛(第2版)'s Archiver

kuing 发表于 2018-1-19 17:52

一切为了居中的公式别乱动

问题来自:[url]http://bbs.ctex.org/forum.php?mod=viewthread&tid=154820[/url]
1楼提问:
[quote]equation环境下,公式默认居中,但是加条件的公式会整体居中。现在希望公式居中,条件距离居中的公式有一定距离该怎么办呢?多谢![/quote]
7楼“XeTaL”答:[code]\documentclass{article}
\newcommand\tj[1]{\rlap{\quad$#1$}}
\begin{document}
\[  \pi_jx=x_j  \]
\[  \pi_jx=x_j\tj{i \neq j}  \]
\end{document}[/code]效果:
[attach]5785[/attach]

10楼搭车再问:
[quote]如此搭车请教一下各位高手,我想实现这样的排版效果,中间一个公式,比如简单点的a=b+c,现在想在左边加上内容,比如abc,这个abc想让它左边对齐到页面左边距,右边加上内容,比如def,这个def想让它右边对齐到页面右边距,本来想用\llap{abc\hspace*{\fill}}和\rlap{\hspace*{\fill}def},但测试没有效果。谢谢。[/quote]
俺答:[code]\documentclass[UTF8]{ctexart}
\usepackage[showframe]{geometry}
\usepackage{amsmath}
\newcommand\lcr[3]{\vbox{%
\noindent\rlap{#1}\hfill$\displaystyle#2$\hfill\llap{#3}%
}}
\begin{document}
abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def
\begin{gather*}
a=b+c\\
\lcr{abc}{a=b+c}{def}\\
\lcr{中文来一个}{a=b+c}{xxoo}\\
a=b+c\\
a=b+c
\end{gather*}
\end{document}[/code]效果:
[attach]5783[/attach]

但是如果公式带编号会跑到下一行,于是再改:[code]\documentclass[UTF8]{ctexart}
\usepackage[showframe]{geometry}
\usepackage{amsmath}
\newcommand\lcr[3]{\makebox[0pt][c]{%将整个变成0宽,否则编号跑到下一行
\vbox{%
\noindent\rlap{#1}\hfill$\displaystyle#2$\hfill\llap{#3}%
}}}
\begin{document}
abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def
\begin{gather}
a=b+c\\
\lcr{abc}{a=b+c}{def}\notag\\
\lcr{中文来一个}{a=b+c}{xxoo}\notag\\
\lcr{编号一个}{a=b+c}{}\label{asdf}\\
\lcr{再来}{a=b+c}{}\label{xxxx}\\
a=b+c\\
a=b+c
\end{gather}
引用式 \eqref{asdf}、\eqref{xxxx}。
\end{document}[/code]效果:
[attach]5784[/attach]

随后再问:
[quote]再提一个过分的要求,右侧有东西,也要编号,怎么处理[/quote]

俺再答:
[quote]这…………直接加 \qquad 之类的空开好啦
如14楼第15行改成:\lcr{再来}{a=b+c}{1111\qquad}\label{xxxx}\\
如果一定要紧贴,那就:\lcr{再来}{a=b+c}{1111\hphantom{(\theequation)}}\label{xxxx}\\ ……[/quote]

综上所述:[code]\documentclass[UTF8]{ctexart}
\usepackage[showframe]{geometry}
\usepackage{amsmath}
\newcommand\lcr[3]{\makebox[0pt][c]{%将整个变成0宽,否则编号跑到下一行
\vbox{%
\noindent\rlap{#1}\hfill$\displaystyle#2$\hfill\llap{#3}%
}}}
\begin{document}
abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc def
\begin{gather}
a=b+c\\
\lcr{abc}{a=b+c}{def}\notag\\
\lcr{中文来一个}{a=b+c}{xxoo}\notag\\
\lcr{编号一个}{a=b+c}{}\label{asdf}\\
\lcr{再来}{a=b+c}{这里也要\hphantom{(\theequation)}}\label{xxxx}\\
a=b+c\\
a=b+c
\end{gather}
引用式 \eqref{asdf}、\eqref{xxxx}。
\end{document}[/code][attach]5786[/attach]

isee 发表于 2018-1-19 19:13

这种节约行路的排版像奇妙的搞法。。。。。

kuing 发表于 2018-1-19 21:31

可惜这种方法实现不了 align 这类环境中的。(我想起了之前看过的这帖:[url]http://bbs.ctex.org/forum.php?mod=viewthread&tid=153976[/url],该问题目前还没得到解决)

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.