У меня возникла следующая проблема. Когда я рисую стрелку <-> с помощью chemfig, в середине появляется зазор. Самое забавное, что зазор появляется только если моя стрелка идет справа налево. Вертикальные стрелки рисуются правильно. Я сделал пример, но в примере все наоборот. Стрелка слева направо рисуется не полностью, а справа налево.
\documentclass{scrartcl}
\usepackage{chemfig}
\begin{document}
\schemestart
\chemfig{*6(------)}
\arrow{<->}
\chemfig{*6(------)}
\arrow{<->}[90]
\chemfig{*6(------)}
\arrow{<->}[180]
\chemfig{*6(------)}
\schemestop
\end{document}
Есть у кого-нибудь идея? Я уже просмотрел документацию chemfig, но ничего не нашел. Приветствую, Мориц
решение1
EDIT: Проблема, описанная в вопросе, воспроизводится с версией 1.31
chemfig (откуда <->
взято «исходное определение» стрелки). С версией 1.34
проблема больше не возникает, и получается желаемый результат.
Следующий пример содержит измененную версию типа <->
стрелки, которая не показывает зазор, если она повернута на 180°.
\documentclass{scrartcl}
\usepackage{chemfig}
\makeatletter
\definearrow3{<->}{%
\CF@arrow@shift@nodes{#3}%
\path(\CF@arrow@start@node)--(\CF@arrow@end@node)%
node[pos=0.5,sloped](\CF@arrow@start@node1){}node[pos=0.5,sloped](\CF@arrow@end@node1){};%
\expandafter\draw\expandafter[\CF@arrow@current@style](\CF@arrow@start@node1)--(\CF@arrow@end@node);%
\expandafter\draw\expandafter[\CF@arrow@current@style](\CF@arrow@end@node1)--(\CF@arrow@start@node);%
\CF@arrow@display@label{#1}{0.5}+\CF@arrow@start@node{#2}{0.5}-\CF@arrow@end@node
}
\makeatother
\begin{document}
\schemestart
\chemfig{*6(------)}
\arrow{<->}[0]
\chemfig{*6(------)}
\arrow{<->}[-90]
\chemfig{*6(------)}
\arrow{<->}[180]
\chemfig{*6(------)}
\schemestop
\end{document}
Если сравнить это с первоначальным определением изchemfig.tex
\definearrow3{<->}{%
\CF@arrow@shift@nodes{#3}%
\path(\CF@arrow@start@node)--(\CF@arrow@end@node)%
node[pos=0.5,sloped,xshift=-1pt](\CF@arrow@start@node1){}node[pos=0.5,sloped,xshift=1pt](\CF@arrow@end@node1){};%
\expandafter\draw\expandafter[\CF@arrow@current@style](\CF@arrow@start@node1)--(\CF@arrow@end@node);%
\expandafter\draw\expandafter[\CF@arrow@current@style](\CF@arrow@end@node1)--(\CF@arrow@start@node);%
\CF@arrow@display@label{#1}{0.5}+\CF@arrow@start@node{#2}{0.5}-\CF@arrow@end@node
}
как видите, я удалил xshift
опции.