如何从 postscript/gnuplot 转换为 pdf 并为乳胶文档保留重音字母?

问题描述

所以我必须用意大利语为我的实验班写我的实验报告。在课堂上,他们教我们如何使用 gnuplot 创建图形,所以我使用它来生成我们的图形,然后我需要将其放入我的乳胶文档中。问题是我必须将 y 轴上的标签设置为“veLocità”,然后当我将文件保存在 ps 中并转换为 pdf 时,“à”消失或被其他东西取代。我尝试做的是使用命令的变体

set encoding iso_8859_1
set ylabel "veLocit\340"

然后我使用 set term postscript color 保存绘图,设置输出“graf.ps”,重新绘图,并从 wsl 终端,使用 ps2pdf,我将其转换为 pdf,但是当我打开 pdf 时,字母 ' à' 不再出现,即使它确实显示在先前由 gnuplot 生成的图表中。我应该怎么办?万一,还有其他方法可以在我的乳胶文档中附加原始图形吗?

解决方法

Gnuplot 提供了几种 LaTeX 友好的终端类型。后记不是其中之一。 Postscript 的字符编码充其量是特殊的。如果您的目标是在 Latex 中包含 gnuplot 输出,请选择专为它设计的终端类型。某些终端类型(例如 cairolatex) 使用 Latex 工作,因为它们依赖于 Latex 来完成所有文本处理。其他(例如 pdf、png、tikz)产生的输出与乳胶完全兼容,但已经嵌入了文本。最好对所有内容使用 UTF-8 编码,包括重音字符。例如:


struct TaskView:View{
    @Binding var text:String
    @State private var textHeight : CGFloat = 40
    
    var body: some View{
        HStack(alignment:.top,spacing:8){
            Button(action: {
                print("Test")
            }){
                Circle()
                    .strokeBorder(Color.gray,lineWidth: 1)
                    .background(Circle().foregroundColor(Color.white))
                    .frame(width:22,height: 22)
            }
            .buttonStyle(PlainButtonStyle())
            
            FieldView(text: $text,heightToTransmit: $textHeight)
                .frame(height: textHeight)
                .border(Color.red)
            
        }
        .frame(maxWidth: .infinity,alignment: .leading)
        .padding(EdgeInsets(top:10,leading:10,bottom: 10,trailing: 30))
        .background(Color.white)
        .cornerRadius(5)
    }
}

struct FieldView : UIViewRepresentable {
    @Binding var text : String
    @Binding var heightToTransmit: CGFloat
    
    func makeUIView(context: Context) -> UIView {
        let view = UIView()
        let textView = UITextView(frame: .zero,textContainer: nil)
        textView.delegate = context.coordinator
        textView.backgroundColor = .yellow // visual debugging
        textView.isScrollEnabled = false   // causes expanding height
        context.coordinator.textView = textView
        textView.text = text
        view.addSubview(textView)

        // Auto Layout
        textView.translatesAutoresizingMaskIntoConstraints = false
        let safeArea = view.safeAreaLayoutGuide
        NSLayoutConstraint.activate([
            textView.topAnchor.constraint(equalTo: safeArea.topAnchor),textView.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor),textView.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor)
        ])
        
        return view
    }
    
    func updateUIView(_ view: UIView,context: Context) {
        context.coordinator.heightBinding = $heightToTransmit
        context.coordinator.textBinding = $text
        DispatchQueue.main.async {
            context.coordinator.runSizing()
        }
    }
    
    func makeCoordinator() -> Coordinator {
        return Coordinator()
    }
    
    class Coordinator : NSObject,UITextViewDelegate {
        var textBinding : Binding<String>?
        var heightBinding : Binding<CGFloat>?
        var textView : UITextView?
        
        func runSizing() {
            guard let textView = textView else { return }
            textView.sizeToFit()
            self.textBinding?.wrappedValue = textView.text
            self.heightBinding?.wrappedValue = textView.frame.size.height
        }
        
        func textViewDidChange(_ textView: UITextView) {
            runSizing()
        }
    }
}

然后在您的乳胶文档中,例如:

set term pdf size 7cm,5cm
set output 'myfigure.pdf'
set encoding utf8

set ylabel "velocità"
set xlabel "tempo"
plot [0:10] x**2 title "velocità"

enter image description here