Масштабирование уравнения, чтобы соответствовать точной ширине страницы - PullRequest
37 голосов
/ 24 июня 2010

У меня есть уравнение, которое слишком мало для одной строки. Мне бы очень хотелось, чтобы на следующей строке не было номера уравнения. Как вы этого добиваетесь? В настоящее время я использую \small, но это излишне.

Обратите внимание. Я пробовал scalebox и fittowidth, но получаю ошибки об отсутствии \endgroup Я также использовал \! в полной мере. Я надеюсь на решение, которое позволит мне масштабировать правильное однострочное уравнение по ширине страницы.

Вот пример (не мое фактическое уравнение): Long equation

Ответы [ 3 ]

58 голосов
/ 24 июня 2010
\begin{equation}
\resizebox{.9\hsize}{!}{$A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z$}
\end{equation}

или

\begin{equation}
\resizebox{.8\hsize}{!}{$A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z$}
\end{equation}
2 голосов
/ 19 октября 2015

Пакет graphicx предоставляет команду \resizebox{width}{height}{object}:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\hrule
%%%
\makeatletter%
\setlength{\@tempdima}{\the\columnwidth}% the, well columnwidth
\settowidth{\@tempdimb}{(\ref{Equ:TooLong})}% the width of the "(1)"
\addtolength{\@tempdima}{-\the\@tempdimb}% which cannot be used for the math
\addtolength{\@tempdima}{-1em}%
% There is probably some variable giving the required minimal distance
% between math and label, but because I do not know it I used 1em instead.
\addtolength{\@tempdima}{-1pt}% distance must be greater than "1em"
\xdef\Equ@width{\the\@tempdima}% space remaining for math
\begin{equation}%
\resizebox{\Equ@width}{!}{$\displaystyle{% to get everything inside "big"
 A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z}$}%
\label{Equ:TooLong}%
\end{equation}%
\makeatother%
%%%
\hrule
\end{document}
1 голос
/ 18 апреля 2019

У меня просто была ситуация, когда я хотел этого только для строк, превышающих \linewidth, то есть: слегка сжимая длинные строки.Поскольку мне потребовались часы, чтобы понять это, я хотел бы добавить это сюда.

Я хочу подчеркнуть, что масштабирование шрифтов в LaTeX - смертельный грех!Почти в каждой ситуации есть лучший способ (например, multline из пакета mathtools).Так что используйте его в сознании.

В этом конкретном случае я не имел никакого влияния на базу кода, кроме преамбулы и некоторых строк, слегка выходящих за границы страницы, когда я компилировал ее как масштабированный по электронной почтеpdf.

\usepackage{environ}         % provides \BODY
\usepackage{etoolbox}        % provides \ifdimcomp
\usepackage{graphicx}        % provides \resizebox

\newlength{\myl}
\let\origequation=\equation
\let\origendequation=\endequation

\RenewEnviron{equation}{
  \settowidth{\myl}{$\BODY$}                       % calculate width and save as \myl
  \origequation
  \ifdimcomp{\the\linewidth}{>}{\the\myl}
  {\ensuremath{\BODY}}                             % True
  {\resizebox{\linewidth}{!}{\ensuremath{\BODY}}}  % False
  \origendequation
}

До before После after

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...