我希望在一段文字末输出一个类似数学中的"证毕"符号小方块,满足:
如果该行文字最右端的字符距右边缘的水平间距小于小方块占据的水平间距,就把小方块放在该行的下一行的最右边。
否则就把小方块放在该行的最右边。
mwe:
\documentclass{ctexart}
\usepackage{amsmath,amsfonts}
\begin{document}
1.这是一段占满一整行的内容,这是一段占满一整行的内容,这是一。\par\hfill $\square$
2.这是一段占满一整行的内容,这是一段占满一整行的内容。\par\hfill $\square$
\end{document}
效果如下:
以上第一段内容小方块由于放不下,所以就放在该行的下一行的最右边,这满足要求。
但第二段小方块可以在该行放下,应该放在该行最右边。
我希望 tex 能够自动判断以上方块是否换行输出,诸如用条件语句等方式实现。
请问该如何实现?谢谢。
如果你看了 TeXBook 第14章的最后,你就会找到一种解决方案:
\documentclass{ctexart}
\usepackage{amsmath,amsfonts}
\def\autoqed{{\unskip\nobreak\hfil\penalty50
\hskip2em\hbox{}\nobreak\hfil $\square$%
\parfillskip=0pt \finalhyphendemerits=0 \par}}
\begin{document}
1.这是一段占满一整行的内容,这是一段占满一整行的内容,这是一。\autoqed
2.这是一段占满一整行的内容,这是一段占满一整行的内容。\autoqed
\end{document}
删掉par即可
\documentclass{ctexart}
\usepackage{amsmath,amsfonts}
\begin{document}
1.这是一段占满一整行的内容,这是一段占满一整行的内容,这是一。\par\hfill $\square$
2.这是一段占满一整行的内容,这是一段占满一整行的内容。\hfill $\square$
\end{document}
本地环境: win11 23H2 + TeX Live 2024 + XeLaTeX 编译通过
谢谢