由於我正在編寫一個包含數千個各種括號的文檔,因此手動調整所有括號的大小或手動添加\mleft
每次\mright
都會最終需要大量時間。此外,由於該文件僅供私人使用,因此我沒有嚴格的排版規則可遵循。
因此,在這種情況下,將and分別重新定義為(
和並不是一個壞主意,對於方括號和大括號也是如此(顯然僅在數學模式下)。)
\mleft(
\mright)
我知道使用自動調整大小括號的所有缺點(例如\left 和 \right 周圍的間距或者為什麼 LaTeX 不將(作為 \left( 和 ) 解釋為 \right)?或者使用 \left 和 \right 是否不好?),至少解決了使用\mleft
和\right
間距問題。
在頁面中如何讓\{和\}自動具有\left和\rightegreg 解釋說,在使用大括號的情況下,有一種簡單的方法可以實現目標。此巨集包括在文件中找到的和的定義中新增\left
和。\right
\{
\}
latex.ltx
\documentclass{article}
\usepackage{amsmath}
\usepackage{mleftright}
\let\{\relax \let\}\relax % to avoid warnings about the redefinition
\DeclareRobustCommand{\{}{\ifmmode\mleft\lbrace\else\textbraceleft\fi}
\DeclareRobustCommand{\}}{\ifmmode\mright\rbrace\else\textbraceright\fi}
\begin{document}
$a\{\dfrac13\}a$
\end{document}
我正在尋找類似的方法來重新定義彎括號和方括號的命令,但我不知道如何在文件中找到它們的定義,latex.ltx
因為它是一個非常大的文件。
答案1
您可以透過將數學代碼設為 8000 來啟動這些符號的數學功能,然後透過小寫技巧定義它們:
\documentclass{article}
\usepackage{amsmath}
\usepackage{mleftright}
\makeatletter
\def\@mathactive#1#2{\begingroup
\lccode`~=`#1
\lowercase{\endgroup
\def~{#2}}%
\mathcode`#1="8000\relax}
\@mathactive({\mleft(}
\@mathactive){\mright)}
% Do the same for brackets. (Do not try it with braces.)
\makeatother
\begin{document}
$ (\dfrac12) $
\end{document}
編輯:這是一個適用於 PDFTeX 的程式碼。在 PDFTeX 中,AMSMath 似乎對活動數學字元有問題。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mleftright}
\begingroup
\catcode`\(=\active
\catcode`\)=\active
\gdef({\mleft\lparen}
\gdef){\mright\rparen}
\endgroup
\def\lparen{\delimiter"028300\relax}
\def\rparen{\delimiter"029301\relax}
\everymath{\mathcode`\(="8000
\mathcode`\)="8000}
\everydisplay{\mathcode`\(="8000
\mathcode`\)="8000}
\begin{document}
$ (\dfrac12) $
\[ (\frac18) \]
\end{document}