Articles
' Piso ' e ' teto ' funções
On Dezembro 1, 2020 by admin Existe uma maneira conveniente de compor o piso ou teto de um número, sem a necessidade de codificar separadamente as partes esquerda e direita? Por exemplo, há alguma maneira de fazer $\ceil{x}$
em vez de $\lceil x \rceil$
?
Comentários
Resposta
\usepackage{mathtools} \DeclarePairedDelimiter{\ceil}{\lceil}{\rceil}
O comando \ceil
serve; se chamado como \ceil*{x}
, adicionará \left
e \right
; você também pode chamá-lo de
\ceil[\big]{x} \ceil[\Big]{x} \ceil[\bigg]{x} \ceil[\Bigg]{x}
para indicar explicitamente o tamanho dos delimitadores.
Comentários
- Mesmo depois de mais de 10 anos de LaTeX, ainda se aprende alguns truques novos!
- Não ' não me diga! Eu aprendo novos truques mesmo depois de 25 anos!
- @jamaicanworm Existe, acredito também neste site. Mas vou ' dizer a você: use
\left
e\right
apenas quando eles forem realmente necessário. - @jamaicanworm Definição de troca de comando com estrela e sem estrela discute a troca de comando com estrela por não versão com estrela.
- Para escrever a função de base, basta substituir " ceil " por " floor ". Isso pode ser óbvio, mas pode evitar o trabalho de consultar a documentação.
Resposta
Aqui está uma implementação xparse
simples de \ceil
, semelhante àquela fornecida por mathtools
“\DeclarePairedDelimiter
:
\documentclass{article} \usepackage{xparse}% http://ctan.org/pkg/xparse \NewDocumentCommand{\ceil}{s O{} m}{% \IfBooleanTF{#1} % starred {\left\lceil#3\right\rceil} % \ceil*[..]{..} {#2\lceil#3#2\rceil} % \ceil[..]{..} } \begin{document} \[\ceil[\big]{x} \quad \ceil[\Big]{x} \quad \ceil[\bigg]{x} \quad \ceil[\Bigg]{x} \quad \ceil*[\big]{\frac{1}{2}}\] \end{document}
O argumento opcional é ignorado na versão com estrela de \ceil*[..]{..}
.
Comentários
- Você poderia eliminar o
\IfNoValueTF {\lceil#3\rceil}
se usasse{s O{} m}
. Em seguida, o segundo arg#2
será definido, portanto, só precisa de#2\lceil#3#2\rceil
.
\lceil
e\rceil
são os marcações apropriadas.$\lceil x \rceil$
já era a solução que eu procurava;)