سؤال

أنا فضولي حول ما إذا كانت عارض .NET الأصلية ل TEX / LATEX موجودة. أقرب مباراة تمكنت من العثور عليها هي تطبيق جافا، JMathtex.. وبعد أنا أتم إغراء ميناء هذا إلى c #، ولكن قبل أن أفعل ذلك، أود ببساطة التحقق مما إذا كان أي شخص يدرك لتنفيذ .NET هناك.

أفكاري الحالية هي استخدام miktex جنبا إلى جنب مع dvipng لتجميع مصدر TEX وجعل DVI الذي تم إنشاؤه ك BNG، لكنني ما زلت قلقا، قد يتحمل ذلك كمية غير مقبولة من النفقات العامة، ناهيك عن الحاجة إلى حزمة Miktex مع البرنامج المحدد.

هل كانت مفيدة؟

المحلول

إذا لم أكن مخطئا، فسيتم كتابة TEX في لهجة Pascal، وعندما تم تجميعها اليوم يتم تجميعها بشكل عام في قياسي C، ثم تم تجميعها مع مترجم C لإنتاج الثنائي النهائي. قد يكون من الممكن تجميع رمز Pascal الأصلي في C # وربما اكتب مجمعا حوله في C # لتكون قادرا على استخدامه كمكتبة.

بالطبع هذا مشروع كبير إلى حد ما يجب أن يستغرقه وربما يتفوق على مشكلتك في متناول اليد.

نصائح أخرى

نقية C # تنفيذ اللاتكس من Verybadcat.

هذا هو منفذ C # من محرك iosmath اللاتكس الرائع.

يعمل الآن في معظم الحالات. بعض الأمثلة أدناه. ومن المفارقات، من المفارقات أن الطرف الأمامي الأول هو IOS. ومع ذلك، إذا كنت ترغب في إضافة نهاية أمامية، مثل xamarin.forms أو بيئة Windows، يجب أن تكون ممكنة. عليك أن تحدد TypesettingContextext وكتابة تنفيذ IgraphicsContext. يحتوي TypesettingContext بدوره على عدة مكونات، بما في ذلك اختيار الخط. نأمل أن لا تحتاج إلى لمس محرك التنضيد الأساسي. (إذا قمت بذلك، فسوف أعتبر هذا الخطأ.)

CSharpMath example

هذا متأخر جدا، لكنني اعتقدت أنني سأقوم بنشر رابط لمنفذ إحياء وتوسيع WPF-Math. المشروع، الذي بدأت لفترة طويلة بعد هذا السؤال الأصلي، وما زال يساعد في الحفاظ على قدرة طفيفة. كان في الأصل ميناء JMathtex., ، ولكن منذ ذلك الحين توسيع لتشمل أكثر من ذلك بكثير. في الوقت الحالي، في عملية الحصول على العارض بخلاف WPF.

استخدم هذا الرمز !!!

        const string latex = @"\frac{2+2}{2}";
        const string fileName = @"formula.png";

        File.Open(fileName, FileMode.OpenOrCreate).Close();

        var parser = new WpfMath.TexFormulaParser();
        var formula = parser.Parse(latex);
        var renderer = formula.GetRenderer(WpfMath.TexStyle.Display, 20.0, "Arial");
        var bitmapSource = renderer.RenderToBitmap(0, 0);

        var encoder = new System.Windows.Media.Imaging.PngBitmapEncoder();
        encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(bitmapSource));
        using (var target = new FileStream(fileName, FileMode.Create))
        {
            encoder.Save(target);
        }

        pictureBox2.Image = Image.FromFile(fileName);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top