【发布时间】:2022-09-27 19:41:01
【问题描述】:
我正在开发一个 UI,可以将数学公式的图像与通过 DL 模型从该图像生成的 LaTeX 代码的渲染版本进行比较。为此,我想将两个元素(sourceImage 和渲染代码)放在另一个下方。现在,为了简化比较,让两个元素具有相同的大小将是有益的。为了渲染乳胶代码,我使用包better-react-mathjax。不幸的是,有了这个包,我只能选择设置字体大小,而不是生成的渲染组件的宽度。因此,我想知道是否可以以某种方式根据渲染代码的宽度设置图像元素的宽度。我试图用 refs 来实现这一点,但是这些不能在 MathJax 组件上使用。
<Grid container>
<Grid item>
<fieldset>
<legend>Original formula image</legend>
<Box>
<img
width={imageWidth}
src={sourceImage}
alt=\"Input image\"
/>
</Box>
</fieldset>
</Grid>
<Grid item>
<fieldset>
<legend>Dynamically rendered (corrected) formula</legend>
<Box>
<MathJax className={classes.mathjaxElement} dynamic={true}>{\'$$\' + texSource + \'$$\'}</MathJax>
</Box>
</fieldset>
</Grid>
</Grid>
编辑:
为了更准确地说明我想要实现的目标,以下是上述代码当前呈现的图像。我试图实现的是,上框中的图像与下图中的公式具有相同的宽度(其宽度由其中的公式定义)。
-
我认为您应该尝试使用 itemRef 属性而不是 ref。这个好像支持
-
您应该能够为
MathJax组件指定width、minWidth和maxWidth,并且容器将使用该css...只需像您所做的那样传递className中的类...或您可以只用所需宽度的元素包装MathJax元素。尽管如此,如果生成的乳胶更宽,您会遇到一些问题(取决于乳胶中是否有换行符)。如果您希望这些盒子具有相同的宽度,只需将它们都放在具有列方向的弹性盒子中,然后使顶部盒子弯曲以适应较小盒子的宽度。 -
听起来这更像是与 CSS 和 HTML 相关的问题,而不是 Latex 输出......我的意思是,Latex 只能通过字体大小属性来控制(你不能在没有非常特别的额外措施......你也不应该。只需在这些元素上设置一个最小宽度,然后使它们都成为其父容器的 100%(或将 flex 属性设置为拉伸),你应该没问题。
-
非常感谢您花时间对我的问题发表评论。恐怕这不是我要找的。我对问题进行了编辑,提供了更多信息和输出当前外观的图像。如果您对此有其他想法,请告诉我。
-
嗯..好的,看起来不错..您希望图像中的数学具有与渲染数学完全相同的高度?您可以将 mathjax 内容放在 div 中,然后将 ref 添加到该 div 中,因为它会随着内容的增长而增长...可能很难使其完美,因为您不知道数学周围的空白量图像,我假设?那么,您是否希望图像具有完全相同的高度?
标签: javascript reactjs mathjax