Colchetes de intervalo correspondentes


7

Estou usando o vim para editar o código LaTeX, e muitas vezes estou escrevendo intervalos como (a,b]esse, mas mexe com outros recursos do vim. Por exemplo,

  • Saltando com %: se eu tiver algo parecido \phi((a,b]), a final )corresponderá ao segundo (e alguns parênteses de fechamento mais tarde no código corresponderão ao primeiro.
  • Existe um recurso (não tenho certeza se é específico ao vimtex ou apenas um recurso do vim) onde ]]fecha os delimitadores abertos, e isso faz com que ele se comporte de maneira errada - ele tentará fechar o )de muitas linhas atrás.
  • Os recursos tsd/ csd/ dsddo vimtex que alternam / alteram / excluem delimitadores circundantes não funcionam (penso csde dsdsão extensões do vim-surround, mas não tenho certeza). Em particular, eles selecionam os delimitadores errados ou não fazem absolutamente nada.

Atualmente estou colocando )s nos comentários para mitigar isso. Isso resolve o problema de parênteses mais tarde no arquivo que corresponde incorretamente, mas que corresponde na mesma linha não funciona (e coisas como tsddo vimtex não funcionam corretamente).

Existe alguma solução melhor ou uma solução padrão para esse tipo de problema? Idealmente, isso também resolveria [a,b).


3
Este é um problema muito difícil, na verdade. É muito difícil saber como combinar parênteses se a parêntese inicial e final for de tipo diferente. Lembro que tivemos uma discussão sobre isso em uma edição do vimtex uma vez. Você pode tentar pesquisar os tópicos do problema e verificar se encontra alguma coisa ou pode criar um novo problema.
Karl Yngve Lervåg

@ KarlYngveLervåg Acho que essa é a questão relevante ?
B. Mehta

Sim, isso é relevante. embora o tópico seja recuo. O ponto ainda é, como mencionado acima, que é inerentemente muito difícil acertar isso com parênteses desequilibrados.
Karl Yngve Lervåg

Uma solução alternativa pode ser usar o \DeclarePairedDelimitercomando do pacote mathtools para escrever apenas como \leftopenint{a, b}. Eu aprendi sobre isso nesta pergunta
/

11
@ Jan Eu gosto bastante desta solução! Se você quiser escrever como resposta, fico feliz em aceitá-lo.
B. Mehta

Respostas:


1

Uma solução alternativa pode ser usar o \DeclarePairedDelimitercomando do pacote mathtools para escrever apenas como \leftopenint{a, b}. Veja a resposta aceita para esta pergunta .

\documentclass{minimal}
\usepackage{mathtools}
\DeclarePairedDelimiter\leftopenint{(}{]}
\DeclarePairedDelimiter\rghtopenint{[}{)}

\begin{document}
  \begin{equation*}
   \leftopenint{-\infty, \frac{1}{N} } \cup \rghtopenint*{\frac{1}{N}, \infty}
  \end{equation*}
\end{document}

o que me dá o que é postado abaixo. Observe que a *escala dos delimitadores.

insira a descrição da imagem aqui

Apenas observe que a aparência assimétrica dos colchetes no cabeçalho também quebra o destaque da sintaxe e os comandos como fechamento de ambientes correspondentes . Eu poderia corrigir isso terceirizando essas definições em um arquivo separado e depois usar \include...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.